-
Dominik Hebeler authoredDominik Hebeler authored
index.js 2.15 KiB
// Setting change setting storage
(async () => {
let store_settings = null;
let checkbox = document.querySelector("#store-settings-switch");
await initializeSettingsState();
checkbox.addEventListener("change", e => {
updateSettingState(checkbox.checked);
});
async function verifyPermissions(request = false) {
let permissionsToRequest = {
permissions: ["webRequestBlocking"],
origins: [
"https://metager.org/*",
"https://metager.de/*",
]
};
if (request) {
return browser.permissions.request(permissionsToRequest);
} else {
return browser.permissions.contains(permissionsToRequest);
}
}
async function initializeSettingsState() {
// Initialize stored settings
let synced_settings = await browser.storage.sync.get({
settings_store: true,
});
if (synced_settings.settings_store == true) {
await verifyPermissions().then(granted => {
if (granted)
store_settings = true;
else
store_settings = false;
});
} else {
store_settings = false;
}
checkbox.checked = store_settings;
browser.storage.onChanged.addListener((changes, areaName) => {
if (changes.hasOwnProperty("settings_store")) {
let new_value = changes.settings_store.newValue;
checkbox.checked = new_value;
store_settings = new_value;
}
});
}
async function updateSettingState(store_settings) {
if (store_settings == true) {
return verifyPermissions(true).then(permission_granted => {
if (permission_granted) {
return browser.storage.sync.set({ settings_store: store_settings });
} else {
checkbox.checked = false;
return;
}
})
} else {
return browser.storage.sync.set({ settings_store: store_settings });
}
}
})();