The communications platform that puts data protection first.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
Rocket.Chat/apps/meteor/client/sidebar/RoomList/RoomListRow.tsx

54 lines
1.7 KiB

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';
type RoomListRowProps = {
data: {
extended: boolean;
t: TFunction;
SidebarItemTemplate: ReturnType<typeof useTemplateByViewMode>;
AvatarTemplate: ReturnType<typeof useAvatarTemplate>;
openedRoom: string;
sidebarViewMode: 'extended' | 'condensed' | 'medium';
isAnonymous: boolean;
};
item: SubscriptionWithRoom;
};
const RoomListRow = ({ data, item }: RoomListRowProps) => {
const { extended, t, SidebarItemTemplate, AvatarTemplate, openedRoom, sidebarViewMode } = 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 (
<SidebarItemTemplateWithData
sidebarViewMode={sidebarViewMode}
selected={item.rid === openedRoom}
t={t}
room={item}
extended={extended}
SidebarItemTemplate={SidebarItemTemplate}
AvatarTemplate={AvatarTemplate}
videoConfActions={videoConfActions}
/>
);
};
export default memo(RoomListRow);