diff --git a/src/_locales b/src/_locales index 7df9158..4c5fb04 160000 --- a/src/_locales +++ b/src/_locales @@ -1 +1 @@ -Subproject commit 7df9158b9dfddab256285d8fb7f342dc8a3a8c1d +Subproject commit 4c5fb04b020eb47f3238971f6f04b096c2dea2c0 diff --git a/src/img/disable-redirect.svg b/src/img/disable-redirect.svg new file mode 100644 index 0000000..6786b5e --- /dev/null +++ b/src/img/disable-redirect.svg @@ -0,0 +1,9 @@ + + + + + + + diff --git a/src/js/background/backgroundLogic.js b/src/js/background/backgroundLogic.js index 4516888..c25016b 100644 --- a/src/js/background/backgroundLogic.js +++ b/src/js/background/backgroundLogic.js @@ -215,7 +215,14 @@ const backgroundLogic = { } }, - async setRedirectState(cookieStoreId, enable) { + async setRedirectState(cookieStoreId, enable, global) { + if (global) { + const containers = await identityState.getCookieStoreIDuuidMap(); + for (const id in containers) { + await this.setRedirectState(id, enable, false);; + } + return; + } const containerState = await identityState.storageArea.get(cookieStoreId); try { containerState.redirectDisable = !enable; diff --git a/src/js/background/messageHandler.js b/src/js/background/messageHandler.js index 621773c..5d79e07 100644 --- a/src/js/background/messageHandler.js +++ b/src/js/background/messageHandler.js @@ -64,7 +64,9 @@ const messageHandler = { }); break; case "setRedirectState": - response = backgroundLogic.setRedirectState(m.cookieStoreId, m.state); + response = backgroundLogic.setRedirectState( + m.cookieStoreId, m.state, m.global + ); break; case "checkIncompatibleAddons": // TODO diff --git a/src/js/popup.js b/src/js/popup.js index 74fcbd3..d894eca 100644 --- a/src/js/popup.js +++ b/src/js/popup.js @@ -60,6 +60,7 @@ const Logic = { _previousPanelPath: [], _panels: {}, _onboardingVariation: null, + _initPromise: null, async init() { browser.runtime.sendMessage({ @@ -757,6 +758,25 @@ Logic.registerPanel(P_CONTAINERS_LIST, { Utils.addEnterHandler(document.querySelector("#always-open-in"), () => { Logic.showPanel(ALWAYS_OPEN_IN_PICKER); }); + const redirectEl = document.querySelector("#disable-redirect-all"); + let redirectSwitchStateTo = false; + Logic.initPromise.then(() => { + const identities = Logic.identities(); + redirectSwitchStateTo = identities.some(id => id.redirectDisable); + redirectEl.querySelector('.menu-text').textContent = browser.i18n.getMessage(redirectSwitchStateTo ? "enableRedirectAllContainer" : "disableRedirectAllContainer"); + }); + Utils.addEnterHandler(redirectEl, async () => { + try { + await browser.runtime.sendMessage({ + method: "setRedirectState", + state: redirectSwitchStateTo, + global: true + }); + window.close(); + } catch (e) { + window.close(); + } + }); Utils.addEnterHandler(document.querySelector("#sort-containers-link"), async () => { try { await browser.runtime.sendMessage({ @@ -2423,7 +2443,7 @@ Logic.registerPanel(P_CONTAINERS_ACHIEVEMENT, { }, }); -Logic.init(); +Logic.initPromise = Logic.init(); window.addEventListener("resize", function () { //for overflow menu diff --git a/src/manifest.json b/src/manifest.json index daebff1..027781b 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -1,6 +1,6 @@ { "manifest_version": 2, - "name": "Firefox Multi-Account Containers", + "name": "Firefox Multi-Account Containers DEV", "version": "8.2.0", "incognito": "not_allowed", "description": "__MSG_extensionDescription__", diff --git a/src/popup.html b/src/popup.html index b2bae8d..d59eaa0 100644 --- a/src/popup.html +++ b/src/popup.html @@ -149,6 +149,14 @@ + + + + + + + +