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} ); };