@jellyfish-dev/browser-media-utils
Version:
Facilitates the use of getUserMedia and enumerateDevices.
27 lines (26 loc) • 1.38 kB
JavaScript
/*
* enumerateDevices (permissions not granted)
* chrome: {deviceId: '', kind: 'videoinput', label: '', groupId: 'something'}
* firefox: {deviceId: 'something', kind: 'videoinput', label: '', groupId: 'something'}
* safari: {deviceId: '', kind: 'videoinput', label: '', groupId: ''}
* safari IOS: {deviceId: '', kind: 'videoinput', label: '', groupId: ''}
* chrome IOS: {deviceId: '', kind: 'videoinput', label: '', groupId: ''}
*/
export const isGranted = (mediaDeviceInfo) => mediaDeviceInfo.label !== "" && mediaDeviceInfo.deviceId !== "";
export const isNotGranted = (mediaDeviceInfo) => mediaDeviceInfo.label === "" || mediaDeviceInfo.deviceId === "";
export const isVideo = (it) => it.kind === "videoinput";
export const isAudio = (it) => it.kind === "audioinput";
export const toMediaTrackConstraints = (constraint) => {
if (typeof constraint === "boolean") {
return constraint ? {} : undefined;
}
return constraint;
};
export const prepareReturn = (isInterested, mediaDeviceInfo, permissionError) => {
if (!isInterested)
return { type: "Not requested" };
if (permissionError)
return { type: "Error", name: permissionError };
return { type: "OK", devices: mediaDeviceInfo.filter(isGranted) };
};
export const NOOP = () => { };