export default function useDevices()

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;
}