From 4511ad314f17eee664b3080aea618739e4a4cfd0 Mon Sep 17 00:00:00 2001 From: anonion Date: Mon, 1 Jan 2024 13:56:55 -0700 Subject: [PATCH] Add Chrome support (#15) * add chrome support * fix alarms * Add tkqlhce.com (#12) * add tkqlhce.com * add match at beginning of regex * formatting * set config needs to come first * still need background.scripts for firefox * need full path * add onStartup listener to ensure alarm is created * set time to 60 * add manifest specific to chrome and bump version --- html/popup.html | 3 +-- js/background.js | 24 +++++++++++++++++++++--- js/content.js | 2 +- js/popup.js | 6 ++++-- js/utils.js | 17 ++++++++++------- manifest-chrome.json | 23 +++++++++++++++++++++++ manifest.json | 9 +++++---- 7 files changed, 65 insertions(+), 19 deletions(-) create mode 100644 manifest-chrome.json diff --git a/html/popup.html b/html/popup.html index 8dce9ff..e564acd 100644 --- a/html/popup.html +++ b/html/popup.html @@ -4,13 +4,12 @@ rfd-redirect-stripper - Config URL: - + diff --git a/js/background.js b/js/background.js index b64cec4..e015926 100644 --- a/js/background.js +++ b/js/background.js @@ -1,6 +1,24 @@ -chrome.runtime.onInstalled.addListener(() => { +import { updateRedirects, setDefaultConfig } from "../js/utils.js" + +function setAlarm() { + chrome.alarms.get('update-redirects', alarm => { + if (!alarm) { + chrome.alarms.create('update-redirects', { periodInMinutes: 60 }); + } + }); +} + +chrome.alarms.onAlarm.addListener(() => { updateRedirects(); - setDefaultConfig(); }); -setInterval(updateRedirects, 1 * 60 * 60 * 1000); +chrome.runtime.onInstalled.addListener(() => { + setDefaultConfig(); + updateRedirects(); + setAlarm(); +}); + +//Ensure alarm is created +chrome.runtime.onStartup.addListener(() => { + setAlarm(); +}); \ No newline at end of file diff --git a/js/content.js b/js/content.js index 5f9661f..9a782c2 100644 --- a/js/content.js +++ b/js/content.js @@ -20,7 +20,7 @@ function stripRedirect(URL, redirectRegex) { function stripRedirects() { var Links = document.querySelectorAll("a.postlink, a.autolinker_link"); - browser.storage.local.get("redirects", function (result) { + chrome.storage.local.get("redirects", function (result) { Links.forEach(function (Link) { var ReferralURL = Link.href; Link.href = stripRedirect(ReferralURL, result["redirects"]); diff --git a/js/popup.js b/js/popup.js index e8a1cc5..2b88c2f 100644 --- a/js/popup.js +++ b/js/popup.js @@ -1,3 +1,5 @@ +import { updateRedirects, setDefaultConfig } from "../js/utils.js" + const inputField = document.getElementById("input-field"); const saveButton = document.getElementById("save-button"); const resetButton = document.getElementById("reset-button"); @@ -5,7 +7,7 @@ const resetButton = document.getElementById("reset-button"); const defaultConfig = "https://raw.githubusercontent.com/davegallant/rfd-redirect-stripper/main/redirects.json"; -browser.storage.local.get("config").then((result) => { +chrome.storage.local.get("config").then((result) => { const value = result.config; if (value) { inputField.value = value; @@ -14,7 +16,7 @@ browser.storage.local.get("config").then((result) => { saveButton.addEventListener("click", () => { const value = inputField.value; - browser.storage.local.set({ config: value }); + chrome.storage.local.set({ config: value }); updateRedirects(); }); diff --git a/js/utils.js b/js/utils.js index 4b70eff..68d6a1a 100644 --- a/js/utils.js +++ b/js/utils.js @@ -1,22 +1,25 @@ -function updateRedirects() { - browser.storage.local.get("config", function (URL) { +export function updateRedirects() { + chrome.storage.local.get("config", function (URL) { fetch(URL.config) .then((res) => res.json()) .then((res) => { - browser.storage.local + chrome.storage.local .set({ redirects: res, }) .catch((error) => { console.log(error); }); + }) + .catch((error) => { + console.log(error); }); }); } -function setDefaultConfig() { - browser.storage.local.set({ +export function setDefaultConfig() { + chrome.storage.local.set({ config: - "https://raw.githubusercontent.com/davegallant/rfd-redirect-stripper/main/redirects.json", + "https://raw.githubusercontent.com/davegallant/rfd-redirect-stripper/main/redirects.json", }); -} +} \ No newline at end of file diff --git a/manifest-chrome.json b/manifest-chrome.json new file mode 100644 index 0000000..38d097c --- /dev/null +++ b/manifest-chrome.json @@ -0,0 +1,23 @@ +{ + "manifest_version": 3, + "name": "rfd-redirect-stripper", + "description": "Strip tracking redirects on rfd", + "version": "0.2", + "content_scripts": [ + { + "matches": ["*://forums.redflagdeals.com/*"], + "js": ["js/content.js"], + "run_at": "document_end" + } + ], + "action": { + "default_icon": "icon.png", + "default_popup": "html/popup.html" + }, + "background": { + "service_worker": "js/background.js", + "type": "module" + }, + "permissions": ["scripting", "storage", "alarms"], + "host_permissions": ["*://forums.redflagdeals.com/*"] +} diff --git a/manifest.json b/manifest.json index 0a605bf..5aa4a4a 100644 --- a/manifest.json +++ b/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 3, "name": "rfd-redirect-stripper", "description": "Strip tracking redirects on rfd", - "version": "0.1", + "version": "0.2", "content_scripts": [ { "matches": ["*://forums.redflagdeals.com/*"], @@ -15,14 +15,15 @@ "default_popup": "html/popup.html" }, "background": { - "scripts": ["js/utils.js", "js/background.js"] + "scripts": [ "js/background.js" ], + "type": "module" }, - "permissions": ["scripting", "storage"], + "permissions": ["scripting", "storage", "alarms"], "host_permissions": ["*://forums.redflagdeals.com/*"], "browser_specific_settings": { "gecko": { "id": "davegallant@gmail.com", - "strict_min_version": "42.0" + "strict_min_version": "112.0" } } }