From 91fea0237f7b63ff87880fd9fc4b88ff534c27d8 Mon Sep 17 00:00:00 2001 From: hackademix Date: Dec 11 2021 07:56:19 +0000 Subject: Wire wrapper group tweaks front-end and back-end. --- diff --git a/common/background.js b/common/background.js index dfb52e3..531e857 100644 --- a/common/background.js +++ b/common/background.js @@ -29,7 +29,7 @@ function updateBadge(level) { browser.browserAction.setBadgeText({text: "" + level["level_id"]}); } -// get active tab and pass it +// get active tab and pass it var queryInfo = { active: true, currentWindow: true @@ -47,8 +47,12 @@ function tabUpdate(tabid, changeInfo) { updateBadge(current_level); } // get level for activated tab -function tabActivate(activeInfo) { - current_level = tab_levels[activeInfo.tabId] || {level_id: "?"}; +async function tabActivate(activeInfo) { + let {tabId} = activeInfo; + if (!(tabId in tab_levels)) { + tabUpdate(tabId, await browser.tabs.get(tabId)); + } + current_level = tab_levels[tabId] || {level_id: "?"}; updateBadge(current_level); } // on tab reload or tab change, update badge @@ -64,9 +68,11 @@ browser.tabs.onActivated.addListener(tabActivate); // change tab * browser.runtime.getBackgroundPage() does not work as expected. See * also https://bugzilla.mozilla.org/show_bug.cgi?id=1329304. */ -function connected(port) { +async function connected(port) { if (port.name === "port_from_popup") { /// We always send back current level + let [tab] = await browser.tabs.query(queryInfo); + tabUpdate(tab.id, tab.url); port.postMessage(current_level); port.onMessage.addListener(function(msg) { port.postMessage(current_level); diff --git a/common/levels.js b/common/levels.js index 02d53b8..3e9eb2b 100644 --- a/common/levels.js +++ b/common/levels.js @@ -821,7 +821,7 @@ function saveDomainLevels() { } if (tweaks) { for (let [group, tlev_id] of Object.entries(tweaks)) { - if (tlev_id === level_id) delete tweaks[tlev_id]; // remove redundant entries + if (tlev_id === level_id) delete tweaks[group]; // remove redundant entries } if (Object.keys(tweaks).length === 0) delete tweaks; } diff --git a/common/popup.js b/common/popup.js index 727c490..f317ee2 100644 --- a/common/popup.js +++ b/common/popup.js @@ -103,16 +103,24 @@ async function init() { let tweaks = document.getElementById("tweaks"); document.body.classList.remove("tweaking"); let tweakBtn = document.getElementById("btn-tweak"); + function defaultTweaks() { + let tt = {}, tlev_id = current_level.level_id; + for (let g of wrapping_groups.groups) { + tt[g.id] = tlev_id; + } + return tt; + } function initTweaks() { tweaks.innerHTML = ""; tweaks.appendChild(document.getElementById("tweak-head").content); - for (let [group, tlev_id] of Object.entries(current_level.tweaks)) { + for (let [group, tlev_id] of Object.entries(Object.assign(defaultTweaks(), current_level.tweaks || {}))) { let tweakRow = document.getElementById("tweak-row").content.cloneNode(true); tweakRow.querySelector("label").textContent = group; let tlevUI = tweakRow.querySelector(".tlev"); tlevUI.value = tlevUI.nextElementSibling.value = parseInt(tlev_id); tlevUI.onchange = () => { current_level.tweaks[group] = tlevUI.nextElementSibling.value = tlevUI.value; + domains[site].tweaks = current_level.tweaks; saveDomainLevels(); } tweaks.appendChild(tweakRow); @@ -121,16 +129,12 @@ async function init() { document.body.classList.add("tweaking"); } tweakBtn.disabled = true; - if (current_level.tweaks) { + + if (current_level.tweaks && Object.keys(current_level.tweaks).length) { initTweaks(); } else if (parseInt(current_level.level_id)) { tweakBtn.disabled = false; tweakBtn.onclick = function() { - let tt = {}, tlev_id = current_level.level_id; - for (let g of wrapping_groups.groups) { - tt[g.id] = tlev_id; - } - current_level.tweaks = tt; initTweaks(); }; }