forked from sheepzh/time-tracker-4-browser
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpermission.ts
More file actions
40 lines (37 loc) · 1.2 KB
/
permission.ts
File metadata and controls
40 lines (37 loc) · 1.2 KB
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
39
40
import { IS_MV3 } from "@util/constant/environment"
import { handleError } from "./common"
export async function hasPerm(perm: chrome.runtime.ManifestPermissions): Promise<boolean> {
if (IS_MV3) {
try {
return await chrome.permissions.contains({ permissions: [perm] })
} catch {
return false
}
} else {
return new Promise(resolve => {
chrome.permissions.contains({ permissions: [perm] }, res => {
handleError('hasPerm')
resolve(!!res)
})
})
}
}
export async function requestPerm(perm: chrome.runtime.ManifestPermissions): Promise<boolean> {
if (IS_MV3) {
try {
return await chrome.permissions.request({ permissions: [perm] })
} catch {
return false
}
} else {
return new Promise(resolve => {
chrome.permissions.request({ permissions: [perm] }, granted => {
handleError("requestPerm")
resolve(!!granted)
})
})
}
}
export async function onPermRemoved(callback: ArgCallback<chrome.permissions.Permissions>) {
chrome.permissions?.onRemoved.addListener(callback)
}