diff --git a/README.md b/README.md index 83a346a..86bac56 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ Medium => [Scribe](https://sr.ht/~edwardloveall/scribe/) - open `about:config` - set `xpinstall.signatures.required` to `false` - open `about:addons` -- click on the settings button below the addon search bar and select install add-on from file +- click on the gear shaped `settings` button and select `Install Add-on From File...` - select `libredirect-VERSION.zip` from `web-ext-artifacts` folder ### Install in Chromium, Brave and Chrome diff --git a/src/assets/javascripts/helpers/common.js b/src/assets/javascripts/helpers/common.js index 5f9e14d..34539e6 100644 --- a/src/assets/javascripts/helpers/common.js +++ b/src/assets/javascripts/helpers/common.js @@ -7,9 +7,6 @@ import redditHelper from "./reddit.js"; import searchHelper from "./search.js"; import translateHelper from "./translate.js"; import wikipediaHelper from "./wikipedia.js"; -import mapsHelper from "./maps.js"; -import medium from "./medium.js"; - function getRandomInstance(instances) { return instances[~~(instances.length * Math.random())]; diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js index 27fec5d..08b3e52 100644 --- a/src/assets/javascripts/helpers/reddit.js +++ b/src/assets/javascripts/helpers/reddit.js @@ -17,44 +17,29 @@ let redirects = { "normal": [ "https://libredd.it", "https://libreddit.spike.codes", - "https://libreddit.kavin.rocks", - "https://libreddit.insanity.wtf", "https://libreddit.dothq.co", + "https://libreddit.kavin.rocks", + "https://libreddit.bcow.xyz", + "https://libreddit.40two.app", + "https://reddit.invak.id", + "https://reddit.phii.me", + "https://lr.riverside.rocks", "https://libreddit.silkky.cloud", - "https://reddit.artemislena.eu", - "https://reddit.git-bruh.duckdns.org", + "https://libreddit.database.red", + "https://libreddit.exonip.de", + "https://libreddit.domain.glass", + ], + "tor": [ + "http://spjmllawtheisznfs7uryhxumin26ssv2draj7oope3ok3wuhy43eoyd.onion", + "http://fwhhsbrbltmrct5hshrnqlqygqvcgmnek3cnka55zj4y7nuus5muwyyd.onion", + "http://dflv6yjt7il3n3tggf4qhcmkzbti2ppytqx3o7pjrzwgntutpewscyid.onion", + "http://kphht2jcflojtqte4b4kyx7p2ahagv4debjj32nre67dxz7y57seqwyd.onion", ] }, // old UI "teddit": { - "normal": [ - "https://teddit.net", - "https://teddit.ggc-project.de", - "https://teddit.kavin.rocks", - "https://teddit.zaggy.nl", - "https://teddit.namazso.eu", - "https://teddit.nautolan.racing", - "https://teddit.tinfoil-hat.net", - "https://teddit.domain.glass", - "https://snoo.ioens.is", - "https://teddit.httpjames.space", - "https://teddit.alefvanoon.xyz", - "https://incogsnoo.com", - "https://teddit.pussthecat.org", - "https://reddit.lol", - "https://teddit.sethforprivacy.com", - "https://teddit.totaldarkness.net", - "https://teddit.adminforge.de", - "https://teddit.bus-hit.me" - ], - "tor": [ - "http://teddit4w6cmzmj5kimhfcavs7yo5s7alszvsi2khqutqtlaanpcftfyd.onion", - "http://snoo.ioensistjs7wd746zluwixvojbbkxhr37lepdvwtdfeav673o64iflqd.onion", - "http://ibarajztopxnuhabfu7fg6gbudynxofbnmvis3ltj6lfx47b6fhrd5qd.onion", - "http://tedditfyn6idalzso5wam5qd3kdtxoljjhbrbbx34q2xkcisvshuytad.onion", - "http://dawtyi5e2cfyfmoht4izmczi42aa2zwh6wi34zwvc6rzf2acpxhrcrad.onion", - "http://qtpvyiaqhmwccxwzsqubd23xhmmrt75tdyw35kp43w4hvamsgl3x27ad.onion" - ] + "normal": [], + "tor": [] }, "desktop": "https://old.reddit.com", // desktop "mobile": "https://i.reddit.com", // mobile @@ -63,10 +48,12 @@ const getRedirects = () => redirects; const getCustomRedirects = function () { return { "libreddit": { - "normal": [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects] + "normal": [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects], + "tor": [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects] }, "teddit": { - "normal": [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects] + "normal": [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects], + "tor": [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects] } }; }; @@ -81,6 +68,13 @@ function setLibredditRedirects(val) { if (index !== -1) libredditNormalRedirectsChecks.splice(index, 1); } setLibredditNormalRedirectsChecks(libredditNormalRedirectsChecks); + + for (const item of libredditTorRedirectsChecks) + if (!redirects.libreddit.normal.includes(item)) { + var index = libredditTorRedirectsChecks.indexOf(item); + if (index !== -1) libredditTorRedirectsChecks.splice(index, 1); + } + setLibredditTorRedirectsChecks(libredditTorRedirectsChecks); } function setTedditRedirects(val) { @@ -93,8 +87,14 @@ function setTedditRedirects(val) { if (index !== -1) tedditNormalRedirectsChecks.splice(index, 1); } setTedditNormalRedirectsChecks(tedditNormalRedirectsChecks); -} + for (const item of tedditTorRedirectsChecks) + if (!redirects.teddit.normal.includes(item)) { + var index = tedditTorRedirectsChecks.indexOf(item); + if (index !== -1) tedditTorRedirectsChecks.splice(index, 1); + } + setTedditTorRedirectsChecks(tedditTorRedirectsChecks); +} let libredditNormalRedirectsChecks; const getLibredditNormalRedirectsChecks = () => libredditNormalRedirectsChecks; @@ -104,6 +104,14 @@ function setLibredditNormalRedirectsChecks(val) { console.log("libredditNormalRedirectsChecks: ", val) } +let libredditTorRedirectsChecks; +const getLibredditTorRedirectsChecks = () => libredditTorRedirectsChecks; +function setLibredditTorRedirectsChecks(val) { + libredditTorRedirectsChecks = val; + browser.storage.local.set({ libredditTorRedirectsChecks }) + console.log("libredditTorRedirectsChecks: ", val) +} + let libredditNormalCustomRedirects = []; const getLibredditNormalCustomRedirects = () => libredditNormalCustomRedirects; function setLibredditNormalCustomRedirects(val) { @@ -112,6 +120,14 @@ function setLibredditNormalCustomRedirects(val) { console.log("libredditNormalCustomRedirects: ", val) } +let libredditTorCustomRedirects = []; +const getLibredditTorCustomRedirects = () => libredditTorCustomRedirects; +function setLibredditTorCustomRedirects(val) { + libredditTorCustomRedirects = val; + browser.storage.local.set({ libredditTorCustomRedirects }) + console.log("libredditTorCustomRedirects: ", val) +} + let tedditNormalRedirectsChecks; const getTedditNormalRedirectsChecks = () => tedditNormalRedirectsChecks; function setTedditNormalRedirectsChecks(val) { @@ -120,6 +136,14 @@ function setTedditNormalRedirectsChecks(val) { console.log("tedditNormalRedirectsChecks: ", val) } +let tedditTorRedirectsChecks; +const getTedditTorRedirectsChecks = () => tedditTorRedirectsChecks; +function setTedditTorRedirectsChecks(val) { + tedditTorRedirectsChecks = val; + browser.storage.local.set({ tedditTorRedirectsChecks }) + console.log("tedditTorRedirectsChecks: ", val) +} + let tedditNormalCustomRedirects = []; const getTedditNormalCustomRedirects = () => tedditNormalCustomRedirects; function setTedditNormalCustomRedirects(val) { @@ -128,6 +152,14 @@ function setTedditNormalCustomRedirects(val) { console.log("tedditNormalCustomRedirects: ", val) } +let tedditTorCustomRedirects = []; +const getTedditTorCustomRedirects = () => tedditTorCustomRedirects; +function setTedditTorCustomRedirects(val) { + tedditTorCustomRedirects = val; + browser.storage.local.set({ tedditTorCustomRedirects }) + console.log("tedditTorCustomRedirects: ", val) +} + const bypassPaths = /\/(gallery\/poll\/rpan\/settings\/topics)/; let disableReddit; @@ -144,6 +176,15 @@ function setRedditFrontend(val) { browser.storage.local.set({ redditFrontend }) }; +let protocol; +const getprotocol = () => protocol; +function setProtocol(val) { + protocol = val; + browser.storage.local.set({ redditProtocol: val }) + console.log("redditProtocol: ", val) +} + + function isReddit(url, initiator) { if ( initiator && @@ -161,8 +202,15 @@ function redirect(url, type) { if (type !== "main_frame" || url.pathname.match(bypassPaths)) return null; - let libredditInstancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]; - let tedditInstancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]; + let libredditInstancesList; + let tedditInstancesList; + if (protocol == 'normal') { + libredditInstancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]; + tedditInstancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]; + } else if (protocol == 'tor') { + libredditInstancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]; + tedditInstancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]; + } if (url.host === "i.redd.it") { if (libredditInstancesList.length === 0) return null; @@ -207,31 +255,52 @@ function redirect(url, type) { async function init() { return new Promise((resolve) => { - browser.storage.local.get( - [ - "disableReddit", - "redditFrontend", - "redditRedirects", - "libredditNormalRedirectsChecks", - "libredditNormalCustomRedirects", - "tedditNormalRedirectsChecks", - "tedditNormalCustomRedirects", - ], (result) => { - disableReddit = result.disableReddit ?? false; - redditFrontend = result.redditFrontend ?? 'libreddit'; - if (result.redditRedirects) - redirects = result.redditRedirects; + fetch('/instances/data.json').then(response => response.text()).then(data => { + let dataJson = JSON.parse(data); + browser.storage.local.get( + [ + "disableReddit", + "redditFrontend", + "redditRedirects", - libredditNormalRedirectsChecks = result.libredditNormalRedirectsChecks ?? [...redirects.libreddit.normal]; - libredditNormalCustomRedirects = result.libredditNormalCustomRedirects ?? []; + "libredditNormalRedirectsChecks", + "libredditNormalCustomRedirects", + "libredditTorRedirectsChecks", + "libredditTorCustomRedirects", - tedditNormalRedirectsChecks = result.tedditNormalRedirectsChecks ?? [...redirects.teddit.normal]; - tedditNormalCustomRedirects = result.tedditNormalCustomRedirects ?? []; + "tedditNormalRedirectsChecks", + "tedditNormalCustomRedirects", + "tedditTorRedirectsChecks", + "tedditTorCustomRedirects", - resolve(); - } - ) - }) + "redditProtocol", + ], (result) => { + disableReddit = result.disableReddit ?? false; + protocol = result.redditProtocol ?? 'normal'; + redditFrontend = result.redditFrontend ?? 'libreddit'; + + redirects.teddit = dataJson.teddit; + if (result.redditRedirects) redirects = result.redditRedirects; + + if (result.redditRedirects) redirects = result.redditRedirects; + + libredditNormalRedirectsChecks = result.libredditNormalRedirectsChecks ?? [...redirects.libreddit.normal]; + libredditNormalCustomRedirects = result.libredditNormalCustomRedirects ?? []; + + libredditTorRedirectsChecks = result.libredditTorRedirectsChecks ?? [...redirects.libreddit.tor]; + libredditTorCustomRedirects = result.libredditTorCustomRedirects ?? []; + + tedditNormalRedirectsChecks = result.tedditNormalRedirectsChecks ?? [...redirects.teddit.normal]; + tedditNormalCustomRedirects = result.tedditNormalCustomRedirects ?? []; + + tedditTorRedirectsChecks = result.tedditTorRedirectsChecks ?? [...redirects.teddit.tor]; + tedditTorCustomRedirects = result.tedditTorCustomRedirects ?? []; + + resolve(); + } + ); + }); + }); } export default { @@ -247,17 +316,28 @@ export default { getRedditFrontend, setRedditFrontend, + getprotocol, + setProtocol, + getLibredditNormalRedirectsChecks, setLibredditNormalRedirectsChecks, + getLibredditTorRedirectsChecks, + setLibredditTorRedirectsChecks, getLibredditNormalCustomRedirects, setLibredditNormalCustomRedirects, + getLibredditTorCustomRedirects, + setLibredditTorCustomRedirects, getTedditNormalRedirectsChecks, setTedditNormalRedirectsChecks, + getTedditTorRedirectsChecks, + setTedditTorRedirectsChecks, getTedditNormalCustomRedirects, setTedditNormalCustomRedirects, + getTedditTorCustomRedirects, + setTedditTorCustomRedirects, redirect, isReddit, diff --git a/src/assets/javascripts/helpers/search.js b/src/assets/javascripts/helpers/search.js index 07bb20b..caa0399 100644 --- a/src/assets/javascripts/helpers/search.js +++ b/src/assets/javascripts/helpers/search.js @@ -153,7 +153,7 @@ function setProtocol(val) { console.log("searchProtocol: ", val) } -function isSearch(url, initiator) { +function isSearch(url) { if (disable) return false; return targets.some((rx) => rx.test(url.href)); } diff --git a/src/pages/background/background.js b/src/pages/background/background.js index d8351d5..dced348 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -65,7 +65,7 @@ browser.webRequest.onBeforeRequest.addListener( else if (translateHelper.isTranslate(url, initiator)) newUrl = translateHelper.redirect(url); - else if (searchHelper.isSearch(url, initiator)) newUrl = searchHelper.redirect(url) + else if (searchHelper.isSearch(url)) newUrl = searchHelper.redirect(url) else if (wikipediaHelper.isWikipedia(url, initiator)) newUrl = wikipediaHelper.redirect(url); diff --git a/src/pages/options/reddit/reddit.html b/src/pages/options/reddit/reddit.html index 98ec675..2c44f02 100644 --- a/src/pages/options/reddit/reddit.html +++ b/src/pages/options/reddit/reddit.html @@ -2,190 +2,247 @@ - - - - - - LibRedirect Options: Reddit + + + + + + LibRedirect Options: Reddit - + d="M19,5v14H5V5H19 M19,3H5C3.9,3,3,3.9,3,5v14c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V5C21,3.9,20.1,3,19,3L19,3z" /> + + + + + Medium + + -
+
+
+

Enable

+ +
+ +
+

Frontend

+ +
+ +
+

Protocol

+ +
+ +
+ +
+ +
-

Enable

- +

Default Instances

- - - -
-

Frontend

- +
-
- -
-
-

Default Instances

-
-
-
-
-
-

Custom Instances

-
-
-
- - -
-
-
+
+

Custom Instances

+
+
+ + +
+
+
+
-
-
-

Default Instances

-
-
-
-
-
-

Custom Instances

-
-
-
- - -
-
-
+
+
+

Default Instances

-
+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+ - - - + + +
+ +
+
+

Default Instances

+
+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+

Default Instances

+
+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+
+
+ + + + - + \ No newline at end of file diff --git a/src/pages/options/reddit/reddit.js b/src/pages/options/reddit/reddit.js index 52f3245..c682c3f 100644 --- a/src/pages/options/reddit/reddit.js +++ b/src/pages/options/reddit/reddit.js @@ -28,6 +28,36 @@ redditFrontendElement.addEventListener("change", } ); +let protocolElement = document.getElementById("protocol") +protocolElement.addEventListener("change", + (event) => { + let protocol = event.target.options[protocolElement.selectedIndex].value + redditHelper.setProtocol(protocol); + changeProtocolSettings(protocol); + } +); + +function changeProtocolSettings(protocol) { + let normalLibredditDiv = document.getElementById("libreddit-normal"); + let torLibredditDiv = document.getElementById("libreddit-tor"); + + let normalTedditDiv = document.getElementById("teddit-normal"); + let torTedditDiv = document.getElementById("teddit-tor"); + if (protocol == 'normal') { + normalLibredditDiv.style.display = 'block'; + normalTedditDiv.style.display = 'block'; + torTedditDiv.style.display = 'none'; + torLibredditDiv.style.display = 'none'; + } + else if (protocol == 'tor') { + normalLibredditDiv.style.display = 'none'; + normalTedditDiv.style.display = 'none'; + torTedditDiv.style.display = 'block'; + torLibredditDiv.style.display = 'block'; + } +} + + redditHelper.init().then(() => { disableRedditElement.checked = !redditHelper.getDisableReddit(); @@ -35,6 +65,10 @@ redditHelper.init().then(() => { redditFrontendElement.value = frontend; changeFrontendsSettings(frontend); + let protocol = redditHelper.getprotocol(); + protocolElement.value = protocol; + changeProtocolSettings(protocol); + commonHelper.processDefaultCustomInstances( 'libreddit', 'normal', @@ -46,6 +80,17 @@ redditHelper.init().then(() => { redditHelper.setLibredditNormalCustomRedirects ) + commonHelper.processDefaultCustomInstances( + 'libreddit', + 'tor', + redditHelper, + document, + redditHelper.getLibredditTorRedirectsChecks, + redditHelper.setLibredditTorRedirectsChecks, + redditHelper.getLibredditTorCustomRedirects, + redditHelper.setLibredditTorCustomRedirects + ) + commonHelper.processDefaultCustomInstances( 'teddit', 'normal', @@ -57,4 +102,15 @@ redditHelper.init().then(() => { redditHelper.setTedditNormalCustomRedirects ); + commonHelper.processDefaultCustomInstances( + 'teddit', + 'tor', + redditHelper, + document, + redditHelper.getTedditTorRedirectsChecks, + redditHelper.setTedditTorRedirectsChecks, + redditHelper.getTedditTorCustomRedirects, + redditHelper.setTedditTorCustomRedirects + ); + }) \ No newline at end of file