diff options
Diffstat (limited to 'src/pages/background/background.js')
-rw-r--r-- | src/pages/background/background.js | 678 |
1 files changed, 63 insertions, 615 deletions
diff --git a/src/pages/background/background.js b/src/pages/background/background.js index d19eed94..68b6db55 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -1,585 +1,29 @@ "use strict"; -import commonHelper from "../../assets/javascripts/helpers/common.js"; +import mapsHelper from "../../assets/javascripts/helpers/google-maps.js"; import twitterHelper from "../../assets/javascripts/helpers/twitter.js"; import youtubeHelper from "../../assets/javascripts/helpers/youtube.js"; import instagramHelper from "../../assets/javascripts/helpers/instagram.js"; -import mapsHelper from "../../assets/javascripts/helpers/google-maps.js"; import mediumHelper from "../../assets/javascripts/helpers/medium.js"; import redditHelper from "../../assets/javascripts/helpers/reddit.js"; import searchHelper from "../../assets/javascripts/helpers/google-search.js"; import googleTranslateHelper from "../../assets/javascripts/helpers/google-translate.js"; import wikipediaHelper from "../../assets/javascripts/helpers/wikipedia.js"; - -const nitterInstances = twitterHelper.redirects; -const twitterDomains = twitterHelper.targets; -const youtubeDomains = youtubeHelper.targets; -const mediumDomains = mediumHelper.targets; -const scribeInstances = mediumHelper.redirects; -const scribeDefault = mediumHelper.redirects[0]; -const invidiousInstances = youtubeHelper.redirects; -const instagramDomains = instagramHelper.targets; -const bibliogramInstances = instagramHelper.redirects; -const instagramReservedPaths = instagramHelper.reservedPaths; -const bibliogramBypassPaths = instagramHelper.bypassPaths; -const osmDefault = mapsHelper.redirects[0]; -const googleMapsRegex = mapsHelper.targets; -const mapCentreRegex = mapsHelper.mapCentreRegex; -const dataLatLngRegex = mapsHelper.dataLatLngRegex; -const placeRegex = mapsHelper.placeRegex; -const travelModes = mapsHelper.travelModes; -const layers = mapsHelper.layers; - -const redditInstances = redditHelper.redirects; -const redditDomains = redditHelper.targets; -const redditBypassPaths = redditHelper.bypassPaths; -const redditDefault = redditHelper.redirects[0]; - -const googleSearchRegex = searchHelper.targets; -const searchInstances = searchHelper.redirects; -const simplyTranslateInstances = googleTranslateHelper.redirects; -const simplyTranslateDefault = simplyTranslateInstances[0]; -const googleTranslateDomains = googleTranslateHelper.targets; -const wikipediaInstances = wikipediaHelper.redirects; -const wikipediaDefault = wikipediaInstances[0]; -const wikipediaRegex = wikipediaHelper.targets; - -let disableNitter; -let disableInvidious; -let disableBibliogram; -let disableOsm; -let disableReddit; -let disableScribe; -let disableSearch; -let disableSimplyTranslate; -let disableWikipedia; -let nitterInstance; -let invidiousInstance; -let bibliogramInstance; -let osmInstance; -let scribeInstance; -let redditInstance; -let searchInstance; -let simplyTranslateInstance; -let wikipediaInstance; -let invidiousAlwaysProxy; -let invidiousOnlyEmbeddedVideo; -let invidiousVideoQuality; -let invidiousDarkMode; -let invidiousVolume; -let invidiousPlayerStyle; -let invidiousSubtitles; -let invidiousAutoplay; -let useFreeTube; - -let nitterRandomPool; -let invidiousRandomPool; -let bibliogramRandomPool; -let scribeRandomPool; - - -let exceptions; -let redditFrontend; -let searchFrontend; +import data from "../../assets/javascripts/data.js"; +import googleMaps from "../../assets/javascripts/helpers/google-maps.js"; window.browser = window.browser || window.chrome; -browser.storage.sync.get( - [ - "nitterInstance", - "invidiousInstance", - "bibliogramInstance", - "osmInstance", - "redditInstance", - "scribeInstance", - "searchInstance", - "simplyTranslateInstance", - "wikipediaInstance", - "disableNitter", - "disableInvidious", - "disableBibliogram", - "disableOsm", - "disableReddit", - "disableScribe", - "disableSearch", - "disableSimplyTranslate", - "disableWikipedia", - "invidiousAlwaysProxy", - "invidiousOnlyEmbeddedVideo", - "invidiousVideoQuality", - "invidiousDarkMode", - "invidiousVolume", - "invidiousPlayerStyle", - "invidiousSubtitles", - "invidiousAutoplay", - "useFreeTube", - "nitterRandomPool", - "invidiousRandomPool", - "bibliogramRandomPool", - "scribeRandomPool", - "wikilessRandomPool", - "exceptions", - "redditFrontend", - "searchFrontend", - ], - (result) => { - osmInstance = result.osmInstance || osmDefault; - disableOsm = result.disableOsm; - - searchInstance = result.searchInstance; - disableSearch = result.disableSearch; - searchFrontend = result.searchFrontend; - - simplyTranslateInstance = result.simplyTranslateInstance || simplyTranslateDefault; - disableSimplyTranslate = result.disableSimplyTranslate; - - redditInstance = result.redditInstance; - disableReddit = result.disableReddit; - redditFrontend = result.redditFrontend; - - disableWikipedia = result.disableWikipedia; - wikipediaInstance = result.wikipediaInstance || wikipediaDefault; - - exceptions = result.exceptions - ? result.exceptions.map((e) => { - return new RegExp(e); - }) - : []; - - - invidiousOnlyEmbeddedVideo = result.invidiousOnlyEmbeddedVideo; - invidiousDarkMode = result.invidiousDarkMode; - disableInvidious = result.disableInvidious; - invidiousAlwaysProxy = result.invidiousAlwaysProxy; - invidiousInstance = result.invidiousInstance; - invidiousVideoQuality = result.invidiousVideoQuality; - invidiousVolume = result.invidiousVolume; - invidiousPlayerStyle = result.invidiousPlayerStyle; - invidiousSubtitles = result.invidiousSubtitles || ""; - invidiousAutoplay = result.invidiousAutoplay; - useFreeTube = result.useFreeTube; - invidiousRandomPool = - result.invidiousRandomPool - ? result.invidiousRandomPool - : commonHelper.filterInstances(invidiousInstances); - - nitterInstance = result.nitterInstance; - disableNitter = result.disableNitter; - nitterRandomPool = - result.nitterRandomPool - ? result.nitterRandomPool - : commonHelper.filterInstances(nitterInstances); - - - bibliogramInstance = result.bibliogramInstance; - disableBibliogram = result.disableBibliogram; - bibliogramRandomPool = - result.bibliogramRandomPool - ? result.bibliogramRandomPool - : commonHelper.filterInstances(bibliogramInstances); - - - scribeInstance = result.scribeInstance; - disableScribe = result.disableScribe; - scribeRandomPool = - result.scribeRandomPool - ? result.scribeRandomPool - : commonHelper.filterInstances(scribeInstances); - } -); - -browser.storage.onChanged.addListener((changes) => { - if ("invidiousInstance" in changes) invidiousInstance = changes.invidiousInstance.newValue; - if ("disableInvidious" in changes) disableInvidious = changes.disableInvidious.newValue; - if ("invidiousAlwaysProxy" in changes) invidiousAlwaysProxy = changes.invidiousAlwaysProxy.newValue; - if ("invidiousOnlyEmbeddedVideo" in changes) invidiousOnlyEmbeddedVideo = changes.invidiousOnlyEmbeddedVideo.newValue; - if ("invidiousVideoQuality" in changes) invidiousVideoQuality = changes.invidiousVideoQuality.newValue; - if ("invidiousDarkMode" in changes) invidiousDarkMode = changes.invidiousDarkMode.newValue; - if ("invidiousVolume" in changes) invidiousVolume = changes.invidiousVolume.newValue; - if ("invidiousPlayerStyle" in changes) invidiousPlayerStyle = changes.invidiousPlayerStyle.newValue; - if ("invidiousSubtitles" in changes) invidiousSubtitles = changes.invidiousSubtitles.newValue; - if ("invidiousAutoplay" in changes) invidiousAutoplay = changes.invidiousAutoplay.newValue; - if ("useFreeTube" in changes) useFreeTube = changes.useFreeTube.newValue; - if ("invidiousRandomPool" in changes) invidiousRandomPool = changes.invidiousRandomPool.newValue; - - if ("nitterInstance" in changes) nitterInstance = changes.nitterInstance.newValue; - if ("disableNitter" in changes) disableNitter = changes.disableNitter.newValue; - if ("nitterRandomPool" in changes) nitterRandomPool = changes.nitterRandomPool.newValue; - - if ("bibliogramInstance" in changes) bibliogramInstance = changes.bibliogramInstance.newValue; - if ("disableBibliogram" in changes) disableBibliogram = changes.disableBibliogram.newValue; - if ("bibliogramRandomPool" in changes) bibliogramRandomPool = changes.bibliogramRandomPool.newValue; - - if ("redditInstance" in changes) redditInstance = changes.redditInstance.newValue || redditDefault; - if ("disableReddit" in changes) disableReddit = changes.disableReddit.newValue; - if ("redditFrontend" in changes) redditFrontend = changes.redditFrontend.newValue - - if ("searchInstance" in changes) searchInstance = changes.searchInstance.newValue; - if ("disableSearch" in changes) disableSearch = changes.disableSearch.newValue; - if ("searchFrontend" in changes) searchFrontend = changes.searchFrontend.newValue - - if ("simplyTranslateInstance" in changes) simplyTranslateInstance = changes.simplyTranslateInstance.newValue || simplyTranslateDefault; - if ("disableSimplyTranslate" in changes) disableSimplyTranslate = changes.disableSimplyTranslate.newValue; - - if ("osmInstance" in changes) osmInstance = changes.osmInstance.newValue || osmDefault; - if ("disableOsm" in changes) disableOsm = changes.disableOsm.newValue; - - if ("wikipediaInstance" in changes) wikipediaInstance = changes.wikipediaInstance.newValue || wikipediaDefault; - if ("disableWikipedia" in changes) disableWikipedia = changes.disableWikipedia.newValue; - - if ("scribeInstance" in changes) scribeInstance = changes.scribeInstance.newValue || scribeDefault; - if ("disableScribe" in changes) disableScribe = changes.disableScribe.newValue; - if ("scribeRandomPool" in changes) scribeRandomPool = changes.scribeRandomPool.newValue; - - if ("exceptions" in changes) exceptions = changes.exceptions.newValue.map((e) => new RegExp(e)); -}); - -function isException(url, initiator) { - return ( - exceptions.some((regex) => regex.test(url.href)) || - (initiator && exceptions.some((regex) => regex.test(initiator.href))) - ); -} - -function isFirefox() { - return typeof InstallTrigger !== "undefined"; -} - -function redirectYouTube(url, initiator, type) { - if (disableInvidious || isException(url, initiator)) { - return null; - } - if ( - initiator && - (initiator.origin === invidiousInstance || - invidiousInstances.includes(initiator.origin) || - youtubeDomains.includes(initiator.host)) - ) { - return null; - } - if (url.pathname.match(/iframe_api/) || url.pathname.match(/www-widgetapi/)) { - // Don't redirect YouTube Player API. - return null; - } - if (url.host.split(".")[0] === "studio") { - // Avoid redirecting `studio.youtube.com` - return null; - } - if (invidiousOnlyEmbeddedVideo && type !== "sub_frame") { - return null; - } - if (useFreeTube && type === "main_frame") { - return `freetube://${url}`; - } - // Apply settings - if (invidiousAlwaysProxy) { - url.searchParams.append("local", true); - } - if (invidiousVideoQuality) { - url.searchParams.append("quality", invidiousVideoQuality); - } - if (invidiousDarkMode) { - url.searchParams.append("dark_mode", invidiousDarkMode); - } - if (invidiousVolume) { - url.searchParams.append("volume", invidiousVolume); - } - if (invidiousPlayerStyle) { - url.searchParams.append("player_style", invidiousPlayerStyle); - } - if (invidiousSubtitles) { - url.searchParams.append("subtitles", invidiousSubtitles); - } - if (invidiousAutoplay) { - url.searchParams.append("autoplay", 1); - } - - return `${invidiousInstance || commonHelper.getRandomInstance(invidiousRandomPool) - }${url.pathname.replace("/shorts", "")}${url.search}`; -} +// data.osmInstance = result.osmInstance || data.osmDefault; +// data.simplyTranslateInstance = result.simplyTranslateInstance || data.simplyTranslateDefault; +// data.wikipediaInstance = result.wikipediaInstance || data.wikipediaDefault; +// data.exceptions = result.exceptions +// ? result.exceptions.map((e) => { +// return new RegExp(e); +// }) +// : []; +// data.invidiousSubtitles = result.invidiousSubtitles || ""; -function redirectTwitter(url, initiator) { - if (disableNitter || isException(url, initiator)) { - return null; - } - if (url.pathname.split("/").includes("home")) { - return null; - } - if ( - isFirefox() && - initiator && - (initiator.origin === nitterInstance || - nitterInstances.includes(initiator.origin) || - twitterDomains.includes(initiator.host)) - ) { - browser.storage.sync.set({ - redirectBypassFlag: true, - }); - return null; - } - if (url.host.split(".")[0] === "pbs" || url.host.split(".")[0] === "video") { - return `${nitterInstance || commonHelper.getRandomInstance(nitterRandomPool)}/pic/${encodeURIComponent(url.href)}`; - } else if (url.pathname.split("/").includes("tweets")) { - return `${nitterInstance || commonHelper.getRandomInstance(nitterRandomPool)}${url.pathname.replace("/tweets", "")}${url.search}`; - } else { - return `${nitterInstance || commonHelper.getRandomInstance(nitterRandomPool)}${url.pathname}${url.search}`; - } -} - -function redirectInstagram(url, initiator, type) { - if (disableBibliogram || isException(url, initiator)) { - return null; - } - // Do not redirect Bibliogram view on Instagram links - if ( - initiator && - (initiator.origin === bibliogramInstance || - bibliogramInstances.includes(initiator.origin) || - instagramDomains.includes(initiator.host)) - ) { - return null; - } - // Do not redirect /accounts, /embeds.js, or anything other than main_frame - if (type !== "main_frame" || url.pathname.match(bibliogramBypassPaths)) { - return null; - } - if ( - url.pathname === "/" || - instagramReservedPaths.includes(url.pathname.split("/")[1]) - ) { - return `${bibliogramInstance || commonHelper.getRandomInstance(bibliogramRandomPool) - }${url.pathname}${url.search}`; - } else { - // Likely a user profile, redirect to '/u/...' - return `${bibliogramInstance || commonHelper.getRandomInstance(bibliogramRandomPool) - }/u${url.pathname}${url.search}`; - } -} - -function redirectGoogleMaps(url, initiator) { - if (disableOsm || isException(url, initiator)) { - return null; - } - if (initiator.host === "earth.google.com") { - return null; - } - let redirect; - let mapCentre = ""; - let params = ""; - // Set map centre if present - if (url.pathname.match(mapCentreRegex)) { - const [, lat, lon, zoom] = url.pathname.match(mapCentreRegex); - mapCentre = `#map=${zoom}/${lat}/${lon}`; - } else if (url.search.includes("center=")) { - const [lat, lon] = url.searchParams.get("center").split(","); - mapCentre = `#map=${url.searchParams.get("zoom") || "17"}/${lat}/${lon}`; - // Set default zoom if mapCentre not present - } else { - params = "&zoom=17"; - } - // Set map layer - params = `${params}&layers=${layers[url.searchParams.get("layer")] || layers["none"] - }`; - // Handle Google Maps Embed API - if (url.pathname.split("/").includes("embed")) { - let query = ""; - if (url.searchParams.has("q")) { - query = url.searchParams.get("q"); - } else if (url.searchParams.has("query")) { - query = url.searchParams.has("query"); - } else if (url.searchParams.has("pb")) { - try { - query = url.searchParams.get("pb").split(/!2s(.*?)!/)[1]; - } catch (error) { - console.error(error); - // Unable to find map marker in URL. - } - } - let marker, bbox; - mapsHelper.addressToLatLng(query, (coords, boundingbox) => { - marker = coords; - bbox = boundingbox; - }); - redirect = `${osmInstance}/export/embed.html?bbox=${bbox}&layer=mapnik&marker=${marker}`; - // Handle Google Maps Directions - } else if (url.pathname.split("/").includes("dir")) { - const travelMode = - travelModes[url.searchParams.get("travelmode")] || travelModes["driving"]; - let origin; - mapsHelper.addressToLatLng(url.searchParams.get("origin"), (coords) => { - origin = coords; - }); - let destination; - mapsHelper.addressToLatLng( - url.searchParams.get("destination"), - (coords) => { - destination = coords; - } - ); - redirect = `${osmInstance}/directions?engine=${travelMode}&route=${origin}%3B${destination}${mapCentre}${params}`; - // Get marker from data attribute - } else if ( - url.pathname.includes("data=") && - url.pathname.match(dataLatLngRegex) - ) { - const [mlat, mlon] = url.pathname.match(dataLatLngRegex); - redirect = `${osmInstance}/?mlat=${mlat.replace( - "!3d", - "" - )}&mlon=${mlon.replace("!4d", "")}${mapCentre}${params}`; - // Get marker from ll param - } else if (url.searchParams.has("ll")) { - const [mlat, mlon] = url.searchParams.get("ll").split(","); - redirect = `${osmInstance}/?mlat=${mlat}&mlon=${mlon}${mapCentre}${params}`; - // Get marker from viewpoint param. - } else if (url.searchParams.has("viewpoint")) { - const [mlat, mlon] = url.searchParams.get("viewpoint").split(","); - redirect = `${osmInstance}/?mlat=${mlat}&mlon=${mlon}${mapCentre}${params}`; - // Use query as search if present. - } else { - let query; - if (url.searchParams.has("q")) { - query = url.searchParams.get("q"); - } else if (url.searchParams.has("query")) { - query = url.searchParams.get("query"); - } else if (url.pathname.match(placeRegex)) { - query = url.pathname.match(placeRegex)[1]; - } - redirect = `${osmInstance}/${query ? "search?query=" + query : ""}${mapCentre || "#" - }${params}`; - } - - return redirect; -} - -function redirectReddit(url, initiator, type) { - - if (disableReddit || isException(url, initiator)) - return null; - - // Do not redirect when already on the selected view - if ((initiator && initiator.origin === redditInstance) || url.origin === redditInstance) - return null; - - // Do not redirect exclusions nor anything other than main_frame - if (type !== "main_frame" || url.pathname.match(redditBypassPaths)) - return null; - - console.info(url.host); - if (url.host === "i.redd.it") - // As of 2021-04-09, redirects for teddit images are nontrivial: - // - navigating to the image before ever navigating to its page causes - // 404 error (probably needs fix on teddit project) - // - some image links on teddit are very different - // Therefore, don't support redirecting image links for teddit. - return `${redditInstance || commonHelper.getRandomInstance(redditInstances['libreddit'])}/img${url.pathname}${url.search}`; - else if (url.host === "redd.it") { - if (redditFrontend == 'libreddit') - return `${redditInstance || commonHelper.getRandomInstance(redditInstances['libreddit'])}${url.pathname}${url.search}`; - if (redditFrontend == 'teddit' && !url.pathname.match(/^\/+[^\/]+\/+[^\/]/)) - // As of 2021-04-22, redirects for teddit redd.it/foo links don't work. - // It appears that adding "/comments" as a prefix works, so manually add - // that prefix if it is missing. Even though redd.it/comments/foo links - // don't seem to work or exist, guard against affecting those kinds of - // paths. - // Note the difference between redd.it/comments/foo (doesn't work) and - // teddit.net/comments/foo (works). - return `${redditInstance || commonHelper.getRandomInstance(redditInstances['teddit'])}/comments${url.pathname}${url.search}`; - return null; - } - if (redditFrontend == 'libreddit') - return `${redditInstance || commonHelper.getRandomInstance(redditInstances['libreddit'])}${url.pathname}${url.search}`; - if (redditFrontend == 'teddit') - return `${redditInstance || commonHelper.getRandomInstance(redditInstances['teddit'])}${url.pathname}${url.search}`; -} - -function redirectMedium(url, initiator) { - if (disableScribe || isException(url, initiator)) - return null; - - if (url.pathname == "/") - return null; - - if ( - isFirefox() && - initiator && - (initiator.origin === scribeInstance || - scribeInstances.includes(initiator.origin) || - mediumDomains.includes(initiator.host)) - ) { - browser.storage.sync.set({ redirectBypassFlag: true }); - return null; - } - return `${scribeInstance || commonHelper.getRandomInstance(scribeRandomPool)}${url.pathname}${url.search}`; -} - -function redirectSearch(url, initiator) { - if (disableSearch || isException(url, initiator)) { - console.log("disableSearch:", disableSearch) - return null; - } - - let search; - let searchQ; - console.log("searchFrontend", searchFrontend); - if (searchFrontend == 'searx') { - search = searchInstance || commonHelper.getRandomInstance(searchInstances["searx"]); - searchQ = "/" - } - if (searchFrontend == 'whoogle') { - search = searchInstance || commonHelper.getRandomInstance(searchInstances["whoogle"]); - searchQ = "/search" - } - - let searchQuery = ""; - url.search - .slice(1) - .split("&") - .forEach(function (input) { - if (input.startsWith("q=")) searchQuery = input; - }); - console.info("It will direct to:", `${search}${searchQ}?${searchQuery}`) - return `${search}${searchQ}?${searchQuery}`; -} - -function redirectGoogleTranslate(url, initiator) { - if (disableSimplyTranslate || isException(url, initiator)) return null; - - return `${simplyTranslateInstance}/${url.search}`; -} - -function redirectWikipedia(url, initiator) { - if (disableWikipedia || isException(url, initiator)) return null; - let GETArguments = []; - if (url.search.length > 0) { - let search = url.search.substring(1); //get rid of '?' - let argstrings = search.split("&"); - for (let i = 0; i < argstrings.length; i++) { - let args = argstrings[i].split("="); - GETArguments.push([args[0], args[1]]); - } - } - let link = `${wikipediaInstance}${url.pathname}`; - let urlSplit = url.host.split("."); - if (urlSplit[0] != "wikipedia" && urlSplit[0] != "www") { - if (urlSplit[0] == "m") - GETArguments.push(["mobileaction", "toggle_view_mobile"]); - else GETArguments.push(["lang", urlSplit[0]]); - if (urlSplit[1] == "m") - GETArguments.push(["mobileaction", "toggle_view_mobile"]); - //wikiless doesn't have mobile view support yet - } - for (let i = 0; i < GETArguments.length; i++) - link += (i == 0 ? "?" : "&") + GETArguments[i][0] + "=" + GETArguments[i][1]; - - if ( - urlSplit[urlSplit.length - 1] == "org" && - urlSplit[urlSplit.length - 2] == "wikipedia" - ) - //just in case someone wanted to visit wikipedia.org.foo.bar.net - return link; - else return null; -} browser.webRequest.onBeforeRequest.addListener( (details) => { @@ -591,23 +35,24 @@ browser.webRequest.onBeforeRequest.addListener( initiator = new URL(details.initiator); let newUrl; - if (youtubeDomains.includes(url.host)) newUrl = redirectYouTube(url, initiator, details.type) - else if (twitterDomains.includes(url.host)) newUrl = redirectTwitter(url, initiator); + if (youtubeHelper.targets.includes(url.host)) newUrl = youtubeHelper.redirect(url, initiator, details.type) - else if (instagramDomains.includes(url.host)) newUrl = redirectInstagram(url, initiator, details.type); + else if (twitterHelper.targets.includes(url.host)) newUrl = redirectTwitter(url, initiator); - else if (url.href.match(googleMapsRegex)) newUrl = redirectGoogleMaps(url, initiator); + else if (instagramHelper.targets.includes(url.host)) newUrl = redirectInstagram(url, initiator, details.type); - else if (redditDomains.includes(url.host)) newUrl = redirectReddit(url, initiator, details.type); + else if (url.href.match(mapsHelper.targets)) newUrl = redirectGoogleMaps(url, initiator); - else if (mediumDomains.some((rx) => rx.test(url.host))) newUrl = redirectMedium(url, initiator); + else if (redditHelper.targets.includes(url.host)) newUrl = redirectReddit(url, initiator, details.type); - else if (googleSearchRegex.some((rx) => rx.test(url.href))) newUrl = redirectSearch(url, initiator); + else if (mediumHelper.targets.some((rx) => rx.test(url.host))) newUrl = redirectMedium(url, initiator); - else if (googleTranslateDomains.includes(url.host)) newUrl = redirectGoogleTranslate(url, initiator); + else if (searchHelper.targets.some((rx) => rx.test(url.href))) newUrl = redirectSearch(url, initiator); - else if (url.host.match(wikipediaRegex)) newUrl = redirectWikipedia(url, initiator); + else if (googleTranslateHelper.targets.includes(url.host)) newUrl = redirectGoogleTranslate(url, initiator); + + else if (url.host.match(wikipediaHelper.targets)) newUrl = redirectWikipedia(url, initiator); if (newUrl) { console.info("Redirecting", url.href, "=>", newUrl); @@ -628,18 +73,20 @@ browser.tabs.onUpdated.addListener((tabId, changeInfo, _) => { } var protocolHost = `${url.protocol}//${url.host}`; var mightyList = []; - mightyList.push(...invidiousInstances); - mightyList.push(...nitterInstances); - mightyList.push(...bibliogramInstances); - mightyList.push(...redditInstances.libreddit); - mightyList.push(...redditInstances.teddit); - mightyList.push(redditInstances.desktop); - mightyList.push(redditInstances.mobile); - mightyList.push(...searchInstances.searx); - mightyList.push(...searchInstances.whoogle); - mightyList.push(...simplyTranslateInstances); - mightyList.push(...scribeInstances); - mightyList.push(...wikipediaInstances); + mightyList.push( + ...youtubeHelper.redirects.normal, + ...twitterHelper.redirects.normal, + ...instagramHelper.redirects.normal, + ...redditHelper.redirects.libreddit.normal, + ...redditHelper.redirects.teddit.normal, + redditHelper.redirects.desktop, + redditHelper.redirects.mobile, + ...searchHelper.redirects.searx.normal, + ...searchHelper.redirects.whoogle.normal, + ...googleTranslateHelper.redirects.normal, + ...mediumHelper.redirects.normal, + ...wikipediaHelper.redirects.normal + ); if (mightyList.includes(protocolHost)) browser.pageAction.show(tabId); }); @@ -649,13 +96,14 @@ browser.pageAction.onClicked.addListener((tab) => { var tabUrl = new URL(tab.url); var protocolHost = `${tabUrl.protocol}//${tabUrl.host}`; var newUrl; - if (invidiousInstances.includes(protocolHost)) - newUrl = 'https://youtube.com'; - else if (nitterInstances.includes(protocolHost)) - newUrl = 'https://twitter.com'; - else if (bibliogramInstances.includes(protocolHost)) - newUrl = 'https://instagram.com'; - else if (redditInstances['libreddit'].includes(protocolHost) || redditInstances['teddit'].includes(protocolHost)) { + if (youtubeHelper.redirects.normal.includes(protocolHost)) newUrl = 'https://youtube.com'; + + if (twitterHelper.redirects.normal.includes(protocolHost)) newUrl = 'https://twitter.com'; + + if (instagramHelper.redirects.normal.includes(protocolHost)) newUrl = 'https://instagram.com'; + + + if (redditHelper.redirects.libreddit.normal.includes(protocolHost) || redditHelper.redirects.teddit.normal.includes(protocolHost)) { if (tabUrl.pathname.startsWith('/img')) { newUrl = "https://i.redd.it" tabUrl.href = tabUrl.href.replace("/img", "") @@ -663,19 +111,19 @@ browser.pageAction.onClicked.addListener((tab) => { else newUrl = 'https://reddit.com'; } - else if (searchInstances.searx.includes(protocolHost) || searchInstances.whoogle.includes(protocolHost)) - newUrl = 'https://google.com'; - else if (simplyTranslateInstances.includes(protocolHost)) - newUrl = 'https://translate.google.com'; - else if (scribeInstances.includes(protocolHost)) - newUrl = 'https://medium.com'; - else if (wikipediaInstances.includes(protocolHost)) - newUrl = 'https://wikipedia.com'; - - if (newUrl) - browser.tabs.update({ - url: tabUrl.href.replace(protocolHost, newUrl) - }); + + if ( + searchHelper.redirects.searx.normal.includes(protocolHost) || + searchHelper.redirects.whoogle.normal.includes(protocolHost) + ) newUrl = 'https://google.com'; + + if (googleTranslateHelper.redirects.normal.includes(protocolHost)) newUrl = 'https://translate.google.com'; + + if (mediumHelper.redirects.normal.includes(protocolHost)) newUrl = 'https://medium.com'; + + if (wikipediaHelper.redirects.normal.includes(protocolHost)) newUrl = 'https://wikipedia.com'; + + if (newUrl) browser.tabs.update({ url: tabUrl.href.replace(protocolHost, newUrl) }); }); browser.runtime.onInstalled.addListener((details) => { @@ -697,7 +145,10 @@ browser.runtime.onInstalled.addListener((details) => { if (result.redditFrontend === undefined) browser.storage.sync.set({ redditFrontend: 'libreddit' }) - if (result.searchFrontend === undefined) browser.storage.sync.set({ searchFrontend: 'searx' }) + if (result.searchFrontend === undefined) { + data.searchFrontend = 'searx'; + browser.storage.sync.set({ searchFrontend: data.searchFrontend }) + } } ); @@ -714,11 +165,8 @@ browser.runtime.onInstalled.addListener((details) => { whitelist: null, }); } - if (result.invidiousInstance === "https://invidio.us") { - browser.storage.sync.set({ - invidiousInstance: null, - }); - } + if (result.invidiousInstance === "https://invidio.us") + browser.storage.sync.set({ invidiousInstance: null }); } ); } |