-
Notifications
You must be signed in to change notification settings - Fork 1
/
settings.js
77 lines (60 loc) · 2.41 KB
/
settings.js
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
const PERMISSIONS = {
origins: [
"*://*.minecraftwiki.net/*",
"*://*.gamepedia.com/*",
"*://minecraft.fandom.com/*"
]
};
const PERMS_DECLINED_MESSAGE = "Permission request was declined.\nPlease try again.";
const permissionRequestButtons = document.getElementsByClassName("permissions-request");
for (const elem of permissionRequestButtons) {
elem.addEventListener("click", permissionsRequest);
}
async function permissionsRequest(event) {
event.stopPropagation();
const result = await browser.permissions.request(PERMISSIONS);
if (result) {
document.body.classList.add("permissions-granted");
} else {
window.alert(PERMS_DECLINED_MESSAGE);
}
}
document.getElementById("uninstall").addEventListener("click", () => {
browser.management.uninstallSelf({ showConfirmDialog: true });
});
const redirectToggle = document.querySelector("input[name='redirect']");
redirectToggle.addEventListener("change", () => {
browser.runtime.sendMessage({ action: "change-redirect-state", state: !redirectToggle.checked });
});
browser.runtime.onMessage.addListener((message) => {
if (message.action === "change-redirect-state") {
redirectToggle.checked = message.state;
}
});
async function setupSettingsUI() {
const hasPermissions = await browser.permissions.contains(PERMISSIONS);
if (hasPermissions) {
document.body.classList.add("permissions-granted");
} else {
document.body.classList.remove("permissions-granted");
}
const redirectEnabled = !(await browser.storage.local.get(["disabled"])).disabled
redirectToggle.checked = redirectEnabled;
}
const projectsPromos = document.getElementById("project-promos");
const projectsPromosToggle = document.querySelector("input[name='project-promos']");
async function setProjectsPromoStatus(status) {
projectsPromosToggle.checked = status;
projectsPromos.style.display = status ? "block" : "none";
await browser.storage.local.set({ projectPromos: status })
}
projectsPromosToggle.addEventListener("change", async () => {
await setProjectsPromoStatus(projectsPromosToggle.checked);
});
async function setupPromosToggle() {
let projectsEnabled = (await browser.storage.local.get(["projectPromos"])).projectPromos;
if (projectsEnabled == null) projectsEnabled = true;
await setProjectsPromoStatus(projectsEnabled);
}
setupSettingsUI();
setupPromosToggle();