UNPKG

@tencentcloud/call-uikit-react

Version:

An Open-source Voice & Video Calling UI Component Based on Tencent Cloud Service.

54 lines (45 loc) 1.42 kB
import { useEffect, useState } from 'react'; import { NAME, StoreName, TUIStore } from '../../TUICallService'; import { DeviceType } from '../../TUICallService/const'; const useDeviceList = (deviceType: DeviceType) => { const [deviceList, setDeviceList] = useState<any[]>([]); const [currentDeviceId, setCurrentDeviceId] = useState<string>(); const handleDeviceListChange = (value: any) => { switch (deviceType) { case DeviceType.CAMERA: setDeviceList(value?.cameraList || []); setCurrentDeviceId(value?.currentCamera?.deviceId || ''); break; case DeviceType.MICROPHONE: setCurrentDeviceId(value?.currentMicrophone?.deviceId || ''); setDeviceList(value?.microphoneList || []); break; case DeviceType.SPEAKER: setCurrentDeviceId(value?.currentSpeaker?.deviceId || ''); setDeviceList(value?.speakerList || []); break; default: break; } }; const watchOptions = { [NAME.DEVICE_LIST]: handleDeviceListChange, }; useEffect(() => { TUIStore.watch( StoreName.CALL, watchOptions, { notifyRangeWhenWatch: NAME.MYSELF, }, ); return () => { TUIStore.unwatch( StoreName.CALL, watchOptions, ); }; }, []); return [{ deviceList, currentDeviceId }, { setCurrentDeviceId }] as const; }; export default useDeviceList;