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;
},
}
Comments