diff --git a/src/js/background/badge.js b/src/js/background/badge.js index 7d532ac1..9bbb96a1 100644 --- a/src/js/background/badge.js +++ b/src/js/background/badge.js @@ -1,20 +1,37 @@ const MAJOR_VERSIONS = ["2.3.0", "2.4.0"]; const badge = { - async init() { - const currentWindow = await browser.windows.getCurrent(); - this.displayBrowserActionBadge(currentWindow); + async init() { + this.displayBrowserActionBadge("showVersionIndicator"); }, - async displayBrowserActionBadge() { - const extensionInfo = await backgroundLogic.getExtensionInfo(); - const storage = await browser.storage.local.get({ browserActionBadgesClicked: [] }); + disableAddon(tabId) { + browser.browserAction.disable(tabId); + browser.browserAction.setTitle({ tabId, title: "Containers disabled in Private Browsing Mode" }); + }, - if (MAJOR_VERSIONS.indexOf(extensionInfo.version) > -1 && - storage.browserActionBadgesClicked.indexOf(extensionInfo.version) < 0) { - browser.browserAction.setBadgeBackgroundColor({ color: "rgba(0,217,0,255)" }); - browser.browserAction.setBadgeText({ text: "NEW" }); + async displayBrowserActionBadge(action) { + const extensionInfo = await backgroundLogic.getExtensionInfo(); + function changeBadgeColorText(color, text){ + browser.browserAction.setBadgeBackgroundColor({color: color}); + browser.browserAction.setBadgeText({text: text}); + } + if(action==="showVersionIndicator") { + const ActionBadgesClickedStorage = await browser.storage.local.get({browserActionBadgesClicked: []}); + if (MAJOR_VERSIONS.indexOf(extensionInfo.version) > -1 && + ActionBadgesClickedStorage.browserActionBadgesClicked.indexOf(extensionInfo.version) < 0) { + changeBadgeColorText("rgba(0,217,0,255)", "NEW"); + } + } + else if (action==="showAchievement") { + const achievementsStorage = await browser.storage.local.get({achievements: []}); + achievementsStorage.achievements.push({"name": "manyContainersOpened", "done": false}); + // use set and spread to create a unique array + const achievements = [...new Set(achievementsStorage.achievements)]; + browser.storage.local.set({achievements}); + changeBadgeColorText("rgba(0,217,0,255)", "NEW"); } } + }; badge.init(); diff --git a/src/js/background/messageHandler.js b/src/js/background/messageHandler.js index 046d1630..8775e6e0 100644 --- a/src/js/background/messageHandler.js +++ b/src/js/background/messageHandler.js @@ -141,6 +141,9 @@ const messageHandler = { }, {urls: [""], types: ["main_frame"]}); browser.tabs.onCreated.addListener((tab) => { + if (tab.incognito) { + badge.disableAddon(tab.id); + } // lets remember the last tab created so we can close it if it looks like a redirect this.lastCreatedTab = tab; if (tab.cookieStoreId) { @@ -168,23 +171,12 @@ const messageHandler = { // When the user opens their _ tab, give them the achievement if (countOfContainerTabsOpened === 100) { - const storage = await browser.storage.local.get({achievements: []}); - storage.achievements.push({"name": "manyContainersOpened", "done": false}); - // use set and spread to create a unique array - const achievements = [...new Set(storage.achievements)]; - browser.storage.local.set({achievements}); - browser.browserAction.setBadgeBackgroundColor({color: "rgba(0,217,0,255)"}); - browser.browserAction.setBadgeText({text: "NEW"}); + badge.displayBrowserActionBadge("showAchievement"); } }, async onFocusChangedCallback(windowId) { assignManager.removeContextMenu(); - // browserAction loses background color in new windows ... - // https://bugzil.la/1314674 - // https://github.com/mozilla/testpilot-containers/issues/608 - // ... so re-call displayBrowserActionBadge on window changes - badge.displayBrowserActionBadge(); browser.tabs.query({active: true, windowId}).then((tabs) => { if (tabs && tabs[0]) { assignManager.calculateContextMenu(tabs[0]);