diff --git a/webextension/css/popup.css b/webextension/css/popup.css index af78306..d9899da 100644 --- a/webextension/css/popup.css +++ b/webextension/css/popup.css @@ -450,7 +450,7 @@ manage things like container crud */ margin-inline-start: var(--inline-item-space-size); } -#container-panel #sort-containers-link { +#container-panel .action-link { align-items: center; block-size: var(--block-url-label-size); border: 1px solid #d8d8d8; @@ -460,11 +460,12 @@ manage things like container crud */ font-size: var(--small-text-size); inline-size: var(--inline-button-size); justify-content: center; + margin-left: var(--block-line-space-size); text-decoration: none; } -#container-panel #sort-containers-link:hover, -#container-panel #sort-containers-link:focus { +#container-panel .action-link:hover, +#container-panel .action-link:focus { background: #f2f2f2; } diff --git a/webextension/js/background/backgroundLogic.js b/webextension/js/background/backgroundLogic.js index 36bcb47..cb62e06 100644 --- a/webextension/js/background/backgroundLogic.js +++ b/webextension/js/background/backgroundLogic.js @@ -299,8 +299,26 @@ const backgroundLogic = { return await identityState.storageArea.set(options.cookieStoreId, containerState); }, + async unhideAllTabs(windowId) { + const [identities, state] = await Promise.all([ + browser.contextualIdentities.query({}), + backgroundLogic.queryIdentitiesState(windowId) + ]); + + const promises = []; + identities.filter(identity => { + const stateObject = state[identity.cookieStoreId]; + return stateObject && stateObject.hasHiddenTabs; + }).map(identity => identity.cookieStoreId) + .forEach(cookieStoreId => { + // We need to call unhideContainer in messageHandler to prevent it from + // unhiding multiple times + promises.push(messageHandler.unhideContainer(cookieStoreId)); + }); + return Promise.all(promises); + }, + cookieStoreId(userContextId) { return `firefox-container-${userContextId}`; } }; - diff --git a/webextension/js/background/messageHandler.js b/webextension/js/background/messageHandler.js index 1971953..7648c9a 100644 --- a/webextension/js/background/messageHandler.js +++ b/webextension/js/background/messageHandler.js @@ -68,6 +68,9 @@ const messageHandler = { case "exemptContainerAssignment": response = assignManager._exemptTab(m); break; + case "unhideAllTabs": + response = backgroundLogic.unhideAllTabs(m.message.windowId); + break; } return response; }); diff --git a/webextension/js/popup.js b/webextension/js/popup.js index 2375d4c..3b8c399 100644 --- a/webextension/js/popup.js +++ b/webextension/js/popup.js @@ -500,6 +500,20 @@ Logic.registerPanel(P_CONTAINERS_LIST, { } }); + Logic.addEnterHandler(document.querySelector("#unhide-all-containers-link"), async function () { + try { + await browser.runtime.sendMessage({ + method: "unhideAllTabs", + message: { + windowId: browser.windows.WINDOW_ID_CURRENT + } + }); + window.close(); + } catch (e) { + window.close(); + } + }); + document.addEventListener("keydown", (e) => { const selectables = [...document.querySelectorAll("[tabindex='0'], [tabindex='-1']")]; const element = document.activeElement; diff --git a/webextension/popup.html b/webextension/popup.html index 8cde498..68c2d86 100644 --- a/webextension/popup.html +++ b/webextension/popup.html @@ -108,6 +108,7 @@
+ Show all Sort Tabs