import {
useMeetingManager,
lightTheme,
ControlBar,
ControlBarButton,
AudioOutputControl,
AudioInputControl,
Phone,
VoiceFocusProvider,
useMeetingEvent,
} from 'amazon-chime-sdk-component-library-react'
import { VoiceFocusModelName } from 'amazon-chime-sdk-js'
import { useEffect } from 'react'
import { ThemeProvider } from 'styled-components'
import { useChimeMeetingState } from './context'
const MeetingControl = () => {
const meetingManager = useMeetingManager()
const { state, setState } = useChimeMeetingState()
const meetingResponse = state.meetingResponse
const meetingEvent = useMeetingEvent()
useEffect(() => {
if (meetingEvent == null) return
console.log(meetingEvent)
switch (meetingEvent.name) {
case 'meetingEnded':
setState({ isOnCall: false })
break
}
}, [meetingEvent])
const hangUpButtonProps = {
icon: ,
onClick: () => meetingManager.leave(),
label: 'End',
}
// https://aws.github.io/amazon-chime-sdk-component-library-react/?path=/docs/sdk-components-meetingcontrols-audioinputvfcontrol--page
const voiceFocusName = (name: string): VoiceFocusModelName => {
if (name && ['default', 'ns_es'].includes(name)) {
return name as VoiceFocusModelName
}
return 'default'
}
const getVoiceFocusSpecName = (): VoiceFocusModelName => {
if (
meetingResponse &&
meetingResponse.Meeting?.MeetingFeatures?.Audio?.EchoReduction ===
'AVAILABLE'
) {
return voiceFocusName('ns_es')
}
return voiceFocusName('default')
}
const vfConfigValue = {
spec: { name: getVoiceFocusSpecName() },
createMeetingResponse: meetingResponse,
}
return (
{state.isOnCall ? (
) : (
<>>
)}
)
}
export default MeetingControl