11import type { CallHistoryItem , IInternalMediaCallHistoryItem , IMediaCall , Serialized } from '@rocket.chat/core-typings' ;
2- import {
3- CallHistoryContextualBar ,
4- useWidgetExternalControls ,
5- usePeekMediaSessionState ,
6- type CallHistoryExternalContact ,
7- type CallHistoryUnknownContact ,
8- } from '@rocket.chat/ui-voip' ;
2+ import { CallHistoryContextualBar , type CallHistoryExternalContact , type CallHistoryUnknownContact } from '@rocket.chat/ui-voip' ;
93import { useMemo } from 'react' ;
104
5+ import { useMediaCallExternalHistoryActions } from './useMediaCallExternalHistoryActions' ;
6+
117type ExternalCallEndpointData = Serialized < {
128 item : Exclude < CallHistoryItem , IInternalMediaCallHistoryItem > ;
139 call ?: IMediaCall ;
@@ -16,6 +12,7 @@ type ExternalCallEndpointData = Serialized<{
1612export type MediaCallHistoryExternalProps = {
1713 data : ExternalCallEndpointData ;
1814 onClose : ( ) => void ;
15+ openUserInfo ?: ( userId : string ) => void ;
1916} ;
2017
2118export const getExternalContact = ( item : ExternalCallEndpointData [ 'item' ] ) : CallHistoryExternalContact | CallHistoryUnknownContact => {
@@ -25,14 +22,34 @@ export const getExternalContact = (item: ExternalCallEndpointData['item']): Call
2522 } ;
2623 }
2724
25+ const optionalData = {
26+ ...( item . contactId && { uid : item . contactId } ) ,
27+ ...( item . contactUsername && { username : item . contactUsername } ) ,
28+ } ;
29+
30+ if ( item . contactNumber ) {
31+ return {
32+ ...optionalData ,
33+ number : item . contactNumber ,
34+ name : item . contactName ,
35+ } ;
36+ }
37+
38+ if ( item . contactName ) {
39+ return {
40+ ...optionalData ,
41+ name : item . contactName ,
42+ } ;
43+ }
44+
2845 return { unknown : true } ;
2946} ;
3047
3148export const isExternalCallHistoryItem = ( data : { item : Serialized < CallHistoryItem > } ) : data is ExternalCallEndpointData => {
3249 return data . item . type !== 'media-call' || data . item . external ;
3350} ;
3451
35- const MediaCallHistoryExternal = ( { data, onClose } : MediaCallHistoryExternalProps ) => {
52+ const MediaCallHistoryExternal = ( { data, onClose, openUserInfo } : MediaCallHistoryExternalProps ) => {
3653 const contact = useMemo ( ( ) => getExternalContact ( data . item ) , [ data ] ) ;
3754 const historyData = useMemo ( ( ) => {
3855 return {
@@ -43,17 +60,11 @@ const MediaCallHistoryExternal = ({ data, onClose }: MediaCallHistoryExternalPro
4360 state : data . item . state ,
4461 } ;
4562 } , [ data ] ) ;
46- const state = usePeekMediaSessionState ( ) ;
47- const { toggleWidget } = useWidgetExternalControls ( ) ;
4863
49- const actions = useMemo ( ( ) => {
50- if ( state !== 'available' ) {
51- return { } ;
52- }
53- return {
54- voiceCall : ( ) => toggleWidget ( contact ) ,
55- } ;
56- } , [ contact , state , toggleWidget ] ) ;
64+ const actions = useMediaCallExternalHistoryActions ( {
65+ contact,
66+ openUserInfo : openUserInfo ? ( userId : string ) => openUserInfo ( userId ) : undefined ,
67+ } ) ;
5768
5869 return < CallHistoryContextualBar onClose = { onClose } actions = { actions } contact = { contact } data = { historyData } /> ;
5970} ;
0 commit comments