diff --git a/src/popup.html b/src/popup.html index fe7806d..32d1993 100644 --- a/src/popup.html +++ b/src/popup.html @@ -116,7 +116,7 @@
- diff --git a/src/popup.js b/src/popup.js index 80bdfa3..0fbf6ff 100644 --- a/src/popup.js +++ b/src/popup.js @@ -6,7 +6,7 @@ function init() { restore(); document.querySelector("#preset").addEventListener("change", showOther); - document.querySelector("#options").addEventListener("submit", save); + document.querySelector("#save").addEventListener("click", save); document.querySelector("#restore").addEventListener("click", restore); } @@ -17,6 +17,11 @@ function loadDomain() { const hostname = new URL(tabs[0].url).hostname; document.querySelector("#domain").innerHTML = hostname; + if (!hostname) { + disableToggle(); + return; + } + let storage = browser.storage.local.get("domains"); storage.then((storage) => { const hostname = document.querySelector("#domain").innerHTML; @@ -43,10 +48,9 @@ function toggle() { } else { domains.push(hostname); } - browser.storage.local.set({"domains": domains}); + browser.storage.local.set({"domains": domains}).then(reloadTabs, logError); }, logError); toggleButton(); - browser.tabs.reload(); } /* Toggles the displayed button state */ @@ -64,6 +68,32 @@ function toggleButton() { } } +/* Disables the toggle if the site is invalid */ +function disableToggle() { + let state = document.querySelector("#site-state"); + state.querySelector("#domain").innerHTML = "Not available"; + state.querySelector("p").innerHTML = "This tab does not allow MetamorPOV to modify its contents!"; + state.querySelector("#toggle").style.display = "none"; +} + +/* Reloads tabs belonging to saved domains */ +function reloadTabs() { + browser.tabs.query({ currentWindow: true }).then((tabs) => { + console.log("tabs now!"); + browser.storage.local.get("domains").then((storage) => { + const domains = storage.domains; + console.log("storage now!"); + tabs.forEach((tab) => { + const hostname = new URL(tab.url).hostname; + if (domains.includes(hostname)) { + browser.tabs.reload(tab.id); + console.log("reloading!"); + } + }); + }, logError); + }, logError); +} + /* Gets saved options and loads them */ function restore() { let options = browser.storage.local.get(); @@ -131,8 +161,7 @@ function save() { "other": saveOther(), "pov": document.querySelector("#pov").value, "also": saveAlso() - }); - browser.tabs.reload(); + }).then(reloadTabs, logError); } /* Helper for save, gets contents of other */