From ab6c387b2cc811823b9bad6c2d4ffb139fdd12af Mon Sep 17 00:00:00 2001 From: Thomas Rientjes <synzvato@protonmail.com> Date: Thu, 21 Sep 2017 22:28:24 -0400 Subject: [PATCH] Resolve #185 by allowing users to hide icon badges --- core/state-manager.js | 63 +++++++++++++++++++++++++++++--------- pages/options/options.html | 2 +- 2 files changed, 50 insertions(+), 15 deletions(-) diff --git a/core/state-manager.js b/core/state-manager.js index 8907514..f6389a8 100644 --- a/core/state-manager.js +++ b/core/state-manager.js @@ -42,19 +42,22 @@ stateManager.registerInjection = function (tabIdentifier, injection) { registeredTab.injections[injectionIdentifier] = injection; injectionCount = Object.keys(registeredTab.injections).length || 0; - if (injectionCount > 0) { + if (stateManager.showIconBadge === true) { - chrome.browserAction.setBadgeText({ - tabId: tabIdentifier, - text: injectionCount.toString() - }); + if (injectionCount > 0) { - } else { + chrome.browserAction.setBadgeText({ + tabId: tabIdentifier, + text: injectionCount.toString() + }); - chrome.browserAction.setBadgeText({ - tabId: tabIdentifier, - text: '' - }); + } else { + + chrome.browserAction.setBadgeText({ + tabId: tabIdentifier, + text: '' + }); + } } if (isNaN(interceptor.amountInjected)) { @@ -145,16 +148,42 @@ stateManager._updateTab = function (details) { return; } - chrome.browserAction.setBadgeText({ - tabId: tabIdentifier, - text: '' - }); + if (stateManager.showIconBadge === true) { + + chrome.browserAction.setBadgeText({ + tabId: tabIdentifier, + text: '' + }); + } if (stateManager.tabs[tabIdentifier]) { stateManager.tabs[tabIdentifier].injections = {}; } }; +stateManager._handleStorageChanged = function (changes) { + + if ('showIconBadge' in changes) { + + stateManager.showIconBadge = changes.showIconBadge.newValue; + + if (changes.showIconBadge.newValue !== true) { + + chrome.tabs.query({}, function (tabs) { + tabs.forEach(stateManager._removeIconBadgeFromTab); + }); + } + } +}; + +stateManager._removeIconBadgeFromTab = function (tab) { + + chrome.browserAction.setBadgeText({ + tabId: tab.id, + text: '' + }); +}; + /** * Initializations */ @@ -177,6 +206,10 @@ chrome.tabs.query({}, function (tabs) { tabs.forEach(stateManager._createTab); }); +chrome.storage.local.get('showIconBadge', function (items) { + stateManager.showIconBadge = items.showIconBadge || true; +}); + /** * Event Handlers */ @@ -222,3 +255,5 @@ chrome.webRequest.onBeforeSendHeaders.addListener(function (requestDetails) { return {requestHeaders: requestDetails.requestHeaders}; }, {urls: stateManager.validHosts}, [BLOCKING_ACTION, REQUEST_HEADERS]); + +chrome.storage.onChanged.addListener(stateManager._handleStorageChanged); diff --git a/pages/options/options.html b/pages/options/options.html index f974728..8ecc2d0 100644 --- a/pages/options/options.html +++ b/pages/options/options.html @@ -23,7 +23,7 @@ <label class="label-checkbox"> - <input class="input-checkbox" data-option="showIconBadge" type="checkbox" disabled> + <input class="input-checkbox" data-option="showIconBadge" type="checkbox"> <span data-i18n-content="showIconBadgeTitle"></span> </label> -- GitLab