import { useState } from 'react' import Box from '@mui/material/Box' import RecordVoiceOver from '@mui/icons-material/RecordVoiceOver' import VoiceOverOff from '@mui/icons-material/VoiceOverOff' import List from '@mui/material/List' import ListItem from '@mui/material/ListItem' import ListItemText from '@mui/material/ListItemText' import Menu from '@mui/material/Menu' import MenuItem from '@mui/material/MenuItem' import Fab from '@mui/material/Fab' import Tooltip from '@mui/material/Tooltip' import { PeerRoom } from 'services/PeerRoom/PeerRoom' import { useRoomAudio } from './useRoomAudio' export interface RoomAudioControlsProps { peerRoom: PeerRoom } export function RoomAudioControls({ peerRoom }: RoomAudioControlsProps) { const { audioDevices, isSpeakingToRoom, setIsSpeakingToRoom, handleAudioDeviceSelect, } = useRoomAudio({ peerRoom }) const [audioAnchorEl, setAudioAnchorEl] = useState(null) const isAudioDeviceSelectOpen = Boolean(audioAnchorEl) const [selectedAudioDeviceIdx, setSelectedAudioDeviceIdx] = useState(0) const handleVoiceCallClick = () => { setIsSpeakingToRoom(!isSpeakingToRoom) } const handleAudioDeviceListItemClick = ( event: React.MouseEvent ) => { setAudioAnchorEl(event.currentTarget) } const handleAudioDeviceMenuItemClick = ( _event: React.MouseEvent, idx: number ) => { setSelectedAudioDeviceIdx(idx) handleAudioDeviceSelect(audioDevices[idx]) setAudioAnchorEl(null) } const handleAudioInputSelectMenuClose = () => { setAudioAnchorEl(null) } return ( {isSpeakingToRoom ? : } {audioDevices.length > 0 && ( {audioDevices.map((audioDevice, idx) => ( handleAudioDeviceMenuItemClick(event, idx)} > {audioDevice.label} ))} )} ) }