Chrome Extension Permissions Utilities (manifest V3)
Mon Jul 11 2022 18:47:28 GMT+0000 (Coordinated Universal Time)
Saved by
@Explosion
#javascript
#extension
#chrome
const permissions = {
async add(permission = [], origins = []){
if (!origins?.length){origins = undefined};
if (typeof permission === "string"){permission = [permission]};
return new Promise((r, reject) => {
chrome.permissions.request(
{permissions: permission, origins},
(granted) => {
if (!granted){
reject("Permission not granted");
} else {
r();
}
}
)
})
},
async remove(permission = [], origins = []){
if (!origins?.length){origins = undefined};
if (typeof permission === "string"){permission = [permission]};
return new Promise((r, reject) => {
chrome.permissions.remove(
{permissions: permission, origins},
(removed) => {
if (!removed){
reject("Permission not removed");
} else {
r();
}
}
)
})
},
async with(permission = [], origins = [], func){
if (!origins?.length){origins = undefined};
if (typeof permission === "string"){permission = [permission]};
await new Promise((r, reject) => {
chrome.permissions.request(
{permissions: permission, origins},
(granted) => {
if (!granted){
reject("Permission not granted");
} else {
r();
}
}
)
});
let out = await func();
await new Promise((r, reject) => {
chrome.permissions.remove(
{permissions: permission, origins},
(removed) => {
if (!removed){
reject("Permission not removed");
} else {
r();
}
}
)
})
return out;
},
}
content_copyCOPY
https://gist.github.com/Explosion-Scratch/4e868a4a55da531b6715c9461cea88a2
Comments