import React, { useState } from 'react';
import { useMedia } from 'react-use';
import { ChevronDownIcon, ChevronUpIcon, CrossIcon, GroupIcon, PersonIcon } from '@100mslive/react-icons';
import { Dropdown } from '../../../Dropdown';
import { Box, Flex } from '../../../Layout';
import { Sheet } from '../../../Sheet';
import { Text } from '../../../Text';
import { config as cssConfig } from '../../../Theme';
import { ChatSelector } from './ChatSelector';
import { useRoomLayoutConferencingScreen } from '../../provider/roomLayoutProvider/hooks/useRoomLayoutScreen';
// @ts-ignore
import { useSubscribeChatSelector } from '../AppData/useUISettings';
import { useDefaultChatSelection, useFilteredRoles } from '../../common/hooks';
import { CHAT_SELECTOR } from '../../common/constants';
export const ChatSelectorContainer = () => {
const [open, setOpen] = useState(false);
const isMobile = useMedia(cssConfig.media.md);
const { elements } = useRoomLayoutConferencingScreen();
const isPrivateChatEnabled = !!elements?.chat?.private_chat_enabled;
const isPublicChatEnabled = !!elements?.chat?.public_chat_enabled;
const roles = useFilteredRoles();
const selectedPeer = useSubscribeChatSelector(CHAT_SELECTOR.PEER);
const selectedRole = useSubscribeChatSelector(CHAT_SELECTOR.ROLE);
const defaultSelection = useDefaultChatSelection();
const selection = selectedPeer.name || selectedRole || defaultSelection;
if (!(isPrivateChatEnabled || isPublicChatEnabled || roles.length > 0) && !isPrivateChatEnabled && !selection) {
return null;
}
return (
<>
{selection ? 'To' : 'Choose Participant'}
{isMobile ? (
{
setOpen(value => !value);
e.stopPropagation();
}}
>
{selection === CHAT_SELECTOR.EVERYONE ? (
) : (
)}
{selection || 'Search'}
{selection &&
(open ? : )}
) : (
setOpen(value)}>
{selection === CHAT_SELECTOR.EVERYONE ? (
) : (
)}
{selection || 'Search'}
{selection && (
)}
)}
{isMobile ? (
setOpen(value)}>
Chat with
{
setOpen(false);
}}
>
) : null}
>
);
};