diff --git a/src/assets/javascripts/helpers/imgur.js b/src/assets/javascripts/helpers/imgur.js new file mode 100644 index 00000000..f3f82967 --- /dev/null +++ b/src/assets/javascripts/helpers/imgur.js @@ -0,0 +1,114 @@ +import commonHelper from './common.js' + +const targets = [ + /^https?:\/\/(i|).?imgur.com/ +]; + +let redirects = { + "rimgo": { + "normal": [ + "https://i.bcow.xyz", + "https://rimgo.bcow.xyz", + "https://rimgo.pussthecat.org", + "https://img.riverside.rocks", + "https://rimgo.totaldarkness.net", + "https://rimgo.bus-hit.me" + ], + "onion": [ + "http://l4d4owboqr6xcmd6lf64gbegel62kbudu3x3jnldz2mx6mhn3bsv3zyd.onion", + "http://jx3dpcwedpzu2mh54obk5gvl64i2ln7pt5mrzd75s4jnndkqwzaim7ad.onion" + ] + } +} + +const getRedirects = () => redirects; +function setRedirects(val) { + redirects.rimgo = val; + browser.storage.sync.set({ imgurRedirects: redirects }) + console.log("imgurRedirects: ", val) + for (const item of rimgoRedirectsChecks) + if (!redirects.rimgo.normal.includes(item)) { + var index = rimgoRedirectsChecks.indexOf(item); + if (index !== -1) rimgoRedirectsChecks.splice(index, 1); + } + setRimgoRedirectsChecks(rimgoRedirectsChecks); +} + +let rimgoRedirectsChecks; +const getRimgoRedirectsChecks = () => rimgoRedirectsChecks; +function setRimgoRedirectsChecks(val) { + rimgoRedirectsChecks = val; + browser.storage.sync.set({ rimgoRedirectsChecks }) + console.log("rimgoRedirectsChecks: ", val) +} + +let rimgoCustomRedirects = []; +const getRimgoCustomRedirects = () => rimgoCustomRedirects; +function setRimgoCustomRedirects(val) { + rimgoCustomRedirects = val; + browser.storage.sync.set({ rimgoCustomRedirects }) + console.log("rimgoCustomRedirects: ", val) +} + +let disableImgur; +const getDisableImgur = () => disableImgur; +function setDisableImgur(val) { + disableImgur = val; + browser.storage.sync.set({ disableImgur }) +} + +function redirect(url, initiator, type) { + + if (disableImgur) return null; + + if (url.pathname == "/") return null; + + if (type != "main_frame" && "sub_frame" && "xmlhttprequest" && "other") return null; + + let instancesList = [...rimgoRedirectsChecks, ...rimgoCustomRedirects]; + if (instancesList.length === 0) return null; + let randomInstance = commonHelper.getRandomInstance(instancesList) + + if (initiator && (instancesList.includes(initiator.origin) || targets.includes(initiator.host))) return null; + + return `${randomInstance}${url.pathname}${url.search}`; +} + +function isImgur(url) { + return targets.some((rx) => rx.test(url.href)); +} + +async function init() { + let result = await browser.storage.sync.get([ + "disableImgur", + "imgurRedirects", + "rimgoRedirectsChecks", + "rimgoCustomRedirects", + ]) + disableImgur = result.disableImgur ?? false; + if (result.imgurRedirects) + redirects = result.imgurRedirects; + + rimgoRedirectsChecks = result.rimgoRedirectsChecks ?? [...redirects.rimgo.normal]; + rimgoCustomRedirects = result.rimgoCustomRedirects ?? []; +} + +export default { + targets, + + getRedirects, + setRedirects, + + getDisableImgur, + setDisableImgur, + + getRimgoRedirectsChecks, + setRimgoRedirectsChecks, + + getRimgoCustomRedirects, + setRimgoCustomRedirects, + + redirect, + isImgur, + init, +}; diff --git a/src/assets/javascripts/helpers/medium.js b/src/assets/javascripts/helpers/medium.js index bc5455f4..348313bb 100644 --- a/src/assets/javascripts/helpers/medium.js +++ b/src/assets/javascripts/helpers/medium.js @@ -89,7 +89,7 @@ function redirect(url, initiator, type) { } function isMedium(url) { - return targets.some((rx) => rx.test(url.href)); + return targets.some((rx) => rx.test(url.host)); } async function init() { diff --git a/src/assets/javascripts/helpers/rimgo.js b/src/assets/javascripts/helpers/rimgo.js deleted file mode 100644 index 829dd230..00000000 --- a/src/assets/javascripts/helpers/rimgo.js +++ /dev/null @@ -1,14 +0,0 @@ -let redirects = { - "normal": [ - "https://i.bcow.xyz", - "https://rimgo.bcow.xyz", - "https://rimgo.pussthecat.org", - "https://img.riverside.rocks", - "https://rimgo.totaldarkness.net", - "https://rimgo.bus-hit.me" - ], - "onion": [ - "http://l4d4owboqr6xcmd6lf64gbegel62kbudu3x3jnldz2mx6mhn3bsv3zyd.onion", - "http://jx3dpcwedpzu2mh54obk5gvl64i2ln7pt5mrzd75s4jnndkqwzaim7ad.onion" - ] -} \ No newline at end of file diff --git a/src/pages/background/background.js b/src/pages/background/background.js index 7ed4c8e7..e9d2f395 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -9,6 +9,7 @@ import translateHelper from "../../assets/javascripts/helpers/translate.js"; import mapsHelper from "../../assets/javascripts/helpers/maps.js"; import wikipediaHelper from "../../assets/javascripts/helpers/wikipedia.js"; import mediumHelper from "../../assets/javascripts/helpers/medium.js"; +import imgurHelper from "../../assets/javascripts/helpers/imgur.js"; window.browser = window.browser || window.chrome; @@ -22,6 +23,7 @@ function wholeInit() { twitterHelper.init() wikipediaHelper.init() youtubeHelper.init() + imgurHelper.init() } wholeInit(); @@ -51,6 +53,8 @@ browser.webRequest.onBeforeRequest.addListener( else if (mediumHelper.isMedium(url)) newUrl = mediumHelper.redirect(url, initiator, details.type); + else if (imgurHelper.isImgur(url)) newUrl = imgurHelper.redirect(url, initiator, details.type); + else if (translateHelper.isTranslate(url)) newUrl = translateHelper.redirect(url, initiator); else if (searchHelper.isSearch(url)) newUrl = searchHelper.redirect(url, initiator) @@ -92,24 +96,25 @@ browser.tabs.onUpdated.addListener((tabId, changeInfo, _) => { mightyList.push( ...youtubeHelper.getRedirects().invidious.normal, ...youtubeHelper.getRedirects().piped.normal, - + ...twitterHelper.getRedirects().nitter.normal, ...instagramHelper.getRedirects().bibliogram.normal, - + ...redditHelper.getRedirects().libreddit.normal, ...redditHelper.getRedirects().teddit.normal, redditHelper.getRedirects().desktop, redditHelper.getRedirects().mobile, - + ...searchHelper.getRedirects().searx.normal, ...searchHelper.getRedirects().whoogle.normal, - + ...translateHelper.getRedirects().simplyTranslate.normal, ...translateHelper.getRedirects().lingva.normal, - + ...mediumHelper.getRedirects().scribe.normal, - + ...imgurHelper.getRedirects().rimgo.normal, + ...wikipediaHelper.getRedirects().wikiless.normal ); @@ -128,9 +133,9 @@ browser.pageAction.onClicked.addListener((tab) => { ) newUrl = 'https://youtube.com'; - if (twitterHelper.getRedirects().normal.includes(protocolHost)) newUrl = 'https://twitter.com'; + if (twitterHelper.getRedirects().nitter.normal.includes(protocolHost)) newUrl = 'https://twitter.com'; - if (instagramHelper.getRedirects().normal.includes(protocolHost)) newUrl = 'https://instagram.com'; + if (instagramHelper.getRedirects().bibliogram.normal.includes(protocolHost)) newUrl = 'https://instagram.com'; if (redditHelper.getRedirects().libreddit.normal.includes(protocolHost) || redditHelper.getRedirects().teddit.normal.includes(protocolHost)) { if (tabUrl.pathname.startsWith('/img')) { @@ -151,9 +156,11 @@ browser.pageAction.onClicked.addListener((tab) => { translateHelper.getRedirects().lingva.normal.includes(protocolHost) ) newUrl = 'https://translate.google.com'; - if (mediumHelper.getRedirects().normal.includes(protocolHost)) newUrl = 'https://medium.com'; + if (mediumHelper.getRedirects().scribe.normal.includes(protocolHost)) newUrl = 'https://medium.com'; - if (wikipediaHelper.getRedirects().normal.includes(protocolHost)) newUrl = 'https://wikipedia.com'; + if (imgurHelper.getRedirects().rimgo.normal.includes(protocolHost)) newUrl = 'https://imgur.com'; + + if (wikipediaHelper.getRedirects().wikiless.normal.includes(protocolHost)) newUrl = 'https://wikipedia.com'; if (newUrl) browser.tabs.update({ url: tabUrl.href.replace(protocolHost, newUrl) }); }); diff --git a/src/pages/options/general/general.html b/src/pages/options/general/general.html index 3a9540a8..5dff25b7 100644 --- a/src/pages/options/general/general.html +++ b/src/pages/options/general/general.html @@ -21,6 +21,7 @@ Translate Maps Wikipedia + Imgur Medium diff --git a/src/pages/options/imgur/imgur.html b/src/pages/options/imgur/imgur.html new file mode 100644 index 00000000..9fdedd2e --- /dev/null +++ b/src/pages/options/imgur/imgur.html @@ -0,0 +1,65 @@ + + + + + + + + + + LibRedirect options: Twitter + + + + + +
+
+

Enable

+ +
+ +
+ +
+

Default Instances

+
+
+
+
+

Custom Instances

+
+
+
+ + +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/src/pages/options/imgur/imgur.js b/src/pages/options/imgur/imgur.js new file mode 100644 index 00000000..a0929553 --- /dev/null +++ b/src/pages/options/imgur/imgur.js @@ -0,0 +1,21 @@ +import imgurHelper from "../../../assets/javascripts/helpers/imgur.js"; +import commonHelper from "../../../assets/javascripts/helpers/common.js"; + +let disableImgurElement = document.getElementById("disable-imgur"); +disableImgurElement.addEventListener("change", + (event) => imgurHelper.setDisableImgur(!event.target.checked) +); + +imgurHelper.init().then(() => { + disableImgurElement.checked = !imgurHelper.getDisableImgur(); + + commonHelper.processDefaultCustomInstances( + 'rimgo', + imgurHelper, + document, + imgurHelper.getRimgoRedirectsChecks, + imgurHelper.setRimgoRedirectsChecks, + imgurHelper.getRimgoCustomRedirects, + imgurHelper.setRimgoCustomRedirects + ) +}) \ No newline at end of file diff --git a/src/pages/options/instagram/instagram.html b/src/pages/options/instagram/instagram.html index 94abd2e8..1c67ecbc 100644 --- a/src/pages/options/instagram/instagram.html +++ b/src/pages/options/instagram/instagram.html @@ -21,6 +21,7 @@ Translate Maps Wikipedia + Imgur Medium diff --git a/src/pages/options/maps/maps.html b/src/pages/options/maps/maps.html index 293a5e02..e338b9fa 100644 --- a/src/pages/options/maps/maps.html +++ b/src/pages/options/maps/maps.html @@ -22,6 +22,7 @@ Translate Maps Wikipedia + Imgur Medium diff --git a/src/pages/options/medium/medium.html b/src/pages/options/medium/medium.html index fc987d8c..60f58d23 100644 --- a/src/pages/options/medium/medium.html +++ b/src/pages/options/medium/medium.html @@ -21,13 +21,14 @@ Translate Maps Wikipedia + Imgur Medium

Enable

- +

diff --git a/src/pages/options/medium/medium.js b/src/pages/options/medium/medium.js index c86f190a..b24fc2aa 100644 --- a/src/pages/options/medium/medium.js +++ b/src/pages/options/medium/medium.js @@ -1,7 +1,7 @@ import mediumHelper from "../../../assets/javascripts/helpers/medium.js"; import commonHelper from "../../../assets/javascripts/helpers/common.js"; -let disableMediumElement = document.getElementById("disable-scribe"); +let disableMediumElement = document.getElementById("disable-medium"); disableMediumElement.addEventListener("change", (event) => mediumHelper.setDisableMedium(!event.target.checked) ); diff --git a/src/pages/options/reddit/reddit.html b/src/pages/options/reddit/reddit.html index 92dd6696..472f367f 100644 --- a/src/pages/options/reddit/reddit.html +++ b/src/pages/options/reddit/reddit.html @@ -21,6 +21,7 @@ Translate Maps Wikipedia + Imgur Medium
diff --git a/src/pages/options/search/search.html b/src/pages/options/search/search.html index 53a72b57..80d08f8c 100644 --- a/src/pages/options/search/search.html +++ b/src/pages/options/search/search.html @@ -21,6 +21,7 @@ Translate Maps Wikipedia + Imgur Medium diff --git a/src/pages/options/translate/translate.html b/src/pages/options/translate/translate.html index b9eed8e3..04dfc2bb 100644 --- a/src/pages/options/translate/translate.html +++ b/src/pages/options/translate/translate.html @@ -21,6 +21,7 @@ Translate Maps Wikipedia + Imgur Medium
diff --git a/src/pages/options/twitter/twitter.html b/src/pages/options/twitter/twitter.html index 267a93ca..b47a094e 100644 --- a/src/pages/options/twitter/twitter.html +++ b/src/pages/options/twitter/twitter.html @@ -22,6 +22,7 @@ Translate Maps Wikipedia + Imgur Medium
diff --git a/src/pages/options/wikipedia/wikipedia.html b/src/pages/options/wikipedia/wikipedia.html index a3eafc15..4bd0b5e8 100644 --- a/src/pages/options/wikipedia/wikipedia.html +++ b/src/pages/options/wikipedia/wikipedia.html @@ -21,6 +21,7 @@ Translate Maps Wikipedia + Imgur Medium diff --git a/src/pages/options/youtube/youtube.html b/src/pages/options/youtube/youtube.html index 6bb213ac..8c7ea787 100644 --- a/src/pages/options/youtube/youtube.html +++ b/src/pages/options/youtube/youtube.html @@ -22,6 +22,7 @@ Translate Maps Wikipedia + Imgur Medium diff --git a/src/pages/popup/popup.html b/src/pages/popup/popup.html index 4a1e9874..7a604f8b 100644 --- a/src/pages/popup/popup.html +++ b/src/pages/popup/popup.html @@ -49,9 +49,14 @@ +
+

Imgur

+ +
+

Medium

- +
diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js index 8625cf9b..9b5422d9 100644 --- a/src/pages/popup/popup.js +++ b/src/pages/popup/popup.js @@ -11,6 +11,7 @@ import searchHelper from "../../assets/javascripts/helpers/search.js"; import translateHelper from "../../assets/javascripts/helpers/translate.js"; import wikipediaHelper from "../../assets/javascripts/helpers/wikipedia.js"; import mediumHelper from "../../assets/javascripts/helpers/medium.js"; +import imgurHelper from "../../assets/javascripts/helpers/imgur.js"; let disableTwitterElement = document.querySelector("#disable-nitter"); let disableYoutubeElement = document.querySelector("#disable-invidious"); @@ -20,7 +21,8 @@ let disableRedditElement = document.querySelector("#disable-reddit"); let disableSearchElement = document.querySelector("#disable-search"); let disableTranslateElement = document.querySelector("#disable-simplyTranslate"); let disableWikipediaElement = document.querySelector("#disable-wikipedia"); -let disableMediumElement = document.querySelector("#disable-scribe"); +let disableMediumElement = document.querySelector("#disable-medium"); +let disableImgurElement = document.querySelector("#disable-imgur"); window.browser = window.browser || window.chrome; @@ -33,6 +35,7 @@ async function wholeInit() { await searchHelper.init(); await translateHelper.init(); await wikipediaHelper.init(); + await imgurHelper.init(); await mediumHelper.init(); }; @@ -46,6 +49,7 @@ wholeInit().then(() => { disableSearchElement.checked = !searchHelper.getDisableSearch(); disableTranslateElement.checked = !translateHelper.getDisableTranslate(); disableWikipediaElement.checked = !wikipediaHelper.getDisableWikipedia(); + disableImgurElement.checked = !imgurHelper.getDisableImgur(); disableMediumElement.checked = !mediumHelper.getDisableMedium(); }) @@ -81,6 +85,10 @@ disableWikipediaElement.addEventListener("change", (event) => wikipediaHelper.setDisableWikipedia(!event.target.checked) ); +disableImgurElement.addEventListener("change", + (event) => imgurHelper.setDisableImgur(!event.target.checked) +); + disableMediumElement.addEventListener("change", (event) => mediumHelper.setDisableMedium(!event.target.checked) );