import { Box, Chip, Icon, IconButton, Icons, Text, Tooltip, TooltipProvider } from 'folds'; import React, { useState } from 'react'; import { StatusDivider } from './components'; import { CallEmbed, useCallControlState } from '../../plugins/call'; type MicrophoneButtonProps = { enabled: boolean; onToggle: () => Promise; }; function MicrophoneButton({ enabled, onToggle }: MicrophoneButtonProps) { return ( {enabled ? 'Turn Off Microphone' : 'Turn On Microphone'} } > {(anchorRef) => ( onToggle()} outlined={!enabled} > )} ); } type SoundButtonProps = { enabled: boolean; onToggle: () => void; }; function SoundButton({ enabled, onToggle }: SoundButtonProps) { return ( {enabled ? 'Turn Off Sound' : 'Turn On Sound'} } > {(anchorRef) => ( onToggle()} outlined={!enabled} > )} ); } type VideoButtonProps = { enabled: boolean; onToggle: () => Promise; }; function VideoButton({ enabled, onToggle }: VideoButtonProps) { return ( {enabled ? 'Stop Camera' : 'Start Camera'} } > {(anchorRef) => ( onToggle()} outlined={enabled} > )} ); } function ScreenShareButton() { const [enabled, setEnabled] = useState(false); return ( {enabled ? 'Stop Screenshare' : 'Start Screenshare'} } > {(anchorRef) => ( setEnabled(!enabled)} outlined={enabled} > )} ); } export function CallControl({ callEmbed }: { callEmbed: CallEmbed }) { const { microphone, video, sound } = useCallControlState(callEmbed.control); return ( callEmbed.control.toggleMicrophone()} /> callEmbed.control.toggleSound()} /> callEmbed.control.toggleVideo()} /> {false && } } outlined onClick={() => callEmbed.hangup()} > End ); }