forked from mebjas/html5-qrcode
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcamera.ts
38 lines (35 loc) · 1.1 KB
/
camera.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/**
* @fileoverview
* Camera libraries.
*
* @author mebjas <[email protected]>
*/
/**
* Util class around camera management.
*
* TODO(mebjas): Migrate camera specific code / logic to this class / library.
*/
export class CameraManager {
/**
* Returns {@code true} if the web page already has access to user camera
* permissions.
*/
public static hasCameraPermissions(): Promise<boolean> {
// TODO(mebjas): Use Permissions Query API, once support is widespread.
// https://developer.mozilla.org/en-US/docs/Web/API/Permissions/query
return new Promise((resolve, _) => {
// Note: If permissions are not granted, this can retrigger camera
// permission dialog.
navigator.mediaDevices.enumerateDevices().then((devices) => {
devices.forEach((device) => {
// Hacky way to check if camera permissions are granted. Device
// labels are only set in case user has granted permissions.
if(device.kind === "videoinput" && device.label) {
resolve(true);
}
});
resolve(false);
});
});
}
}