From 49818bf8c27a6306d0fceb20a5936bce6a49bf6a Mon Sep 17 00:00:00 2001 From: Rohit Patnaik Date: Mon, 27 Apr 2020 16:00:41 -0500 Subject: [PATCH] Added option to disable count of blocked elements Added another toggle to the options page to disable the count of blocked sticky headers. This is modeled off the uBlock origin option which does the same thing. --- src/contentScript.js | 23 +++++++++++++++++++---- src/options.css | 40 ++++++++++++++++++++++++++++++++++++++++ src/options.html | 6 +++--- src/options.js | 25 ++++++++++++++++++++----- 4 files changed, 82 insertions(+), 12 deletions(-) diff --git a/src/contentScript.js b/src/contentScript.js index 51b767d..f442e38 100644 --- a/src/contentScript.js +++ b/src/contentScript.js @@ -143,8 +143,11 @@ function killStickyPseudoElement(element, before) { function incrementKilledStickiesCount() { // console.log("incrementKilledStickiesCount"); - AKS.stickiesKilled++; - chrome.runtime.sendMessage({ newBadgeText: "" + AKS.stickiesKilled }); + console.log("Hiding stickies: " + AKS.hideKillCount); //DEBUG + if (!AKS.hideKillCount) { + AKS.stickiesKilled++; + chrome.runtime.sendMessage({ newBadgeText: "" + AKS.stickiesKilled }); + } } /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ @@ -197,7 +200,12 @@ function startConstantVigilance() { */ function beginKillingStickies() { // console.log("beginKillingStickies"); - if (!window.AKS) window.AKS = { stickiesKilled: 0 }; + if (!window.AKS) { + window.AKS = { stickiesKilled: 0 }; + } + else { + window.AKS.stickiesKilled = 0; + } window.requestIdleCallback(() => { killSticky(); @@ -211,9 +219,16 @@ function beginKillingStickies() { function initialize() { // console.log("initialize"); - chrome.storage.local.get([ "matchingPatterns", "exclusionPatterns", "mode" ], (result) => { + chrome.storage.local.get([ "matchingPatterns", "exclusionPatterns", "mode", "hideKillCount" ], (result) => { let shouldKillSticky = checkForShouldKillSticky(result); updateIcon(shouldKillSticky); + const hideKillCount = result.hideKillCount ? true : false; + if (!window.AKS){ + window.AKS = {hideKillCount: hideKillCount}; + } + else { + window.AKS.hideKillCount = hideKillCount; + } if (shouldKillSticky) { if (document.readyState == "loading") { document.addEventListener("DOMContentLoaded", beginKillingStickies); diff --git a/src/options.css b/src/options.css index c1f10c6..3b845f0 100644 --- a/src/options.css +++ b/src/options.css @@ -186,6 +186,46 @@ input#whitelist-mode, border-bottom: 1px solid currentColor; } +/*********************/ +/* KILL COUNT TOGGLE */ +/*********************/ + +input#hide-kill-count { + display: block; + -webkit-appearance: none; + -moz-appearance: none; + border: 1px solid #000; + font-size: 1rem; + height: 2em; + width: 4em; + margin: 0 6px; + background-color: #000; + box-shadow: + -2em 0 0 1px #fff inset, + 0 0 0 3px #fff inset; +} + +input#hide-kill-count:checked { + border: 1px solid #fff; + background-color: #fff; + box-shadow: + 2em 0 0 1px #000 inset, + 0 0 0 3px #000 inset; +} + +.enable-stickies-killed-count-container { + white-space: nowrap; + display: flex; + align-items: center; + align-self: flex-start; + border: 1px solid #ddd; + padding: 8px 10px; + cursor: default; + background-color: #fff; + margin-top: 15px; +} + + /******************/ /* WHITELIST MODE */ /******************/ diff --git a/src/options.html b/src/options.html index 60a11e2..af7e31d 100644 --- a/src/options.html +++ b/src/options.html @@ -16,9 +16,9 @@ Whitelist mode - - Show killed stickies count - + + Show killed stickies count + Hide killed stickies count diff --git a/src/options.js b/src/options.js index 2a6347e..b0ac97b 100644 --- a/src/options.js +++ b/src/options.js @@ -15,7 +15,7 @@ function modeSelectorInputReceived() { /* * Triggered when a click is received by the kill count display switch */ -function showKillCountInputReceived() { +function hideKillCountInputReceived() { setButtonsActive(true); } @@ -49,6 +49,15 @@ function toggleModeSelectorState(newMode) { document.querySelector("div#matchingPatterns textarea").disabled = (newMode == "whitelist"); } +/* + * Sets the kill count selector state + * Used by resetChanges() + */ +function setHideKillCountSelectorState(hideKillCount) { + let checkbox = document.querySelector("input#hide-kill-count"); + checkbox.checked = hideKillCount; +} + /* Saves the entered state in storage. De-activate the "Reset" and "Save" buttons. */ @@ -56,10 +65,13 @@ function saveChanges() { let matchingPatterns = document.querySelector("#matchingPatterns textarea").value; let exclusionPatterns = document.querySelector("#exclusionPatterns textarea").value; let mode = document.querySelector("input#whitelist-mode").checked ? "whitelist" : "blacklist"; + let hideKillCount = document.querySelector("input#hide-kill-count").checked ? true : false; + console.log("In saveChanges, hideKillCount: " + hideKillCount); //DEBUG chrome.storage.local.set({ "matchingPatterns": matchingPatterns, "exclusionPatterns": exclusionPatterns, - "mode": mode + "mode": mode, + "hideKillCount": hideKillCount }, () => { let error = chrome.runtime.lastError; if (error) { @@ -74,15 +86,18 @@ function saveChanges() { discarding the user's changes. */ function resetChanges(callback) { - chrome.storage.local.get([ "matchingPatterns", "exclusionPatterns", "mode" ], (result) => { + chrome.storage.local.get([ "matchingPatterns", "exclusionPatterns", "mode", "hideKillCount" ], (result) => { AKS.matchingPatterns = result.matchingPatterns || ""; AKS.exclusionPatterns = result.exclusionPatterns || "" AKS.mode = result.mode || "blacklist"; + AKS.hideKillCount = result.hideKillCount || false; document.querySelector("#matchingPatterns textarea").value = AKS.matchingPatterns; document.querySelector("#exclusionPatterns textarea").value = AKS.exclusionPatterns; toggleModeSelectorState(AKS.mode); + setHideKillCountSelectorState(AKS.hideKillCount); + // De-activate the "Reset" and "Save" buttons. setButtonsActive(false); @@ -184,8 +199,8 @@ function initialize() { }); //Listener for killcount display switch - document.querySelector("input#display-kill-count").addEventListener("change", (event) => { - showKillCountInputReceived(); + document.querySelector("input#hide-kill-count").addEventListener("change", (event) => { + hideKillCountInputReceived(); }); // Listener for open help button.