From e86654ed29888d82b029972eac3827529c5afaca Mon Sep 17 00:00:00 2001
From: Banaanae <83927639+Banaanae@users.noreply.github.com>
Date: Tue, 25 Jun 2024 16:15:14 +1000
Subject: [PATCH 1/6] first commit for adding whitelist
base functionality
---
_locales/en/messages.json | 4 ++++
clearurls.js | 13 +++++++++++++
core_js/popup.js | 25 +++++++++++++++++++++++++
core_js/storage.js | 1 +
html/popup.html | 1 +
5 files changed, 44 insertions(+)
diff --git a/_locales/en/messages.json b/_locales/en/messages.json
index 37393d5..2fe7ddb 100644
--- a/_locales/en/messages.json
+++ b/_locales/en/messages.json
@@ -87,6 +87,10 @@
"message": "Show numbers of cleaned urls",
"description": "This string is used as title for the badges switch button on the popup page."
},
+ "popup_html_configs_whitelist_button": {
+ "message": "Whitelist Site",
+ "description": "This string is used as name for the whitelist button on the popup page."
+ },
"popup_html_statistics_head": {
"message": "Statistics",
"description": "This string is used as title for the statistics on the popup page."
diff --git a/clearurls.js b/clearurls.js
index 66a4aee..047869d 100644
--- a/clearurls.js
+++ b/clearurls.js
@@ -47,6 +47,19 @@ function removeFieldsFormURL(provider, pureUrl, quiet = false, request = null) {
let rawRules = provider.getRawRules();
let urlObject = new URL(url);
+ /*
+ * Skip whitelisted sites
+ */
+ for (const site of storage.whitelist) {
+ if (url.indexOf(site) != -1) {
+ return {
+ "changes": false,
+ "url": url,
+ "cancel": false
+ }
+ }
+ }
+
if (storage.localHostsSkipping && checkLocalURL(urlObject)) {
return {
"changes": false,
diff --git a/core_js/popup.js b/core_js/popup.js
index 1ebc0f3..62d02ee 100644
--- a/core_js/popup.js
+++ b/core_js/popup.js
@@ -155,6 +155,29 @@ function setSwitchButton(id, varname)
element.checked = this[varname];
}
+/**
+* Adds the site the user is on to the whitelist
+* Whitelisted sites do not get filtered
+* @param {string} site Site url to add to whitelist
+*/
+function addToWhitelist() {
+ let site;
+ browser.tabs.query({active: true, currentWindow: true}, function(tabs) { // Couldn't figure out how to access currentUrl var
+ site = tabs[0].url; // So this is used instead
+ });
+ browser.runtime.sendMessage({
+ function: "getData",
+ params: ['whitelist']
+ }).then((data) => {
+ let domain = site.replace(/.*?:(?:\/\/)?(.*?\/).*/, '$1')
+ data.response.push(domain)
+ browser.runtime.sendMessage({
+ function: "setData",
+ params: ['whitelist', data.response]
+ }).catch(handleError);
+ }).catch(handleError);
+}
+
/**
* Reset the global statistic
*/
@@ -191,6 +214,7 @@ function resetGlobalCounter(){
.then(() => loadData("getCurrentURL", "currentURL"))
.then(() => {
init();
+ document.getElementById('whitelist_btn').onclick = addToWhitelist;
document.getElementById('reset_counter_btn').onclick = resetGlobalCounter;
changeSwitchButton("globalStatus", "globalStatus");
changeSwitchButton("tabcounter", "badgedStatus");
@@ -220,6 +244,7 @@ function setText()
injectText('configs_switch_filter','popup_html_configs_switch_filter');
injectText('configs_head','popup_html_configs_head');
injectText('configs_switch_statistics','configs_switch_statistics');
+ injectText('whitelist_btn','popup_html_configs_whitelist_button');
document.getElementById('donate').title = translate('donate_button');
}
diff --git a/core_js/storage.js b/core_js/storage.js
index ccfb980..f6e210c 100644
--- a/core_js/storage.js
+++ b/core_js/storage.js
@@ -216,6 +216,7 @@ function initSettings() {
storage.badged_color = "#ffa500";
storage.hashURL = "https://rules2.clearurls.xyz/rules.minify.hash";
storage.ruleURL = "https://rules2.clearurls.xyz/data.minify.json";
+ storage.whitelist = []; // TODO: If we do whitelist per rule, this needs to be obj
storage.contextMenuEnabled = true;
storage.historyListenerEnabled = true;
storage.localHostsSkipping = true;
diff --git a/html/popup.html b/html/popup.html
index e0e3f1b..8246f4d 100644
--- a/html/popup.html
+++ b/html/popup.html
@@ -87,6 +87,7 @@ along with this program. If not, see
+
+
+
From da90e259bb14564aadc22e4ee54cc6ddb905b067 Mon Sep 17 00:00:00 2001
From: Banaanae <83927639+Banaanae@users.noreply.github.com>
Date: Tue, 25 Jun 2024 18:54:19 +1000
Subject: [PATCH 3/6] handle url better; fix saving when edited
... via settings
---
core_js/popup.js | 3 ++-
core_js/settings.js | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/core_js/popup.js b/core_js/popup.js
index 128b253..561d95b 100644
--- a/core_js/popup.js
+++ b/core_js/popup.js
@@ -168,7 +168,8 @@ function addToWhitelist() {
function: "getData",
params: ['whitelist']
}).then((data) => {
- let domain = site.replace(/.*?:(?:\/\/)?(.*?\/).*/, '$1')
+ let siteUrl = new URL(site)
+ let domain = siteUrl.hostname
data.response.push(domain)
browser.runtime.sendMessage({
function: "setData",
diff --git a/core_js/settings.js b/core_js/settings.js
index dbb2493..bf97b84 100644
--- a/core_js/settings.js
+++ b/core_js/settings.js
@@ -82,7 +82,7 @@ function save() {
saveData("badged_color", pickr.getColor().toHEXA().toString())
.then(() => saveData("ruleURL", document.querySelector('input[name=ruleURL]').value))
.then(() => saveData("hashURL", document.querySelector('input[name=hashURL]').value))
- .then(() => saveData("whitelist", document.querySelector('input[name=whitelist]').value))
+ .then(() => saveData("whitelist", document.querySelector('input[name=whitelist]').value.split(',')))
.then(() => saveData("types", document.querySelector('input[name=types]').value))
.then(() => saveData("logLimit", Math.max(0, Math.min(5000, document.querySelector('input[name=logLimit]').value))))
.then(() => browser.runtime.sendMessage({
From 81eb931e0262adbb4df97fd074f232fd6db93937 Mon Sep 17 00:00:00 2001
From: Banaanae <83927639+Banaanae@users.noreply.github.com>
Date: Wed, 26 Jun 2024 14:09:14 +1000
Subject: [PATCH 4/6] fix styling; allow removing of sites
still needs to update after press
---
_locales/en/messages.json | 6 ++++-
core_js/popup.js | 54 +++++++++++++++++++++++++++++++++++----
html/popup.html | 4 ++-
3 files changed, 57 insertions(+), 7 deletions(-)
diff --git a/_locales/en/messages.json b/_locales/en/messages.json
index 6fa6fea..ebb949f 100644
--- a/_locales/en/messages.json
+++ b/_locales/en/messages.json
@@ -87,10 +87,14 @@
"message": "Show numbers of cleaned urls",
"description": "This string is used as title for the badges switch button on the popup page."
},
- "popup_html_configs_whitelist_button": {
+ "popup_html_configs_whitelist_button_add": {
"message": "Whitelist Site",
"description": "This string is used as name for the whitelist button on the popup page."
},
+ "popup_html_configs_whitelist_button_remove": {
+ "message": "Remove from Whitelist",
+ "description": "This string is used as name for the whitelist button on the popup page."
+ },
"popup_html_statistics_head": {
"message": "Statistics",
"description": "This string is used as title for the statistics on the popup page."
diff --git a/core_js/popup.js b/core_js/popup.js
index 561d95b..7fa904c 100644
--- a/core_js/popup.js
+++ b/core_js/popup.js
@@ -62,6 +62,40 @@ function changeStatistics()
elTotal.textContent = totalCounter.toLocaleString();
}
+/**
+* Set the whitelist button text
+*/
+function setWhitelistText()
+{
+ let element = document.getElementById('whitelist_btn');
+ let currentSite;
+ browser.tabs.query({active: true, currentWindow: true}, function(tabs) {
+ currentSite = tabs[0].url;
+ });
+
+ browser.runtime.sendMessage({
+ function: "getData",
+ params: ['whitelist']
+ }).then((data) => {
+ data.response.forEach(site => {
+ console.log(currentSite.indexOf(site))
+ if (currentSite.indexOf(site) == -1) {
+ element.textContent = translate('popup_html_configs_whitelist_button_add')
+ document.getElementById('whitelist_btn').onclick = changeWhitelist;
+ element.classList.replace('btn-danger', 'btn-primary')
+ } else {
+ element.textContent = translate('popup_html_configs_whitelist_button_remove')
+ document.getElementById('whitelist_btn').onclick = () => {changeWhitelist(true)};
+ element.classList.replace('btn-primary', 'btn-danger')
+ }
+ });
+ if (data.response.length == 0) {
+ element.textContent = translate('popup_html_configs_whitelist_button_add')
+ document.getElementById('whitelist_btn').onclick = changeWhitelist;
+ }
+ }).catch(handleError);
+}
+
/**
* Set the value for the hashStatus on startUp.
*/
@@ -156,10 +190,15 @@ function setSwitchButton(id, varname)
}
/**
-* Adds the site the user is on to the whitelist
+* Adds (or removes) the site the user is on to the whitelist
* Whitelisted sites do not get filtered
+* @param {boolean} remove If true remove current site instead of adding
*/
-function addToWhitelist() {
+function changeWhitelist(removeWl = false) {
+ if (removeWl != true) { // Handle click obj
+ removeWl = false
+ }
+ console.log('call')
let site;
browser.tabs.query({active: true, currentWindow: true}, function(tabs) { // Couldn't figure out how to access currentUrl var
site = tabs[0].url; // So this is used instead
@@ -170,12 +209,18 @@ function addToWhitelist() {
}).then((data) => {
let siteUrl = new URL(site)
let domain = siteUrl.hostname
- data.response.push(domain)
+ console.log(removeWl)
+ if (removeWl == false) {
+ data.response.push(domain)
+ } else {
+ data.response = data.response.filter(wlSite => wlSite != domain)
+ }
browser.runtime.sendMessage({
function: "setData",
params: ['whitelist', data.response]
}).catch(handleError);
}).catch(handleError);
+ setWhitelistText();
}
/**
@@ -214,7 +259,6 @@ function resetGlobalCounter(){
.then(() => loadData("getCurrentURL", "currentURL"))
.then(() => {
init();
- document.getElementById('whitelist_btn').onclick = addToWhitelist;
document.getElementById('reset_counter_btn').onclick = resetGlobalCounter;
changeSwitchButton("globalStatus", "globalStatus");
changeSwitchButton("tabcounter", "badgedStatus");
@@ -244,7 +288,7 @@ function setText()
injectText('configs_switch_filter','popup_html_configs_switch_filter');
injectText('configs_head','popup_html_configs_head');
injectText('configs_switch_statistics','configs_switch_statistics');
- injectText('whitelist_btn','popup_html_configs_whitelist_button');
+ setWhitelistText();
document.getElementById('donate').title = translate('donate_button');
}
diff --git a/html/popup.html b/html/popup.html
index 8246f4d..1d4d044 100644
--- a/html/popup.html
+++ b/html/popup.html
@@ -86,8 +86,10 @@ along with this program. If not, see