import type { SubscriptionWithRoom } from '@rocket.chat/ui-contexts'; import { useVideoConfAcceptCall, useVideoConfRejectIncomingCall, useVideoConfIncomingCalls } from '@rocket.chat/ui-video-conf'; import type { TFunction } from 'i18next'; import { memo, useMemo } from 'react'; import SidebarItemTemplateWithData from './SidebarItemTemplateWithData'; import type { useAvatarTemplate } from '../hooks/useAvatarTemplate'; import type { useTemplateByViewMode } from '../hooks/useTemplateByViewMode'; export type RoomListRowProps = { data: { extended: boolean; t: TFunction; SidebarItemTemplate: ReturnType; AvatarTemplate: ReturnType; openedRoom: string; sidebarViewMode: 'extended' | 'condensed' | 'medium'; isAnonymous: boolean; userId?: string; }; item: SubscriptionWithRoom; }; const RoomListRow = ({ data, item }: RoomListRowProps) => { const { extended, t, SidebarItemTemplate, AvatarTemplate, openedRoom, sidebarViewMode, userId } = data; const acceptCall = useVideoConfAcceptCall(); const rejectCall = useVideoConfRejectIncomingCall(); const incomingCalls = useVideoConfIncomingCalls(); const currentCall = incomingCalls.find((call) => call.rid === item.rid); const videoConfActions = useMemo( () => currentCall && { acceptCall: (): void => acceptCall(currentCall.callId), rejectCall: (): void => rejectCall(currentCall.callId), }, [acceptCall, rejectCall, currentCall], ); return ( ); }; export default memo(RoomListRow);