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] 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 .

+