A Metamask fork with Infura removed and default networks editable
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
ciphermask/ui/lib/webcam-utils.js

41 lines
1.3 KiB

'use strict'
import {
ENVIRONMENT_TYPE_POPUP,
PLATFORM_BRAVE,
PLATFORM_FIREFOX,
} from '../../app/scripts/lib/enums'
import { getEnvironmentType, getPlatform } from '../../app/scripts/lib/util'
class WebcamUtils {
static async checkStatus() {
const isPopup = getEnvironmentType() === ENVIRONMENT_TYPE_POPUP
const isFirefoxOrBrave =
getPlatform() === (PLATFORM_FIREFOX || PLATFORM_BRAVE)
const devices = await window.navigator.mediaDevices.enumerateDevices()
const webcams = devices.filter((device) => device.kind === 'videoinput')
const hasWebcam = webcams.length > 0
// A non-empty-string label implies that the webcam has been granted permission, as
// otherwise the label is kept blank to prevent fingerprinting
const hasWebcamPermissions = webcams.some(
(webcam) => webcam.label && webcam.label.length > 0,
)
if (hasWebcam) {
let environmentReady = true
if ((isFirefoxOrBrave && isPopup) || (isPopup && !hasWebcamPermissions)) {
environmentReady = false
}
return {
permissions: hasWebcamPermissions,
environmentReady,
}
}
const error = new Error('No webcam found')
error.type = 'NO_WEBCAM_FOUND'
throw error
}
}
export default WebcamUtils