import { Accordion, AccordionDetails, AccordionSummary, Avatar, AvatarGroup, Box, Button, Checkbox, Container, Dialog, Divider, Fab, FormControl, FormControlLabel, FormHelperText, IconButton, InputLabel, ListItemIcon, Menu, MenuItem, Select, Stack, Switch, Tooltip, Typography, } from '@mui/material'; import { FiActivity, FiAirplay, FiChevronDown, FiCircle, FiHeadphones, FiHelpCircle, FiLink, FiLogOut, FiSettings, FiSun, FiVideoOff, FiX, } from 'react-icons/fi'; import React, { useCallback, useMemo, useState } from 'react'; import ConversationLabel from '../subcomponents/ConversationLabel'; import { MasterConversation } from '../util/types'; import { SUPPORT_DISPLAY_NAME } from '../util/support'; import { blueGrey } from '@mui/material/colors'; import useAuth from '../providers/AuthProvider'; import useConversations from '../providers/ConversationProvider'; import useDevices from '../hooks/useDevices'; import useSearch from '../providers/SearchProvider'; import useZen from '../providers/ZenProvider'; export default function FooterControls() { const { handleFlowState } = useZen(); const { selectedConversation, priorityConversations } = useConversations(); const { user, handleLogout } = useAuth(); const [openUserSettings, setOpenUserSettings] = useState(false); const handleClickProfile = useCallback( (event: React.MouseEvent) => { setOpenUserSettings(true); }, [setOpenUserSettings], ); const handleCloseUserSettings = useCallback(() => { setOpenUserSettings(false); }, [setOpenUserSettings]); // is there a selected conversation and if so, is it a priority one? const isSelectedConversationPriority = useMemo(() => { const priorityIds = priorityConversations.map((priorityConvo) => priorityConvo._id.toString()) ?? []; if (selectedConversation && priorityIds.includes(selectedConversation._id.toString())) { return true; } return false; }, [selectedConversation, priorityConversations]); return ( {priorityConversations.map((masterPriorityConversation) => ( ))} {selectedConversation && !isSelectedConversationPriority && ( <> )} ); } function OverlayConversation({ masterConversation, isSelected = false, }: { masterConversation: MasterConversation; isSelected?: boolean; }) { return ( {/* status */} theme.palette.secondary.main, height: 5, width: 5, borderRadius: 100, }} /> :first-child': { marginTop: 0, }, '& > *': { marginLeft: '0 !important' as any, marginTop: -2, }, }} > {masterConversation.members?.map((conversationUser, index) => ( ))} {isSelected && ( <> {/* todo: not speaking mode, speaking mode, locked in mode */} )} ); } const NO_DEVICE_SELECTION = 'NA'; function UserSettingsDialog({ open, handleClose }: { handleClose: () => void; open: boolean }) { const { user, handleLogout } = useAuth(); const devices = useDevices(); const { omniSearch } = useSearch(); const handleQuickDialSupport = useCallback(() => { omniSearch(SUPPORT_DISPLAY_NAME); handleClose(); }, [omniSearch, handleClose]); return ( Media Settings Microphone Your speaker selection should be done on your computer status or taskbar. Please select distinct speaker and microphone to avoid distortion when you have a bluetooth device connected. Video Questions? Help, feedback, and more? Account ); }