UNPKG

@100mslive/hms-video-store

Version:

@100mslive Core SDK which abstracts the complexities of webRTC while providing a reactive store for data management with a unidirectional data flow

41 lines (37 loc) 1.49 kB
import { getLocalStream } from './media'; import { getAudioTrack, getVideoTrack } from './track'; import { HMSAction } from '../error/HMSAction'; import { HMSException } from '../error/HMSException'; import { HMSAudioTrackSettingsBuilder } from '../media/settings/HMSAudioTrackSettings'; import { HMSVideoTrackSettingsBuilder } from '../media/settings/HMSVideoTrackSettings'; // Errors out when there's any device error, returns false when there are no device errors. export async function validateDeviceAV() { const videoTrackSettings = new HMSVideoTrackSettingsBuilder().build(); const audioTrackSettings = new HMSAudioTrackSettingsBuilder().build(); /** * Check audio failure. * If audio failure - check AV failure. * If AV failure - throw AV failure. * If AV passed - throw audio failure. * * If audio passed - check video failure. * If video failure - throw video failure. * If video passed - no error - return false. */ try { const track = await getAudioTrack(audioTrackSettings); track.stop(); } catch (audioError) { if (isHMSDeviceError(audioError)) { const stream = await getLocalStream({ audio: false, video: true }); stream.getTracks().forEach(track => track.stop()); throw audioError; } } const track = await getVideoTrack(videoTrackSettings); track.stop(); return false; } function isHMSDeviceError(error: any) { return error instanceof HMSException && error.action === HMSAction.TRACK; }