From 619b5f5c0ee62a0bc20bfe25764576e7f271c9fb Mon Sep 17 00:00:00 2001 From: Aishat Akinyemi Date: Thu, 10 Oct 2019 16:28:29 +0100 Subject: [PATCH] refactor badge.displayBrowserActionBadge to be used in messageHandler.js fixes #973 --- src/js/background/badge.js | 27 ++++++++++++++++++++------- src/js/background/messageHandler.js | 10 ++-------- src/js/popup.js | 4 ++-- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/js/background/badge.js b/src/js/background/badge.js index 78cd9f1..92aa926 100644 --- a/src/js/background/badge.js +++ b/src/js/background/badge.js @@ -10,16 +10,29 @@ const badge = { browser.browserAction.setTitle({ tabId, title: "Containers disabled in Private Browsing Mode" }); }, - async displayBrowserActionBadge() { + async displayBrowserActionBadge(action) { const extensionInfo = await backgroundLogic.getExtensionInfo(); - const storage = await browser.storage.local.get({browserActionBadgesClicked: []}); - - 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"}); + function changeBadgeColorText(color, text){ + browser.browserAction.setBadgeBackgroundColor({color: color}); + browser.browserAction.setBadgeText({text: text}); + } + if(action==="remove"){ + 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 9fbe88e..977d0b2 100644 --- a/src/js/background/messageHandler.js +++ b/src/js/background/messageHandler.js @@ -171,13 +171,7 @@ 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"); } }, @@ -187,7 +181,7 @@ const messageHandler = { // https://bugzil.la/1314674 // https://github.com/mozilla/testpilot-containers/issues/608 // ... so re-call displayBrowserActionBadge on window changes - badge.displayBrowserActionBadge(); + badge.displayBrowserActionBadge("remove"); browser.tabs.query({active: true, windowId}).then((tabs) => { if (tabs && tabs[0]) { assignManager.calculateContextMenu(tabs[0]); diff --git a/src/js/popup.js b/src/js/popup.js index 80986a2..8046b1d 100644 --- a/src/js/popup.js +++ b/src/js/popup.js @@ -79,7 +79,7 @@ const Logic = { async init() { // Remove browserAction "upgraded" badge when opening panel this.clearBrowserActionBadge(); - + // Retrieve the list of identities. const identitiesPromise = this.refreshIdentities(); @@ -159,7 +159,7 @@ const Logic = { }); }, - async clearBrowserActionBadge() { + async clearBrowserActionBadge() { const extensionInfo = await getExtensionInfo(); const storage = await browser.storage.local.get({browserActionBadgesClicked: []}); browser.browserAction.setBadgeBackgroundColor({color: null});