diff --git a/webextension/background.js b/webextension/background.js index 6e194205..754fd7c6 100644 --- a/webextension/background.js +++ b/webextension/background.js @@ -254,7 +254,9 @@ const assignManager = { // ✓ This is to mitigate https://bugzilla.mozilla.org/show_bug.cgi?id=1351418 let prefix = " "; // Alignment of non breaking space, unknown why this requires so many spaces to align with the tick let menuId = this.MENU_ASSIGN_ID; - if (siteSettings) { + const tabUserContextId = this.getUserContextIdFromCookieStore(tab); + if (siteSettings && + Number(siteSettings.userContextId) === Number(tabUserContextId)) { prefix = "✓"; menuId = this.MENU_REMOVE_ID; } diff --git a/webextension/js/popup.js b/webextension/js/popup.js index 6ec07adb..bd371d2f 100644 --- a/webextension/js/popup.js +++ b/webextension/js/popup.js @@ -467,10 +467,13 @@ Logic.registerPanel(P_CONTAINERS_LIST, { browser.tabs.onUpdated.removeListener(this.tabUpdateHandler); }, - setupAssignmentCheckbox(siteSettings) { + setupAssignmentCheckbox(siteSettings, currentUserContextId) { const assignmentCheckboxElement = document.getElementById("container-page-assigned"); - // Cater for null and false - assignmentCheckboxElement.checked = !!siteSettings; + let checked = false; + if (siteSettings && Number(siteSettings.userContextId) === currentUserContextId) { + checked = true; + } + assignmentCheckboxElement.checked = checked; let disabled = false; if (siteSettings === false) { disabled = true; @@ -482,16 +485,16 @@ Logic.registerPanel(P_CONTAINERS_LIST, { const currentTab = await Logic.currentTab(); const currentTabElement = document.getElementById("current-tab"); const assignmentCheckboxElement = document.getElementById("container-page-assigned"); + const currentTabUserContextId = Logic.userContextId(currentTab.cookieStoreId); assignmentCheckboxElement.addEventListener("change", () => { - const userContextId = Logic.userContextId(currentTab.cookieStoreId); - Logic.setOrRemoveAssignment(currentTab.id, currentTab.url, userContextId, !assignmentCheckboxElement.checked); + Logic.setOrRemoveAssignment(currentTab.id, currentTab.url, currentTabUserContextId, !assignmentCheckboxElement.checked); }); currentTabElement.hidden = !currentTab; - this.setupAssignmentCheckbox(false); + this.setupAssignmentCheckbox(false, currentTabUserContextId); if (currentTab) { const identity = await Logic.identity(currentTab.cookieStoreId); const siteSettings = await Logic.getAssignment(currentTab); - this.setupAssignmentCheckbox(siteSettings); + this.setupAssignmentCheckbox(siteSettings, currentTabUserContextId); const currentPage = document.getElementById("current-page"); currentPage.innerHTML = escaped`${currentTab.title}`; const favIconElement = Utils.createFavIconElement(currentTab.favIconUrl || "");