import { ChangeEventHandler, useContext, useRef } from 'react' import Box from '@mui/material/Box' import UploadFile from '@mui/icons-material/UploadFile' import Cancel from '@mui/icons-material/Cancel' import Fab from '@mui/material/Fab' import Tooltip from '@mui/material/Tooltip' import { RoomContext } from 'contexts/RoomContext' import { PeerRoom } from 'services/PeerRoom/PeerRoom' import { useRoomFileShare } from './useRoomFileShare' export interface RoomFileUploadControlsProps { onInlineMediaUpload: (files: File[]) => void peerRoom: PeerRoom } export function RoomFileUploadControls({ peerRoom, onInlineMediaUpload, }: RoomFileUploadControlsProps) { const roomContext = useContext(RoomContext) const fileInputRef = useRef(null) const { isMessageSending } = roomContext const { isFileSharingEnabled, isSharingFile, handleFileShareStart, handleFileShareStop, sharedFiles, } = useRoomFileShare({ peerRoom, onInlineMediaUpload, }) const handleToggleScreenShareButtonClick = () => { const { current: fileInput } = fileInputRef if (isSharingFile) { handleFileShareStop() } else { if (!fileInput) return fileInput.click() } } const handleFileSelect: ChangeEventHandler = e => { const { files } = e.target if (!files) return handleFileShareStart(files) } const shareFileLabel = (sharedFiles && sharedFiles.length === 1 && sharedFiles[0].name) || 'files' const disableFileUpload = !isFileSharingEnabled || isMessageSending return ( {isSharingFile ? : } ) }