in src/hooks/useDevices.tsx [7:41]
export default function useDevices() {
const chime: ChimeSdkWrapper | null = useContext(getChimeContext());
const [deviceSwitcherState, setDeviceUpdated] = useState({
currentAudioInputDevice: chime?.currentAudioInputDevice,
currentAudioOutputDevice: chime?.currentAudioOutputDevice,
currentVideoInputDevice: chime?.currentVideoInputDevice,
audioInputDevices: chime?.audioInputDevices,
audioOutputDevices: chime?.audioOutputDevices,
videoInputDevices: chime?.videoInputDevices,
});
useEffect(() => {
const devicesUpdatedCallback = (fullDeviceInfo: FullDeviceInfoType) => {
console.debug('Devices updated.', fullDeviceInfo);
setDeviceUpdated({
...fullDeviceInfo,
});
};
chime?.subscribeToDevicesUpdated(devicesUpdatedCallback);
if (chime && !chime.deviceController) {
console.debug('Initing device controller.');
chime.initializeDeviceController().then(() => {
chime.listAndSelectDevices();
});
}
return () => {
chime?.unsubscribeFromDevicesUpdated(devicesUpdatedCallback);
};
}, []);
return deviceSwitcherState;
}