From 68f9fbb3f7862dd9f854a11bc74525985ddbb9c9 Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Sat, 21 May 2022 16:38:28 +0300 Subject: [PATCH] Fixed buttons in the general tab --- README.md | 2 +- src/assets/javascripts/helpers/general.js | 128 ++----- src/assets/javascripts/helpers/imgur.js | 45 +-- src/assets/javascripts/helpers/instagram.js | 21 +- src/assets/javascripts/helpers/lbry.js | 39 +- src/assets/javascripts/helpers/maps.js | 351 +++++++++--------- src/assets/javascripts/helpers/medium.js | 71 ++-- src/assets/javascripts/helpers/peertube.js | 140 +++---- src/assets/javascripts/helpers/reddit.js | 238 ++++++------ src/assets/javascripts/helpers/search.js | 343 ++++++++--------- src/assets/javascripts/helpers/sendTargets.js | 159 ++++---- src/assets/javascripts/helpers/tiktok.js | 71 ++-- .../helpers/translate/translate.js | 110 +++--- src/assets/javascripts/helpers/twitter.js | 113 +++--- src/assets/javascripts/helpers/utils.js | 78 ++-- src/assets/javascripts/helpers/wikipedia.js | 122 +++--- .../javascripts/helpers/youtube/youtube.js | 41 +- src/instances/get_instances.py | 2 +- src/manifest.json | 2 +- src/pages/background/background.js | 35 +- src/pages/background/incognito.html | 30 +- src/pages/background/incognito.js | 29 +- src/pages/options/general/general.html | 4 +- src/pages/options/general/general.js | 200 ++++++---- src/pages/options/general/general.pug | 2 +- src/pages/options/imgur/imgur.html | 2 +- src/pages/options/instagram/instagram.html | 2 +- src/pages/options/lbry/lbry.html | 2 +- src/pages/options/maps/maps.html | 2 +- src/pages/options/medium/medium.html | 2 +- src/pages/options/peertube/peertube.html | 2 +- src/pages/options/reddit/reddit.html | 2 +- src/pages/options/search/search.html | 2 +- .../options/sendTargets/sendTargets.html | 2 +- src/pages/options/tiktok/tiktok.html | 2 +- src/pages/options/translate/translate.html | 2 +- src/pages/options/twitter/twitter.html | 2 +- src/pages/options/wikipedia/wikipedia.html | 2 +- src/pages/options/youtube/youtube.html | 2 +- .../options/youtubeMusic/youtubeMusic.html | 2 +- src/pages/popup/popup.html | 39 +- src/pages/popup/popup.js | 18 +- src/pages/popup/popup.pug | 30 +- src/pages/popup/style.css | 13 +- src/pages/widgets/icons.pug | 5 +- src/pages/widgets/links.pug | 2 +- 46 files changed, 1209 insertions(+), 1304 deletions(-) diff --git a/README.md b/README.md index 3d9fd70..15d80e1 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ Reddit => [Libreddit](https://github.com/spikecodes/libreddit#instances), [Teddi Imgur => [Rimgo](https://codeberg.org/video-prize-ranch/rimgo)\ Wikipedia => [Wikiless](https://codeberg.org/orenom/wikiless)\ Medium => [Scribe](https://sr.ht/~edwardloveall/scribe/)\ -Peertube => [SimpleerTube](https://git.sr.ht/~metalune/simpleweb_peertube)\ +PeerTube => [SimpleerTube](https://git.sr.ht/~metalune/simpleweb_peertube)\ LBRY/Odysee => [Librarian](https://codeberg.org/librarian/librarian)\ Search => [SearXNG](https://github.com/searxng/searxng), [SearX](https://searx.github.io/searx/), [Whoogle](https://benbusby.com/projects/whoogle-search/)\ Translate => [SimplyTranslate](https://git.sr.ht/~metalune/simplytranslate_web), [LingvaTranslate](https://github.com/TheDavidDelta/lingva-translate)\ diff --git a/src/assets/javascripts/helpers/general.js b/src/assets/javascripts/helpers/general.js index fdc6064..4c70997 100644 --- a/src/assets/javascripts/helpers/general.js +++ b/src/assets/javascripts/helpers/general.js @@ -1,88 +1,49 @@ "use strict"; window.browser = window.browser || window.chrome; -let theme; -const getTheme = () => theme; -function setTheme(val) { - theme = val - browser.storage.local.set({ theme, instancesCookies: [] }); - console.log("theme: ", theme) -} - -let exceptions = { - "url": [], - "regex": [], -}; -const getExceptions = () => exceptions; -function setExceptions(val) { - exceptions = val; - browser.storage.local.set({ exceptions }) - console.log("exceptions: ", val) -} - -let autoRedirect; -const getAutoRedirect = () => autoRedirect; -function setAutoRedirect(val) { - autoRedirect = val; - browser.storage.local.set({ autoRedirect }) - console.log("autoRedirect: ", val) -} - function isException(url) { - for (const item of exceptions.url) { - console.log(item, `${url.protocol}//${url.host}`) - if (item == `${url.protocol}//${url.host}`) return true; - } - for (const item of exceptions.regex) - if (new RegExp(item).test(url.href)) return true; - return false; -} - -async function init() { - return new Promise( - resolve => browser.storage.local.get( - [ - "exceptions", - "theme", - "popupFrontends", - "autoRedirect" - ], + return new Promise(resolve => { + browser.storage.local.get( + 'exceptions', r => { - if (r.exceptions) exceptions = r.exceptions; - - theme = r.theme ?? "DEFAULT" - - popupFrontends = r.popupFrontends ?? [ - "youtube", - "twitter", - "instagram", - "tikTok", - "imgur", - "reddit", - "search", - "medium", - "translate", - "maps", - ]; - - autoRedirect = r.autoRedirect ?? false; - - resolve(); + for (const item of r.exceptions.url) + if (item == `${url.protocol}//${url.host}`) { resolve(true); return; } + for (const item of r.exceptions.regex) + if (new RegExp(item).test(url.href)) { resolve(true); return; } + resolve(false); return; } ) - ) + }) +} + +function initDefaults() { + return new Promise(async resolve => { + await browser.storage.local.set({ + exceptions: { + "url": [], + "regex": [], + }, + theme: "DEFAULT", + popupFrontends: [ + "youtube", + "twitter", + "instagram", + "tikTok", + "imgur", + "reddit", + "search", + "medium", + "translate", + "maps", + ], + autoRedirect: false, + }) + resolve(); + }) } -let popupFrontends; -const getPopupFrontends = () => popupFrontends; -function setPopupFrontends(val) { - popupFrontends = val; - browser.storage.local.set({ popupFrontends }) - console.log("popupFrontends: ", val) -} - -let allPopupFrontends = [ +const allPopupFrontends = [ "youtube", "youtubeMusic", "twitter", @@ -102,20 +63,7 @@ let allPopupFrontends = [ export default { - getExceptions, - setExceptions, - - getAutoRedirect, - setAutoRedirect, - - getPopupFrontends, - setPopupFrontends, - - allPopupFrontends, - - getTheme, - setTheme, - isException, - init, + initDefaults, + allPopupFrontends, } diff --git a/src/assets/javascripts/helpers/imgur.js b/src/assets/javascripts/helpers/imgur.js index 9ed16b1..69159b0 100644 --- a/src/assets/javascripts/helpers/imgur.js +++ b/src/assets/javascripts/helpers/imgur.js @@ -167,31 +167,32 @@ function switchInstance(url) { }) } -async function initDefaults() { - fetch('/instances/data.json').then(response => response.text()).then(async data => { - let dataJson = JSON.parse(data); - redirects.rimgo = dataJson.rimgo; - browser.storage.local.get('cloudflareList', async r => { - rimgoNormalRedirectsChecks = [...redirects.rimgo.normal]; - for (const instance of r.cloudflareList) { - let i; +function initDefaults() { + return new Promise(resolve => { + fetch('/instances/data.json').then(response => response.text()).then(async data => { + let dataJson = JSON.parse(data); + redirects.rimgo = dataJson.rimgo; + browser.storage.local.get('cloudflareList', async r => { + rimgoNormalRedirectsChecks = [...redirects.rimgo.normal]; + for (const instance of r.cloudflareList) { + let i = rimgoNormalRedirectsChecks.indexOf(instance); + if (i > -1) rimgoNormalRedirectsChecks.splice(i, 1); + } + await browser.storage.local.set({ + disableImgur: false, + imgurProtocol: 'normal', + imgurRedirects: redirects, - i = rimgoNormalRedirectsChecks.indexOf(instance); - if (i > -1) rimgoNormalRedirectsChecks.splice(i, 1); - } - await browser.storage.local.set({ - disableImgur: false, - imgurProtocol: 'normal', - imgurRedirects: redirects, + rimgoNormalRedirectsChecks: rimgoNormalRedirectsChecks, + rimgoNormalCustomRedirects: [], - rimgoNormalRedirectsChecks: rimgoNormalRedirectsChecks, - rimgoNormalCustomRedirects: [], + rimgoTorRedirectsChecks: [...redirects.rimgo.tor], + rimgoTorCustomRedirects: [], - rimgoTorRedirectsChecks: [...redirects.rimgo.tor], - rimgoTorCustomRedirects: [], - - rimgoI2pRedirectsChecks: [...redirects.rimgo.i2p], - rimgoI2pCustomRedirects: [], + rimgoI2pRedirectsChecks: [...redirects.rimgo.i2p], + rimgoI2pCustomRedirects: [], + }); + resolve(); }); }); }); diff --git a/src/assets/javascripts/helpers/instagram.js b/src/assets/javascripts/helpers/instagram.js index a5f5b81..8890ec1 100644 --- a/src/assets/javascripts/helpers/instagram.js +++ b/src/assets/javascripts/helpers/instagram.js @@ -12,15 +12,18 @@ let redirects = { } }; function setRedirects(val) { - redirects.bibliogram = val; - browser.storage.local.set({ instagramRedirects: redirects }) - console.log("instagramRedirects: ", val) - for (const item of bibliogramNormalRedirectsChecks) - if (!redirects.bibliogram.normal.includes(item)) { - var index = bibliogramNormalRedirectsChecks.indexOf(item); - if (index !== -1) bibliogramNormalRedirectsChecks.splice(index, 1); + browser.storage.local.get('cloudflareList', async r => { + redirects.bibliogram = val; + bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal]; + for (const instance of r.cloudflareList) { + const a = bibliogramNormalRedirectsChecks.indexOf(instance); + if (a > -1) bibliogramNormalRedirectsChecks.splice(a, 1); } - browser.storage.local.set({ bibliogramNormalRedirectsChecks }); + browser.storage.local.set({ + instagramRedirects: redirects, + bibliogramNormalRedirectsChecks + }) + }) } let bibliogramNormalRedirectsChecks; @@ -49,7 +52,7 @@ function redirect(url, type, initiator) { ...r.instagramRedirects.bibliogram.tor, ...r.bibliogramNormalCustomRedirects, ...r.bibliogramTorCustomRedirects, - ].includes(initiator.origin) || targets.includes(initiator.host)) + ].includes(initiator.origin)) ) { resolve('BYPASSTAB'); return; } if (!targets.includes(url.host)) { resolve(); return; } diff --git a/src/assets/javascripts/helpers/lbry.js b/src/assets/javascripts/helpers/lbry.js index 6c51cdd..e3f216d 100644 --- a/src/assets/javascripts/helpers/lbry.js +++ b/src/assets/javascripts/helpers/lbry.js @@ -120,28 +120,31 @@ function redirect(url, type, initiator) { }) } -async function initDefaults() { - browser.storage.local.get('cloudflareList', async r => { - librarianNormalRedirectsChecks = [...redirects.librarian.normal]; - for (const instance of r.cloudflareList) { - let i; +function initDefaults() { + return new Promise(resolve => { + browser.storage.local.get('cloudflareList', async r => { + librarianNormalRedirectsChecks = [...redirects.librarian.normal]; + for (const instance of r.cloudflareList) { + let i; - i = librarianNormalRedirectsChecks.indexOf(instance); - if (i > -1) librarianNormalRedirectsChecks.splice(i, 1); - } - await browser.storage.local.set({ - disableLbryTargets: true, - lbryTargetsRedirects: { - 'librarian': redirects.librarian - }, + i = librarianNormalRedirectsChecks.indexOf(instance); + if (i > -1) librarianNormalRedirectsChecks.splice(i, 1); + } + await browser.storage.local.set({ + disableLbryTargets: true, + lbryTargetsRedirects: { + 'librarian': redirects.librarian + }, - librarianNormalRedirectsChecks: librarianNormalRedirectsChecks, - librarianNormalCustomRedirects: [], + librarianNormalRedirectsChecks: librarianNormalRedirectsChecks, + librarianNormalCustomRedirects: [], - librarianTorRedirectsChecks: [...redirects.librarian.tor], - librarianTorCustomRedirects: [], + librarianTorRedirectsChecks: [...redirects.librarian.tor], + librarianTorCustomRedirects: [], - lbryTargetsProtocol: "normal", + lbryTargetsProtocol: "normal", + }) + resolve(); }) }) } diff --git a/src/assets/javascripts/helpers/maps.js b/src/assets/javascripts/helpers/maps.js index 357221a..8d09121 100644 --- a/src/assets/javascripts/helpers/maps.js +++ b/src/assets/javascripts/helpers/maps.js @@ -18,172 +18,180 @@ let redirects = { } }; -let disable; // disableMaps -let frontend; // mapsFrontend +function redirect(url, initiator) { + return new Promise( + resolve => { + browser.storage.local.get( + [ + "disableMaps", + "mapsFrontend", -let facilNormalRedirectsChecks; -let facilNormalCustomRedirects = []; + "facilNormalRedirectsChecks", + "facilNormalCustomRedirects", + ], + async r => { + const mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/; + const dataLatLngRegex = /!3d(-?[0-9]{1,}.[0-9]{1,})!4d(-?[0-9]{1,}.[0-9]{1,})/; + const placeRegex = /\/place\/(.*)\//; + const travelModes = { + driving: "fossgis_osrm_car", + walking: "fossgis_osrm_foot", + bicycling: "fossgis_osrm_bike", + transit: "fossgis_osrm_car", // not implemented on OSM, default to car. + }; + const travelModesFacil = { + driving: "car", + walking: "pedestrian", + bicycling: "bicycle", + transit: "car", // not implemented on Facil, default to car. + }; + const osmLayers = { + none: "S", + transit: "T", + traffic: "S", // not implemented on OSM, default to standard. + bicycling: "C", + }; -async function redirect(url, initiator) { - const mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/; - const dataLatLngRegex = /!3d(-?[0-9]{1,}.[0-9]{1,})!4d(-?[0-9]{1,}.[0-9]{1,})/; - const placeRegex = /\/place\/(.*)\//; - const travelModes = { - driving: "fossgis_osrm_car", - walking: "fossgis_osrm_foot", - bicycling: "fossgis_osrm_bike", - transit: "fossgis_osrm_car", // not implemented on OSM, default to car. - }; - const travelModesFacil = { - driving: "car", - walking: "pedestrian", - bicycling: "bicycle", - transit: "car", // not implemented on Facil, default to car. - }; - const osmLayers = { - none: "S", - transit: "T", - traffic: "S", // not implemented on OSM, default to standard. - bicycling: "C", - }; + async function addressToLatLng(address) { + return new Promise(async resolve => { + const xmlhttp = new XMLHttpRequest(); + xmlhttp.onreadystatechange = () => { + if (xmlhttp.readyState === XMLHttpRequest.DONE) { + if (xmlhttp.status === 200) { + const json = JSON.parse(xmlhttp.responseText)[0]; - async function addressToLatLng(address) { - return new Promise(async resolve => { - const xmlhttp = new XMLHttpRequest(); - xmlhttp.onreadystatechange = () => { - if (xmlhttp.readyState === XMLHttpRequest.DONE) { - if (xmlhttp.status === 200) { - const json = JSON.parse(xmlhttp.responseText)[0]; + if (json) { + console.log('json', json) + resolve([ + `${json.lat},${json.lon}`, + `${json.boundingbox[2]},${json.boundingbox[1]},${json.boundingbox[3]},${json.boundingbox[0]}`, + ]); + } + } else + console.info("Error: Status is " + xmlhttp.status); + } + }; + xmlhttp.open( + "GET", + `https://nominatim.openstreetmap.org/search/${address}?format=json&limit=1`, + true + ); + xmlhttp.send(); + }) + } - if (json) { - console.log('json', json) - resolve([ - `${json.lat},${json.lon}`, - `${json.boundingbox[2]},${json.boundingbox[1]},${json.boundingbox[3]},${json.boundingbox[0]}`, - ]); + if (r.disableMaps) { resolve(); return; } + if (initiator && initiator.host === "earth.google.com") { resolve(); return; } + if (!url.href.match(targets)) { resolve(); return; } + + let randomInstance; + if (r.mapsFrontend == 'osm') randomInstance = utils.getRandomInstance(redirects.osm.normal); + if (r.mapsFrontend == 'facil') randomInstance = utils.getRandomInstance([...r.facilNormalRedirectsChecks, ...r.facilNormalCustomRedirects]); + + let mapCentre = "#"; + let prefs = {}; + + if (url.pathname.match(mapCentreRegex)) { // Set map centre if present + var [, lat, lon, zoom] = url.pathname.match(mapCentreRegex); + } else if (url.searchParams.has("center")) { + var [lat, lon] = url.searchParams.get("center").split(","); + var zoom = url.searchParams.get("zoom") ?? "17"; + } + + if (lat && lon && zoom) { + if (r.mapsFrontend == 'osm') mapCentre = `#map=${zoom}/${lat}/${lon}`; + if (r.mapsFrontend == 'facil') mapCentre = `#${zoom}/${lat}/${lon}`; + } + + if (url.searchParams.get("layer")) prefs.layers = osmLayers[url.searchParams.get("layer")]; + + if (url.pathname.includes("/embed")) { // Handle Google Maps Embed API + // https://www.google.com/maps/embed/v1/place?key=AIzaSyD4iE2xVSpkLLOXoyqT-RuPwURN3ddScAI&q=Eiffel+Tower,Paris+France + console.log("embed life"); + + 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 [coords, boundingbox] = await addressToLatLng(query); + prefs.bbox = boundingbox; + prefs.marker = coords; + prefs.layer = "mapnik"; + let prefsEncoded = new URLSearchParams(prefs).toString(); + if (r.mapsFrontend == 'osm') { resolve(`${randomInstance}/export/embed.html?${prefsEncoded}`); return; } + + if (r.mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${query}`); return; } + + } else if (url.pathname.includes("/dir")) { // Handle Google Maps Directions + // https://www.google.com/maps/dir/?api=1&origin=Space+Needle+Seattle+WA&destination=Pike+Place+Market+Seattle+WA&travelmode=bicycling + + let travMod = url.searchParams.get("travelmode"); + if (url.searchParams.has("travelmode")) prefs.engine = travelModes[travMod]; + + let orgVal = url.searchParams.get("origin"); + let destVal = url.searchParams.get("destination"); + + let org; addressToLatLng(orgVal, a => org = a); + let dest; addressToLatLng(destVal, a => dest = a); + prefs.route = `${org};${dest}`; + + let prefsEncoded = new URLSearchParams(prefs).toString(); + if (r.mapsFrontend == 'osm') { resolve(`${randomInstance}/directions?${prefsEncoded}${mapCentre}`); return; } + if (r.mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${orgVal}%20to%20${destVal}%20by%20${travelModesFacil[travMod]}`); return; } + + } else if (url.pathname.includes("data=") && url.pathname.match(dataLatLngRegex)) { // Get marker from data attribute + // https://www.google.com/maps/place/41%C2%B001'58.2%22N+40%C2%B029'18.2%22E/@41.032833,40.4862063,17z/data=!3m1!4b1!4m6!3m5!1s0x0:0xf64286eaf72fc49d!7e2!8m2!3d41.0328329!4d40.4883948 + console.log("data life"); + + let [, mlat, mlon] = url.pathname.match(dataLatLngRegex); + + if (r.mapsFrontend == 'osm') { resolve(`${randomInstance}/search?query=${mlat}%2C${mlon}`); return; } + if (r.mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${mlat}%2C${mlon}`); return; } + + } else if (url.searchParams.has("ll")) { // Get marker from ll param + // https://maps.google.com/?ll=38.882147,-76.99017 + console.log("ll life"); + + const [mlat, mlon] = url.searchParams.get("ll").split(","); + + if (r.mapsFrontend == 'osm') { resolve(`${randomInstance}/search?query=${mlat}%2C${mlon}`); return; } + if (r.mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${mlat}%2C${mlon}`); return; } + } else if (url.searchParams.has("viewpoint")) { // Get marker from viewpoint param. + // https://www.google.com/maps/@?api=1&map_action=pano&viewpoint=48.857832,2.295226&heading=-45&pitch=38&fov=80 + console.log("viewpoint life"); + + const [mlat, mlon] = url.searchParams.get("viewpoint").split(","); + + if (r.mapsFrontend == 'osm') { resolve(`${randomInstance}/search?query=${mlat}%2C${mlon}`); return; } + if (r.mapsFrontend == 'facil') { resolve(`${randomInstance}/#q=${mlat}%2C${mlon}`); return; } + } else { // Use query as search if present. + console.log("normal life"); + + 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]; + + let prefsEncoded = new URLSearchParams(prefs).toString(); + if (query) { + if (r.mapsFrontend == 'osm') { resolve(`${randomInstance}/search?query="${query}${mapCentre}&${prefsEncoded}`); return; } + if (r.mapsFrontend == 'facil') { resolve(`${randomInstance}/${mapCentre}/Mpnk/${query}`); return; } } - } else - console.info("Error: Status is " + xmlhttp.status); + } + + let prefsEncoded = new URLSearchParams(prefs).toString(); + console.log("mapCentre", mapCentre); + console.log("prefs", prefs); + console.log("prefsEncoded", prefsEncoded); + if (r.mapsFrontend == 'osm') { resolve(`${randomInstance}/${mapCentre}&${prefsEncoded}`); return; } + if (r.mapsFrontend == 'facil') { resolve(`${randomInstance}/${mapCentre}/Mpnk`); return; } } - }; - xmlhttp.open( - "GET", - `https://nominatim.openstreetmap.org/search/${address}?format=json&limit=1`, - true - ); - xmlhttp.send(); + ) }) - } - - if (disable) return; - if (initiator && initiator.host === "earth.google.com") return; - if (!url.href.match(targets)) return; - - let randomInstance; - if (frontend == 'osm') randomInstance = utils.getRandomInstance(redirects.osm.normal); - if (frontend == 'facil') randomInstance = utils.getRandomInstance([...facilNormalRedirectsChecks, ...facilNormalCustomRedirects]); - - let mapCentre = "#"; - let prefs = {}; - - if (url.pathname.match(mapCentreRegex)) { // Set map centre if present - var [, lat, lon, zoom] = url.pathname.match(mapCentreRegex); - } else if (url.searchParams.has("center")) { - var [lat, lon] = url.searchParams.get("center").split(","); - var zoom = url.searchParams.get("zoom") ?? "17"; - } - - if (lat && lon && zoom) { - if (frontend == 'osm') mapCentre = `#map=${zoom}/${lat}/${lon}`; - if (frontend == 'facil') mapCentre = `#${zoom}/${lat}/${lon}`; - } - - if (url.searchParams.get("layer")) prefs.layers = osmLayers[url.searchParams.get("layer")]; - - if (url.pathname.includes("/embed")) { // Handle Google Maps Embed API - // https://www.google.com/maps/embed/v1/place?key=AIzaSyD4iE2xVSpkLLOXoyqT-RuPwURN3ddScAI&q=Eiffel+Tower,Paris+France - console.log("embed life"); - - 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 [coords, boundingbox] = await addressToLatLng(query); - prefs.bbox = boundingbox; - prefs.marker = coords; - prefs.layer = "mapnik"; - let prefsEncoded = new URLSearchParams(prefs).toString(); - if (frontend == 'osm') return `${randomInstance}/export/embed.html?${prefsEncoded}`; - - if (frontend == 'facil') return `${randomInstance}/#q=${query}`; - - } else if (url.pathname.includes("/dir")) { // Handle Google Maps Directions - // https://www.google.com/maps/dir/?api=1&origin=Space+Needle+Seattle+WA&destination=Pike+Place+Market+Seattle+WA&travelmode=bicycling - - let travMod = url.searchParams.get("travelmode"); - if (url.searchParams.has("travelmode")) prefs.engine = travelModes[travMod]; - - let orgVal = url.searchParams.get("origin"); - let destVal = url.searchParams.get("destination"); - - let org; addressToLatLng(orgVal, a => org = a); - let dest; addressToLatLng(destVal, a => dest = a); - prefs.route = `${org};${dest}`; - - let prefsEncoded = new URLSearchParams(prefs).toString(); - if (frontend == 'osm') return `${randomInstance}/directions?${prefsEncoded}${mapCentre}`; - if (frontend == 'facil') return `${randomInstance}/#q=${orgVal}%20to%20${destVal}%20by%20${travelModesFacil[travMod]}`; - - } else if (url.pathname.includes("data=") && url.pathname.match(dataLatLngRegex)) { // Get marker from data attribute - // https://www.google.com/maps/place/41%C2%B001'58.2%22N+40%C2%B029'18.2%22E/@41.032833,40.4862063,17z/data=!3m1!4b1!4m6!3m5!1s0x0:0xf64286eaf72fc49d!7e2!8m2!3d41.0328329!4d40.4883948 - console.log("data life"); - - let [, mlat, mlon] = url.pathname.match(dataLatLngRegex); - - if (frontend == 'osm') return `${randomInstance}/search?query=${mlat}%2C${mlon}`; - if (frontend == 'facil') return `${randomInstance}/#q=${mlat}%2C${mlon}`; - - } else if (url.searchParams.has("ll")) { // Get marker from ll param - // https://maps.google.com/?ll=38.882147,-76.99017 - console.log("ll life"); - - const [mlat, mlon] = url.searchParams.get("ll").split(","); - - if (frontend == 'osm') return `${randomInstance}/search?query=${mlat}%2C${mlon}`; - if (frontend == 'facil') return `${randomInstance}/#q=${mlat}%2C${mlon}`; - } else if (url.searchParams.has("viewpoint")) { // Get marker from viewpoint param. - // https://www.google.com/maps/@?api=1&map_action=pano&viewpoint=48.857832,2.295226&heading=-45&pitch=38&fov=80 - console.log("viewpoint life"); - - const [mlat, mlon] = url.searchParams.get("viewpoint").split(","); - - if (frontend == 'osm') return `${randomInstance}/search?query=${mlat}%2C${mlon}`; - if (frontend == 'facil') return `${randomInstance}/#q=${mlat}%2C${mlon}`; - } else { // Use query as search if present. - console.log("normal life"); - - 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]; - - let prefsEncoded = new URLSearchParams(prefs).toString(); - if (query) { - if (frontend == 'osm') return `${randomInstance}/search?query="${query}${mapCentre}&${prefsEncoded}`; - if (frontend == 'facil') return `${randomInstance}/${mapCentre}/Mpnk/${query}` - } - } - - let prefsEncoded = new URLSearchParams(prefs).toString(); - console.log("mapCentre", mapCentre); - console.log("prefs", prefs); - console.log("prefsEncoded", prefsEncoded); - if (frontend == 'osm') return `${randomInstance}/${mapCentre}&${prefsEncoded}` - if (frontend == 'facil') return `${randomInstance}/${mapCentre}/Mpnk` } async function initDefaults() { @@ -198,32 +206,7 @@ async function initDefaults() { }) } -async function init() { - return new Promise( - resolve => { - browser.storage.local.get( - [ - "disableMaps", - "mapsFrontend", - - "facilNormalRedirectsChecks", - "facilNormalCustomRedirects", - ], - r => { - disable = r.disableMaps; - frontend = r.mapsFrontend; - - facilNormalRedirectsChecks = r.facilNormalRedirectsChecks; - facilNormalCustomRedirects = r.facilNormalCustomRedirects; - - resolve(); - } - ); - }); -} - export default { redirect, - init, initDefaults, }; diff --git a/src/assets/javascripts/helpers/medium.js b/src/assets/javascripts/helpers/medium.js index 788096c..aabb32b 100644 --- a/src/assets/javascripts/helpers/medium.js +++ b/src/assets/javascripts/helpers/medium.js @@ -35,25 +35,18 @@ let redirects = { } }; function setRedirects(val) { - redirects.scribe = val; - browser.storage.local.set({ mediumRedirects: redirects }) - for (const item of scribeNormalRedirectsChecks) if (!redirects.scribe.normal.includes(item)) { - var index = scribeNormalRedirectsChecks.indexOf(item); - if (index !== -1) scribeNormalRedirectsChecks.splice(index, 1); - } - browser.storage.local.set({ scribeNormalRedirectsChecks }) - - for (const item of scribeNormalRedirectsChecks) if (!redirects.scribe.normal.includes(item)) { - var index = scribeNormalRedirectsChecks.indexOf(item); - if (index !== -1) scribeNormalRedirectsChecks.splice(index, 1); - } - browser.storage.local.set({ scribeNormalRedirectsChecks }) - - for (const item of scribeTorRedirectsChecks) if (!redirects.scribe.normal.includes(item)) { - var index = scribeTorRedirectsChecks.indexOf(item); - if (index !== -1) scribeTorRedirectsChecks.splice(index, 1); - } - browser.storage.local.set({ scribeTorRedirectsChecks }) + browser.storage.local.get('cloudflareList', r => { + redirects.scribe = val; + scribeNormalRedirectsChecks = [...redirects.scribe.normal]; + for (const instance of r.cloudflareList) { + const a = scribeNormalRedirectsChecks.indexOf(instance); + if (a > -1) scribeNormalRedirectsChecks.splice(a, 1); + } + browser.storage.local.set({ + mediumRedirects: redirects, + scribeNormalRedirectsChecks + }) + }) } let scribeNormalRedirectsChecks; @@ -133,27 +126,31 @@ function switchInstance(url) { } function initDefaults() { - fetch('/instances/data.json').then(response => response.text()).then(data => { - let dataJson = JSON.parse(data); - redirects.scribe = dataJson.scribe; - browser.storage.local.get('cloudflareList', r => { - scribeNormalRedirectsChecks = [...redirects.scribe.normal]; - for (const instance of r.cloudflareList) { - let i = scribeNormalRedirectsChecks.indexOf(instance); - if (i > -1) scribeNormalRedirectsChecks.splice(i, 1); - } - browser.storage.local.set({ - disableMedium: false, - mediumRedirects: redirects, + return new Promise(resolve => { + fetch('/instances/data.json').then(response => response.text()).then(data => { + let dataJson = JSON.parse(data); + redirects.scribe = dataJson.scribe; + browser.storage.local.get('cloudflareList', + async r => { + scribeNormalRedirectsChecks = [...redirects.scribe.normal]; + for (const instance of r.cloudflareList) { + let i = scribeNormalRedirectsChecks.indexOf(instance); + if (i > -1) scribeNormalRedirectsChecks.splice(i, 1); + } + await browser.storage.local.set({ + disableMedium: false, + mediumRedirects: redirects, - scribeNormalRedirectsChecks: scribeNormalRedirectsChecks, - scribeNormalCustomRedirects: [], + scribeNormalRedirectsChecks: scribeNormalRedirectsChecks, + scribeNormalCustomRedirects: [], - scribeTorRedirectsChecks: [...redirects.scribe.tor], - scribeTorCustomRedirects: [], + scribeTorRedirectsChecks: [...redirects.scribe.tor], + scribeTorCustomRedirects: [], - mediumProtocol: "normal", - }) + mediumProtocol: "normal", + }) + resolve(); + }) }) }) } diff --git a/src/assets/javascripts/helpers/peertube.js b/src/assets/javascripts/helpers/peertube.js index f741f9c..ba06b8d 100644 --- a/src/assets/javascripts/helpers/peertube.js +++ b/src/assets/javascripts/helpers/peertube.js @@ -2,8 +2,6 @@ window.browser = window.browser || window.chrome; import utils from './utils.js' -let targets = []; - let redirects = { "simpleertube": { "normal": [ @@ -19,7 +17,6 @@ let redirects = { function setRedirects(val) { redirects.simpleertube = val; browser.storage.local.set({ peertubeTargetsRedirects: redirects }) - console.log("peertubeTargetsRedirects: ", val) for (const item of simpleertubeNormalRedirectsChecks) if (!redirects.simpleertube.normal.includes(item)) { var index = simpleertubeNormalRedirectsChecks.indexOf(item); @@ -34,15 +31,10 @@ function setRedirects(val) { } browser.storage.local.set({ simpleertubeTorRedirectsChecks }) } +let + simpleertubeNormalRedirectsChecks, + simpleertubeTorRedirectsChecks; -let simpleertubeNormalRedirectsChecks; -let simpleertubeTorRedirectsChecks; - -let simpleertubeNormalCustomRedirects = []; -let simpleertubeTorCustomRedirects = []; - -let disable; -let protocol; async function switchInstance(url) { return new Promise(resolve => { @@ -82,92 +74,82 @@ async function switchInstance(url) { } function redirect(url, type, initiator) { - if (disable) return null; - if ( - initiator && - ( + return new Promise(resolve => { + browser.storage.local.get( [ - ...redirects.simpleertube.normal, - ...simpleertubeNormalCustomRedirects - ].includes(initiator.origin) || - targets.includes(initiator.host) - ) - ) return null; - let protocolHost = utils.protocolHost(url); - if (!targets.includes(protocolHost)) return null; + "disablePeertubeTargets", - if (type != "main_frame") return null; + "peertubeRedirects", - let instancesList; - if (protocol == 'normal') instancesList = [...simpleertubeNormalRedirectsChecks, ...simpleertubeNormalCustomRedirects]; - if (protocol == 'tor') instancesList = [...simpleertubeTorRedirectsChecks, ...simpleertubeTorCustomRedirects]; - if (instancesList.length === 0) return null; - let randomInstance = utils.getRandomInstance(instancesList); + "simpleertubeNormalRedirectsChecks", + "simpleertubeNormalCustomRedirects", - if (url.host == 'search.joinpeertube.org') return randomInstance; + "simpleertubeTorRedirectsChecks", + "simpleertubeTorCustomRedirects", - return `${randomInstance}/${url.host}${url.pathname}${url.search}`; -} + "peerTubeTargets", + "peertubeTargetsProtocol" + ], + r => { + if (r.disablePeertubeTargets) { resolve(); return; } + if ( + initiator && + ( + [ + ...r.peertubeRedirects.simpleertube.normal, + ...r.simpleertubeNormalCustomRedirects + ].includes(initiator.origin) || + r.peerTubeTargets.includes(initiator.host) + ) + ) { resolve(); return; } + let protocolHost = utils.protocolHost(url); + if (!r.peerTubeTargets.includes(protocolHost)) { resolve(); return; } + if (type != "main_frame") { resolve(); return; } -async function initDefaults() { - fetch('/instances/data.json').then(response => response.text()).then(async data => { - let dataJson = JSON.parse(data); - browser.storage.local.get('cloudflareList', async r => { - simpleertubeNormalRedirectsChecks = [...redirects.simpleertube.normal]; - for (const instance of r.cloudflareList) { - let i = simpleertubeNormalRedirectsChecks.indexOf(instance); - if (i > -1) simpleertubeNormalRedirectsChecks.splice(i, 1); + let instancesList; + if (r.peertubeTargetsProtocol == 'normal') instancesList = [...r.simpleertubeNormalRedirectsChecks, ...r.simpleertubeNormalCustomRedirects]; + if (r.peertubeTargetsProtocol == 'tor') instancesList = [...r.simpleertubeTorRedirectsChecks, ...r.simpleertubeTorCustomRedirects]; + if (instancesList.length === 0) { resolve(); return; } + let randomInstance = utils.getRandomInstance(instancesList); + if (url.host == 'search.joinpeertube.org') { resolve(randomInstance); return; } + + resolve(`${randomInstance}/${url.host}${url.pathname}${url.search}`); } - await browser.storage.local.set({ - peerTubeTargets: ['https://search.joinpeertube.org', ...dataJson.peertube], - disablePeertubeTargets: true, - peertubeRedirects: redirects, + ) + }) +} +async function initDefaults() { + return new Promise(resolve => { + fetch('/instances/data.json').then(response => response.text()).then(async data => { + let dataJson = JSON.parse(data); + browser.storage.local.get('cloudflareList', async r => { + simpleertubeNormalRedirectsChecks = [...redirects.simpleertube.normal]; + for (const instance of r.cloudflareList) { + let i = simpleertubeNormalRedirectsChecks.indexOf(instance); + if (i > -1) simpleertubeNormalRedirectsChecks.splice(i, 1); + } + await browser.storage.local.set({ + peerTubeTargets: ['https://search.joinpeertube.org', ...dataJson.peertube], + disablePeertubeTargets: true, + peertubeRedirects: redirects, - simpleertubeNormalRedirectsChecks: simpleertubeNormalRedirectsChecks, - simpleertubeNormalCustomRedirects: [], + simpleertubeNormalRedirectsChecks: simpleertubeNormalRedirectsChecks, + simpleertubeNormalCustomRedirects: [], - simpleertubeTorRedirectsChecks: [...redirects.simpleertube.tor], - simpleertubeTorCustomRedirects: [], + simpleertubeTorRedirectsChecks: [...redirects.simpleertube.tor], + simpleertubeTorCustomRedirects: [], - peertubeTargetsProtocol: "normal", + peertubeTargetsProtocol: "normal", + }) + resolve(); }) }) }) } -async function init() { - await browser.storage.local.get( - [ - "disablePeertubeTargets", - "simpleertubeNormalRedirectsChecks", - "simpleertubeNormalCustomRedirects", - - "simpleertubeTorRedirectsChecks", - "simpleertubeTorCustomRedirects", - - "peerTubeTargets", - "peertubeTargetsProtocol" - ], - r => { - disable = r.disablePeertubeTargets; - protocol = r.peertubeTargetsProtocol; - targets = r.peerTubeTargets; - - simpleertubeNormalRedirectsChecks = r.simpleertubeNormalRedirectsChecks; - simpleertubeNormalCustomRedirects = r.simpleertubeNormalCustomRedirects; - - simpleertubeTorRedirectsChecks = r.simpleertubeTorRedirectsChecks; - simpleertubeTorCustomRedirects = r.simpleertubeTorCustomRedirects; - } - ) -} - export default { setRedirects, - switchInstance, - redirect, initDefaults, - init, }; diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js index e768b20..3b5c7d8 100644 --- a/src/assets/javascripts/helpers/reddit.js +++ b/src/assets/javascripts/helpers/reddit.js @@ -16,50 +16,29 @@ let redirects = { "tor": [] }, }; -function setLibredditRedirects(val) { - redirects.libreddit = val; - browser.storage.local.set({ redditRedirects: redirects }) - console.log("libredditRedirects:", val) - for (const item of libredditNormalRedirectsChecks) - if (!redirects.libreddit.normal.includes(item)) { - var index = libredditNormalRedirectsChecks.indexOf(item); - if (index !== -1) libredditNormalRedirectsChecks.splice(index, 1); - } - browser.storage.local.set({ libredditNormalRedirectsChecks }) +function setRedirects(val) { + browser.storage.local.get('cloudflareList', r => { + redirects = val; + libredditNormalRedirectsChecks = [...redirects.libreddit.normal]; + tedditNormalRedirectsChecks = [...redirects.teddit.normal] + for (const instance of r.cloudflareList) { + const a = libredditNormalRedirectsChecks.indexOf(instance); + if (a > -1) libredditNormalRedirectsChecks.splice(a, 1); - for (const item of libredditTorRedirectsChecks) - if (!redirects.libreddit.normal.includes(item)) { - var index = libredditTorRedirectsChecks.indexOf(item); - if (index !== -1) libredditTorRedirectsChecks.splice(index, 1); + const b = tedditNormalRedirectsChecks.indexOf(instance); + if (b > -1) tedditNormalRedirectsChecks.splice(b, 1); } - browser.storage.local.set({ libredditTorRedirectsChecks }) -} - -function setTedditRedirects(val) { - redirects.teddit = val; - browser.storage.local.set({ redditRedirects: redirects }) - console.log("tedditRedirects:", val) - for (const item of tedditNormalRedirectsChecks) - if (!redirects.teddit.normal.includes(item)) { - var index = tedditNormalRedirectsChecks.indexOf(item); - if (index !== -1) tedditNormalRedirectsChecks.splice(index, 1); - } - browser.storage.local.set({ tedditNormalRedirectsChecks }) - - for (const item of tedditTorRedirectsChecks) - if (!redirects.teddit.normal.includes(item)) { - var index = tedditTorRedirectsChecks.indexOf(item); - if (index !== -1) tedditTorRedirectsChecks.splice(index, 1); - } - browser.storage.local.set({ tedditTorRedirectsChecks }) + browser.storage.local.set({ + redditRedirects: redirects, + libredditNormalRedirectsChecks, + tedditNormalRedirectsChecks + }) + }) } let libredditNormalRedirectsChecks, - libredditTorRedirectsChecks, - - tedditNormalRedirectsChecks, - tedditTorRedirectsChecks; + tedditNormalRedirectsChecks; function initLibredditCookies(test, from) { return new Promise(resolve => { @@ -105,35 +84,38 @@ function initLibredditCookies(test, from) { } function setLibredditCookies() { - browser.storage.local.get( - [ - "redditProtocol", - "disableReddit", - "redditFrontend", - "libredditNormalRedirectsChecks", - "libredditNormalCustomRedirects", - "libredditTorRedirectsChecks", - "libredditTorCustomRedirects", - ], - r => { - if (r.disableReddit || r.redditFrontend != 'libreddit' || r.redditProtocol === undefined) return; - let checkedInstances; - if (r.redditProtocol == 'normal') checkedInstances = [...r.libredditNormalRedirectsChecks, ...r.libredditNormalCustomRedirects] - else if (r.redditProtocol == 'tor') checkedInstances = [...r.libredditTorRedirectsChecks, ...r.libredditTorCustomRedirects] - for (const to of checkedInstances) { - utils.getCookiesFromStorage('libreddit', to, "theme"); - utils.getCookiesFromStorage('libreddit', to, "front_page"); - utils.getCookiesFromStorage('libreddit', to, "layout"); - utils.getCookiesFromStorage('libreddit', to, "wide"); - utils.getCookiesFromStorage('libreddit', to, "post_sort"); - utils.getCookiesFromStorage('libreddit', to, "comment_sort"); - utils.getCookiesFromStorage('libreddit', to, "show_nsfw"); - utils.getCookiesFromStorage('libreddit', to, "autoplay_videos"); - utils.getCookiesFromStorage('libreddit', to, "use_hls"); - utils.getCookiesFromStorage('libreddit', to, "hide_hls_notification"); + return new Promise(resolve => { + browser.storage.local.get( + [ + "redditProtocol", + "disableReddit", + "redditFrontend", + "libredditNormalRedirectsChecks", + "libredditNormalCustomRedirects", + "libredditTorRedirectsChecks", + "libredditTorCustomRedirects", + ], + r => { + if (r.disableReddit || r.redditFrontend != 'libreddit' || r.redditProtocol === undefined) { resolve(); return; } + let checkedInstances; + if (r.redditProtocol == 'normal') checkedInstances = [...r.libredditNormalRedirectsChecks, ...r.libredditNormalCustomRedirects] + else if (r.redditProtocol == 'tor') checkedInstances = [...r.libredditTorRedirectsChecks, ...r.libredditTorCustomRedirects] + for (const to of checkedInstances) { + utils.getCookiesFromStorage('libreddit', to, "theme"); + utils.getCookiesFromStorage('libreddit', to, "front_page"); + utils.getCookiesFromStorage('libreddit', to, "layout"); + utils.getCookiesFromStorage('libreddit', to, "wide"); + utils.getCookiesFromStorage('libreddit', to, "post_sort"); + utils.getCookiesFromStorage('libreddit', to, "comment_sort"); + utils.getCookiesFromStorage('libreddit', to, "show_nsfw"); + utils.getCookiesFromStorage('libreddit', to, "autoplay_videos"); + utils.getCookiesFromStorage('libreddit', to, "use_hls"); + utils.getCookiesFromStorage('libreddit', to, "hide_hls_notification"); + } + resolve(); } - } - ) + ) + }) } function initTedditCookies(test, from) { @@ -181,37 +163,40 @@ function initTedditCookies(test, from) { } function setTedditCookies() { - browser.storage.local.get( - [ - "redditProtocol", - "disableReddit", - "redditFrontend", - "tedditNormalRedirectsChecks", - "tedditNormalCustomRedirects", - "tedditTorRedirectsChecks", - "tedditTorCustomRedirects", - ], - r => { - if (r.disableReddit || r.redditFrontend != 'teddit' || r.redditProtocol === undefined) return; - let checkedInstances; - if (r.redditProtocol == 'normal') checkedInstances = [...r.tedditNormalRedirectsChecks, ...r.tedditNormalCustomRedirects] - else if (r.redditProtocol == 'tor') checkedInstances = [...r.tedditTorRedirectsChecks, ...r.tedditTorCustomRedirects] - for (const to of checkedInstances) { - utils.getCookiesFromStorage('teddit', to, 'collapse_child_comments') - utils.getCookiesFromStorage('teddit', to, 'domain_instagram') - utils.getCookiesFromStorage('teddit', to, 'domain_twitter') - utils.getCookiesFromStorage('teddit', to, 'domain_youtube') - utils.getCookiesFromStorage('teddit', to, 'flairs') - utils.getCookiesFromStorage('teddit', to, 'highlight_controversial') - utils.getCookiesFromStorage('teddit', to, 'nsfw_enabled') - utils.getCookiesFromStorage('teddit', to, 'post_media_max_height') - utils.getCookiesFromStorage('teddit', to, 'show_upvoted_percentage') - utils.getCookiesFromStorage('teddit', to, 'show_upvotes') - utils.getCookiesFromStorage('teddit', to, 'theme') - utils.getCookiesFromStorage('teddit', to, 'videos_muted') + return new Promise(resolve => { + browser.storage.local.get( + [ + "redditProtocol", + "disableReddit", + "redditFrontend", + "tedditNormalRedirectsChecks", + "tedditNormalCustomRedirects", + "tedditTorRedirectsChecks", + "tedditTorCustomRedirects", + ], + r => { + if (r.disableReddit || r.redditFrontend != 'teddit' || r.redditProtocol === undefined) { resolve(); return; } + let checkedInstances; + if (r.redditProtocol == 'normal') checkedInstances = [...r.tedditNormalRedirectsChecks, ...r.tedditNormalCustomRedirects] + else if (r.redditProtocol == 'tor') checkedInstances = [...r.tedditTorRedirectsChecks, ...r.tedditTorCustomRedirects] + for (const to of checkedInstances) { + utils.getCookiesFromStorage('teddit', to, 'collapse_child_comments') + utils.getCookiesFromStorage('teddit', to, 'domain_instagram') + utils.getCookiesFromStorage('teddit', to, 'domain_twitter') + utils.getCookiesFromStorage('teddit', to, 'domain_youtube') + utils.getCookiesFromStorage('teddit', to, 'flairs') + utils.getCookiesFromStorage('teddit', to, 'highlight_controversial') + utils.getCookiesFromStorage('teddit', to, 'nsfw_enabled') + utils.getCookiesFromStorage('teddit', to, 'post_media_max_height') + utils.getCookiesFromStorage('teddit', to, 'show_upvoted_percentage') + utils.getCookiesFromStorage('teddit', to, 'show_upvotes') + utils.getCookiesFromStorage('teddit', to, 'theme') + utils.getCookiesFromStorage('teddit', to, 'videos_muted') + } + resolve(); } - } - ) + ) + }) } function redirect(url, type, initiator) { @@ -403,48 +388,49 @@ function switchInstance(url) { } function initDefaults() { - fetch('/instances/data.json').then(response => response.text()).then(async data => { - let dataJson = JSON.parse(data); - redirects.teddit = dataJson.teddit; - redirects.libreddit = dataJson.libreddit; - browser.storage.local.get('cloudflareList', async r => { - libredditNormalRedirectsChecks = [...redirects.libreddit.normal]; - tedditNormalRedirectsChecks = [...redirects.teddit.normal] - for (const instance of r.cloudflareList) { - let i; + return new Promise(resolve => { + fetch('/instances/data.json').then(response => response.text()).then(async data => { + let dataJson = JSON.parse(data); + redirects.teddit = dataJson.teddit; + redirects.libreddit = dataJson.libreddit; + browser.storage.local.get('cloudflareList', async r => { + libredditNormalRedirectsChecks = [...redirects.libreddit.normal]; + tedditNormalRedirectsChecks = [...redirects.teddit.normal] + for (const instance of r.cloudflareList) { + let i; - i = libredditNormalRedirectsChecks.indexOf(instance); - if (i > -1) libredditNormalRedirectsChecks.splice(i, 1); + i = libredditNormalRedirectsChecks.indexOf(instance); + if (i > -1) libredditNormalRedirectsChecks.splice(i, 1); - i = tedditNormalRedirectsChecks.indexOf(instance); - if (i > -1) tedditNormalRedirectsChecks.splice(i, 1); - } - await browser.storage.local.set({ - disableReddit: false, - redditProtocol: 'normal', - redditFrontend: 'libreddit', - redditRedirects: redirects, + i = tedditNormalRedirectsChecks.indexOf(instance); + if (i > -1) tedditNormalRedirectsChecks.splice(i, 1); + } + await browser.storage.local.set({ + disableReddit: false, + redditProtocol: 'normal', + redditFrontend: 'libreddit', + redditRedirects: redirects, - libredditNormalRedirectsChecks: libredditNormalRedirectsChecks, - libredditNormalCustomRedirects: [], + libredditNormalRedirectsChecks: libredditNormalRedirectsChecks, + libredditNormalCustomRedirects: [], - libredditTorRedirectsChecks: [...redirects.libreddit.tor], - libredditTorCustomRedirects: [], + libredditTorRedirectsChecks: [...redirects.libreddit.tor], + libredditTorCustomRedirects: [], - tedditNormalRedirectsChecks: tedditNormalRedirectsChecks, - tedditNormalCustomRedirects: [], + tedditNormalRedirectsChecks: tedditNormalRedirectsChecks, + tedditNormalCustomRedirects: [], - tedditTorRedirectsChecks: [...redirects.teddit.tor], - tedditTorCustomRedirects: [], + tedditTorRedirectsChecks: [...redirects.teddit.tor], + tedditTorCustomRedirects: [], + }); + resolve(); }); }); }); } export default { - setTedditRedirects, - setLibredditRedirects, - + setRedirects, initLibredditCookies, setLibredditCookies, initTedditCookies, diff --git a/src/assets/javascripts/helpers/search.js b/src/assets/javascripts/helpers/search.js index 56f0f02..511fc53 100644 --- a/src/assets/javascripts/helpers/search.js +++ b/src/assets/javascripts/helpers/search.js @@ -8,7 +8,7 @@ const targets = [ /^https?:\/{2}yandex(\.[a-z]{2,3}){1,2}/, - /^https?:\/{2}libredirect\.invalid/, + /^https?:\/{2}search\.libredirect\.invalid/, ]; let redirects = { "searx": { @@ -28,87 +28,35 @@ let redirects = { } }; -function setSearxRedirects(val) { - redirects.searx = val; - browser.storage.local.set({ searchRedirects: redirects }) - console.log("searxRedirects:", val) - for (const item of searxNormalRedirectsChecks) if (!redirects.searx.normal.includes(item)) { - var index = searxNormalRedirectsChecks.indexOf(item); - if (index !== -1) searxNormalRedirectsChecks.splice(index, 1); - } - browser.storage.local.set({ searxNormalRedirectsChecks }); +function setRedirects(val) { + browser.storage.local.get('cloudflareList', r => { + redirects = val; + searxNormalRedirectsChecks = [...redirects.searx.normal]; + searxngNormalRedirectsChecks = [...redirects.searxng.normal]; + whoogleNormalRedirectsChecks = [...redirects.whoogle.normal]; + for (const instance of r.cloudflareList) { + const a = searxNormalRedirectsChecks.indexOf(instance); + if (a > -1) searxNormalRedirectsChecks.splice(a, 1); - for (const item of searxTorRedirectsChecks) if (!redirects.searx.tor.includes(item)) { - var index = searxTorRedirectsChecks.indexOf(item); - if (index !== -1) searxTorRedirectsChecks.splice(index, 1); - } - browser.storage.local.set({ searxTorRedirectsChecks }) + const b = searxngNormalRedirectsChecks.indexOf(instance); + if (b > -1) searxngNormalRedirectsChecks.splice(b, 1); - for (const item of searxI2pRedirectsChecks) if (!redirects.searx.i2p.includes(item)) { - var index = searxI2pRedirectsChecks.indexOf(item); - if (index !== -1) searxI2pRedirectsChecks.splice(index, 1); - } - browser.storage.local.set({ searxI2pRedirectsChecks }); -} - -function setSearxngRedirects(val) { - redirects.searxng = val; - browser.storage.local.set({ searchRedirects: redirects }) - console.log("searxngRedirects:", val) - for (const item of searxngNormalRedirectsChecks) if (!redirects.searxng.normal.includes(item)) { - var index = searxngNormalRedirectsChecks.indexOf(item); - if (index !== -1) searxngNormalRedirectsChecks.splice(index, 1); - } - browser.storage.local.set({ searxngNormalRedirectsChecks }) - - for (const item of searxngTorRedirectsChecks) if (!redirects.searxng.tor.includes(item)) { - var index = searxngTorRedirectsChecks.indexOf(item); - if (index !== -1) searxngTorRedirectsChecks.splice(index, 1); - } - browser.storage.local.set({ searxngTorRedirectsChecks }); - - for (const item of searxngI2pRedirectsChecks) if (!redirects.searxng.i2p.includes(item)) { - var index = searxngI2pRedirectsChecks.indexOf(item); - if (index !== -1) searxngI2pRedirectsChecks.splice(index, 1); - } - browser.storage.local.set({ searxngI2pRedirectsChecks }) -} - -function setWhoogleRedirects(val) { - redirects.whoogle = val; - browser.storage.local.set({ searchRedirects: redirects }) - console.log("whoogleRedirects:", val) - for (const item of whoogleNormalRedirectsChecks) if (!redirects.whoogle.normal.includes(item)) { - var index = whoogleNormalRedirectsChecks.indexOf(item); - if (index !== -1) whoogleNormalRedirectsChecks.splice(index, 1); - } - browser.storage.local.set({ whoogleNormalRedirectsChecks }) - - for (const item of whoogleTorRedirectsChecks) if (!redirects.whoogle.tor.includes(item)) { - var index = whoogleTorRedirectsChecks.indexOf(item); - if (index !== -1) whoogleTorRedirectsChecks.splice(index, 1); - } - browser.storage.local.set({ whoogleTorRedirectsChecks }) - - for (const item of whoogleI2pRedirectsChecks) if (!redirects.whoogle.i2p.includes(item)) { - var index = whoogleI2pRedirectsChecks.indexOf(item); - if (index !== -1) whoogleI2pRedirectsChecks.splice(index, 1); - } - browser.storage.local.set({ whoogleI2pRedirectsChecks }) + const c = whoogleNormalRedirectsChecks.indexOf(instance); + if (c > -1) whoogleNormalRedirectsChecks.splice(c, 1); + } + browser.storage.local.set({ + searchRedirects: redirects, + searxNormalRedirectsChecks, + searxngNormalRedirectsChecks, + whoogleNormalRedirectsChecks, + }); + }) } let searxNormalRedirectsChecks, - searxI2pRedirectsChecks, - searxTorRedirectsChecks, - searxngNormalRedirectsChecks, - searxngI2pRedirectsChecks, - searxngTorRedirectsChecks, - - whoogleNormalRedirectsChecks, - whoogleI2pRedirectsChecks, - whoogleTorRedirectsChecks; + whoogleNormalRedirectsChecks; function initSearxCookies(test, from) { return new Promise(resolve => { @@ -165,42 +113,45 @@ function initSearxCookies(test, from) { } function setSearxCookies() { - browser.storage.local.get( - [ - "disableSearch", - "searchProtocol", - "searchFrontend", - "searxNormalRedirectsChecks", - "searxNormalCustomRedirects", - "searxTorRedirectsChecks", - "searxTorCustomRedirects", - ], - r => { - if (r.disableSearch || r.searchFrontend != 'searx', r.searchProtocol === undefined) return; - let checkedInstances; - if (r.searchProtocol == 'normal') checkedInstances = [...r.searxNormalRedirectsChecks, ...r.searxNormalCustomRedirects] - else if (r.searchProtocol == 'tor') checkedInstances = [...r.searxTorRedirectsChecks, ...r.searxTorCustomRedirects] - for (const to of checkedInstances) { - utils.getCookiesFromStorage('searx', to, 'advanced_search'); - utils.getCookiesFromStorage('searx', to, 'autocomplete'); - utils.getCookiesFromStorage('searx', to, 'categories'); - utils.getCookiesFromStorage('searx', to, 'disabled_engines'); - utils.getCookiesFromStorage('searx', to, 'disabled_plugins'); - utils.getCookiesFromStorage('searx', to, 'doi_resolver'); - utils.getCookiesFromStorage('searx', to, 'enabled_engines'); - utils.getCookiesFromStorage('searx', to, 'enabled_plugins'); - utils.getCookiesFromStorage('searx', to, 'image_proxy'); - utils.getCookiesFromStorage('searx', to, 'language'); - utils.getCookiesFromStorage('searx', to, 'locale'); - utils.getCookiesFromStorage('searx', to, 'method'); - utils.getCookiesFromStorage('searx', to, 'oscar-style'); - utils.getCookiesFromStorage('searx', to, 'results_on_new_tab'); - utils.getCookiesFromStorage('searx', to, 'safesearch'); - utils.getCookiesFromStorage('searx', to, 'theme'); - utils.getCookiesFromStorage('searx', to, 'tokens'); + return new Promise(resolve => { + browser.storage.local.get( + [ + "disableSearch", + "searchProtocol", + "searchFrontend", + "searxNormalRedirectsChecks", + "searxNormalCustomRedirects", + "searxTorRedirectsChecks", + "searxTorCustomRedirects", + ], + r => { + if (r.disableSearch || r.searchFrontend != 'searx', r.searchProtocol === undefined) { resolve(); return; } + let checkedInstances; + if (r.searchProtocol == 'normal') checkedInstances = [...r.searxNormalRedirectsChecks, ...r.searxNormalCustomRedirects] + else if (r.searchProtocol == 'tor') checkedInstances = [...r.searxTorRedirectsChecks, ...r.searxTorCustomRedirects] + for (const to of checkedInstances) { + utils.getCookiesFromStorage('searx', to, 'advanced_search'); + utils.getCookiesFromStorage('searx', to, 'autocomplete'); + utils.getCookiesFromStorage('searx', to, 'categories'); + utils.getCookiesFromStorage('searx', to, 'disabled_engines'); + utils.getCookiesFromStorage('searx', to, 'disabled_plugins'); + utils.getCookiesFromStorage('searx', to, 'doi_resolver'); + utils.getCookiesFromStorage('searx', to, 'enabled_engines'); + utils.getCookiesFromStorage('searx', to, 'enabled_plugins'); + utils.getCookiesFromStorage('searx', to, 'image_proxy'); + utils.getCookiesFromStorage('searx', to, 'language'); + utils.getCookiesFromStorage('searx', to, 'locale'); + utils.getCookiesFromStorage('searx', to, 'method'); + utils.getCookiesFromStorage('searx', to, 'oscar-style'); + utils.getCookiesFromStorage('searx', to, 'results_on_new_tab'); + utils.getCookiesFromStorage('searx', to, 'safesearch'); + utils.getCookiesFromStorage('searx', to, 'theme'); + utils.getCookiesFromStorage('searx', to, 'tokens'); + } + resolve(); } - } - ) + ) + }) } function initSearxngCookies(test, from) { @@ -260,44 +211,47 @@ function initSearxngCookies(test, from) { } function setSearxngCookies() { - browser.storage.local.get( - [ - "searchProtocol", - "disableSearch", - "searchFrontend", - "searxngNormalRedirectsChecks", - "searxngNormalCustomRedirects", - "searxngTorRedirectsChecks", - "searxngTorCustomRedirects", - ], - r => { - if (r.disableSearch || r.searchFrontend != 'searxng', r.searchProtocol === undefined) return; - let checkedInstances; - if (r.searchProtocol == 'normal') checkedInstances = [...r.searxngNormalRedirectsChecks, ...r.searxngNormalCustomRedirects] - else if (r.searchProtocol == 'tor') checkedInstances = [...r.searxngTorRedirectsChecks, ...r.searxngTorCustomRedirects] - for (const to of checkedInstances) { - utils.getCookiesFromStorage('searxng', to, 'autocomplete'); - utils.getCookiesFromStorage('searxng', to, 'categories'); - utils.getCookiesFromStorage('searxng', to, 'disabled_engines'); - utils.getCookiesFromStorage('searxng', to, 'disabled_plugins'); - utils.getCookiesFromStorage('searxng', to, 'doi_resolver'); - utils.getCookiesFromStorage('searxng', to, 'enabled_plugins'); - utils.getCookiesFromStorage('searxng', to, 'enabled_engines'); - utils.getCookiesFromStorage('searxng', to, 'image_proxy'); - utils.getCookiesFromStorage('searxng', to, 'infinite_scroll'); - utils.getCookiesFromStorage('searxng', to, 'language'); - utils.getCookiesFromStorage('searxng', to, 'locale'); - utils.getCookiesFromStorage('searxng', to, 'maintab'); - utils.getCookiesFromStorage('searxng', to, 'method'); - utils.getCookiesFromStorage('searxng', to, 'query_in_title'); - utils.getCookiesFromStorage('searxng', to, 'results_on_new_tab'); - utils.getCookiesFromStorage('searxng', to, 'safesearch'); - utils.getCookiesFromStorage('searxng', to, 'simple_style'); - utils.getCookiesFromStorage('searxng', to, 'theme'); - utils.getCookiesFromStorage('searxng', to, 'tokens'); + return new Promise(resolve => { + browser.storage.local.get( + [ + "searchProtocol", + "disableSearch", + "searchFrontend", + "searxngNormalRedirectsChecks", + "searxngNormalCustomRedirects", + "searxngTorRedirectsChecks", + "searxngTorCustomRedirects", + ], + r => { + if (r.disableSearch || r.searchFrontend != 'searxng', r.searchProtocol === undefined) { resolve(); return; } + let checkedInstances; + if (r.searchProtocol == 'normal') checkedInstances = [...r.searxngNormalRedirectsChecks, ...r.searxngNormalCustomRedirects] + else if (r.searchProtocol == 'tor') checkedInstances = [...r.searxngTorRedirectsChecks, ...r.searxngTorCustomRedirects] + for (const to of checkedInstances) { + utils.getCookiesFromStorage('searxng', to, 'autocomplete'); + utils.getCookiesFromStorage('searxng', to, 'categories'); + utils.getCookiesFromStorage('searxng', to, 'disabled_engines'); + utils.getCookiesFromStorage('searxng', to, 'disabled_plugins'); + utils.getCookiesFromStorage('searxng', to, 'doi_resolver'); + utils.getCookiesFromStorage('searxng', to, 'enabled_plugins'); + utils.getCookiesFromStorage('searxng', to, 'enabled_engines'); + utils.getCookiesFromStorage('searxng', to, 'image_proxy'); + utils.getCookiesFromStorage('searxng', to, 'infinite_scroll'); + utils.getCookiesFromStorage('searxng', to, 'language'); + utils.getCookiesFromStorage('searxng', to, 'locale'); + utils.getCookiesFromStorage('searxng', to, 'maintab'); + utils.getCookiesFromStorage('searxng', to, 'method'); + utils.getCookiesFromStorage('searxng', to, 'query_in_title'); + utils.getCookiesFromStorage('searxng', to, 'results_on_new_tab'); + utils.getCookiesFromStorage('searxng', to, 'safesearch'); + utils.getCookiesFromStorage('searxng', to, 'simple_style'); + utils.getCookiesFromStorage('searxng', to, 'theme'); + utils.getCookiesFromStorage('searxng', to, 'tokens'); + } + resolve(); } - } - ) + ) + }) } function redirect(url) { @@ -381,7 +335,7 @@ function redirect(url) { ( url.hostname.includes('google') || url.hostname.includes('bing') || - url.hostname.includes('libredirect.invalid') + url.hostname.includes('search.libredirect.invalid') ) && url.searchParams.has('q') ) searchQuery = `?q=${url.searchParams.get('q')}`; @@ -485,71 +439,72 @@ async function switchInstance(url) { }) } -async function initDefaults() { - await fetch('/instances/data.json').then(response => response.text()).then(async data => { - let dataJson = JSON.parse(data); - redirects.searx = dataJson.searx; - redirects.searxng = dataJson.searxng; - redirects.whoogle = dataJson.whoogle; +function initDefaults() { + return new Promise(async resolve => { + fetch('/instances/data.json').then(response => response.text()).then(async data => { + let dataJson = JSON.parse(data); + redirects.searx = dataJson.searx; + redirects.searxng = dataJson.searxng; + redirects.whoogle = dataJson.whoogle; - browser.storage.local.get('cloudflareList', async r => { - whoogleNormalRedirectsChecks = [...redirects.whoogle.normal]; - searxNormalRedirectsChecks = [...redirects.searx.normal]; - searxngNormalRedirectsChecks = [...redirects.searxng.normal]; - for (const instance of r.cloudflareList) { - let i; + browser.storage.local.get('cloudflareList', async r => { + whoogleNormalRedirectsChecks = [...redirects.whoogle.normal]; + searxNormalRedirectsChecks = [...redirects.searx.normal]; + searxngNormalRedirectsChecks = [...redirects.searxng.normal]; + for (const instance of r.cloudflareList) { + let i; - i = whoogleNormalRedirectsChecks.indexOf(instance); - if (i > -1) whoogleNormalRedirectsChecks.splice(i, 1); + i = whoogleNormalRedirectsChecks.indexOf(instance); + if (i > -1) whoogleNormalRedirectsChecks.splice(i, 1); - i = searxNormalRedirectsChecks.indexOf(instance); - if (i > -1) searxNormalRedirectsChecks.splice(i, 1); + i = searxNormalRedirectsChecks.indexOf(instance); + if (i > -1) searxNormalRedirectsChecks.splice(i, 1); - i = searxngNormalRedirectsChecks.indexOf(instance); - if (i > -1) searxngNormalRedirectsChecks.splice(i, 1); - } - await browser.storage.local.set({ - disableSearch: false, - searchFrontend: 'searxng', - searchRedirects: redirects, - searxngCustomSettings: false, - searchProtocol: 'normal', + i = searxngNormalRedirectsChecks.indexOf(instance); + if (i > -1) searxngNormalRedirectsChecks.splice(i, 1); + } + await browser.storage.local.set({ + disableSearch: false, + searchFrontend: 'searxng', + searchRedirects: redirects, + searxngCustomSettings: false, + searchProtocol: 'normal', - whoogleNormalRedirectsChecks: whoogleNormalRedirectsChecks, - whoogleNormalCustomRedirects: [], + whoogleNormalRedirectsChecks: whoogleNormalRedirectsChecks, + whoogleNormalCustomRedirects: [], - whoogleTorRedirectsChecks: [...redirects.whoogle.tor], - whoogleTorCustomRedirects: [], + whoogleTorRedirectsChecks: [...redirects.whoogle.tor], + whoogleTorCustomRedirects: [], - whoogleI2pRedirectsChecks: [...redirects.whoogle.i2p], - whoogleI2pCustomRedirects: [], + whoogleI2pRedirectsChecks: [...redirects.whoogle.i2p], + whoogleI2pCustomRedirects: [], - searxNormalRedirectsChecks: searxNormalRedirectsChecks, - searxNormalCustomRedirects: [], + searxNormalRedirectsChecks: searxNormalRedirectsChecks, + searxNormalCustomRedirects: [], - searxTorRedirectsChecks: [...redirects.searx.tor], - searxTorCustomRedirects: [], + searxTorRedirectsChecks: [...redirects.searx.tor], + searxTorCustomRedirects: [], - searxI2pRedirectsChecks: [...redirects.searx.i2p], - searxI2pCustomRedirects: [], + searxI2pRedirectsChecks: [...redirects.searx.i2p], + searxI2pCustomRedirects: [], - searxngNormalRedirectsChecks: searxngNormalRedirectsChecks, - searxngNormalCustomRedirects: [], + searxngNormalRedirectsChecks: searxngNormalRedirectsChecks, + searxngNormalCustomRedirects: [], - searxngTorRedirectsChecks: [...redirects.searxng.tor], - searxngTorCustomRedirects: [], + searxngTorRedirectsChecks: [...redirects.searxng.tor], + searxngTorCustomRedirects: [], - searxngI2pRedirectsChecks: [...redirects.searxng.i2p], - searxngI2pCustomRedirects: [], + searxngI2pRedirectsChecks: [...redirects.searxng.i2p], + searxngI2pCustomRedirects: [], + }) + resolve(); }) }) }) } export default { - setSearxRedirects, - setSearxngRedirects, - setWhoogleRedirects, + setRedirects, initSearxCookies, setSearxCookies, diff --git a/src/assets/javascripts/helpers/sendTargets.js b/src/assets/javascripts/helpers/sendTargets.js index c593913..be99e0d 100644 --- a/src/assets/javascripts/helpers/sendTargets.js +++ b/src/assets/javascripts/helpers/sendTargets.js @@ -3,7 +3,7 @@ window.browser = window.browser || window.chrome; import utils from './utils.js' const targets = [ - /^https?:\/{2}send.invalid\/$/, + /^https?:\/{2}send\.libredirect\.invalid\/$/, /^ https ?: \/\/send\.firefox\.com\/$/, /^https?:\/{2}sendfiles\.online\/$/ ]; @@ -15,33 +15,23 @@ let redirects = { } } function setRedirects(val) { - redirects.send = val; - browser.storage.local.set({ sendTargetsRedirects: redirects }) - console.log("sendTargetsRedirects: ", val) - for (const item of sendNormalRedirectsChecks) - if (!redirects.send.normal.includes(item)) { - var index = sendNormalRedirectsChecks.indexOf(item); - if (index !== -1) sendNormalRedirectsChecks.splice(index, 1); + browser.storage.local.get('cloudflareList', r => { + redirects.send = val; + sendNormalRedirectsChecks = [...redirects.send.normal]; + for (const instance of r.cloudflareList) { + const a = sendNormalRedirectsChecks.indexOf(instance); + if (a > -1) sendNormalRedirectsChecks.splice(a, 1); } - browser.storage.local.set({ sendNormalRedirectsChecks }) - - for (const item of sendTorRedirectsChecks) - if (!redirects.send.normal.includes(item)) { - var index = sendTorRedirectsChecks.indexOf(item); - if (index !== -1) sendTorRedirectsChecks.splice(index, 1); - } - browser.storage.local.set({ sendTorRedirectsChecks }) + browser.storage.local.set({ + sendTargetsRedirects: redirects, + sendNormalRedirectsChecks, + }) + }) } let sendNormalRedirectsChecks; -let sendTorRedirectsChecks; -let sendNormalCustomRedirects = []; -let sendTorCustomRedirects = []; -let disable; // disableSendTarget -let protocol; // sendTargetsProtocol - -async function switchInstance(url) { +function switchInstance(url) { return new Promise(resolve => { browser.storage.local.get( [ @@ -82,85 +72,80 @@ async function switchInstance(url) { } function redirect(url, type, initiator) { - if (disable) return null; - if (type != "main_frame") return null; - if (initiator && ( - [...redirects.send.normal, - ...sendNormalCustomRedirects - ].includes(initiator.origin) || - targets.includes(initiator.host) - )) return null; - if (!targets.some(rx => rx.test(url.href))) return null; + return new Promise(resolve => { + browser.storage.local.get( + [ + "disableSendTarget", + "sendTargetsRedirects", - let instancesList; - if (protocol == 'normal') instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects]; - if (protocol == 'tor') instancesList = [...sendTorRedirectsChecks, ...sendTorCustomRedirects]; - if (instancesList.length === 0) return null; - let randomInstance = utils.getRandomInstance(instancesList); + "sendNormalRedirectsChecks", + "sendNormalCustomRedirects", - return randomInstance; + "sendTorRedirectsChecks", + "sendTorCustomRedirects", + + "sendTargetsProtocol" + ], + r => { + if (r.disableSendTarget) { resolve(); return; } + if (type != "main_frame") { resolve(); return; } + if ( + initiator && ( + [ + ...r.sendTargetsRedirects.send.normal, + ...r.sendTargetsRedirects.send.tor, + ...r.sendNormalCustomRedirects, + ...r.sendTorRedirectsChecks + ].includes(initiator.origin) || + targets.includes(initiator.host) + ) + ) { resolve(); return; } + if (!targets.some(rx => rx.test(url.href))) { resolve(); return; } + + let instancesList; + if (r.sendTargetsProtocol == 'normal') instancesList = [...r.sendNormalRedirectsChecks, ...r.sendNormalCustomRedirects]; + if (r.sendTargetsProtocol == 'tor') instancesList = [...r.sendTorRedirectsChecks, ...r.sendTorCustomRedirects]; + if (instancesList.length === 0) { resolve(); return; } + + let randomInstance = utils.getRandomInstance(instancesList); + resolve(randomInstance); + } + ) + }) } -async function initDefaults() { - fetch('/instances/data.json').then(response => response.text()).then(async data => { - let dataJson = JSON.parse(data); - redirects.send = dataJson.send; - browser.storage.local.get('cloudflareList', async r => { - sendNormalRedirectsChecks = [...redirects.send.normal]; - for (const instance of r.cloudflareList) { - let i = sendNormalRedirectsChecks.indexOf(instance); - if (i > -1) sendNormalRedirectsChecks.splice(i, 1); - } - await browser.storage.local.set({ - disableSendTarget: false, - sendTargetsRedirects: redirects, +function initDefaults() { + return new Promise(resolve => { + fetch('/instances/data.json').then(response => response.text()).then(async data => { + let dataJson = JSON.parse(data); + redirects.send = dataJson.send; + browser.storage.local.get('cloudflareList', async r => { + sendNormalRedirectsChecks = [...redirects.send.normal]; + for (const instance of r.cloudflareList) { + let i = sendNormalRedirectsChecks.indexOf(instance); + if (i > -1) sendNormalRedirectsChecks.splice(i, 1); + } + await browser.storage.local.set({ + disableSendTarget: false, + sendTargetsRedirects: redirects, - sendNormalRedirectsChecks: sendNormalRedirectsChecks, - sendNormalCustomRedirects: [], + sendNormalRedirectsChecks: sendNormalRedirectsChecks, + sendNormalCustomRedirects: [], - sendTorRedirectsChecks: [...redirects.send.tor], - sendTorCustomRedirects: [], + sendTorRedirectsChecks: [...redirects.send.tor], + sendTorCustomRedirects: [], - sendTargetsProtocol: "normal", + sendTargetsProtocol: "normal", + }) + resolve(); }) }) }) } -async function init() { - browser.storage.local.get( - [ - "disableSendTarget", - "sendTargetsRedirects", - - "sendNormalRedirectsChecks", - "sendNormalCustomRedirects", - - "sendTorRedirectsChecks", - "sendTorCustomRedirects", - - "sendTargetsProtocol" - ], - r => { - disable = r.disableSendTarget; - protocol = r.sendTargetsProtocol; - redirects = r.sendTargetsRedirects; - - sendNormalRedirectsChecks = r.sendNormalRedirectsChecks; - sendNormalCustomRedirects = r.sendNormalCustomRedirects; - - sendTorRedirectsChecks = r.sendTorRedirectsChecks; - sendTorCustomRedirects = r.sendTorCustomRedirects; - } - ) -} - export default { setRedirects, - redirect, switchInstance, - initDefaults, - init, }; diff --git a/src/assets/javascripts/helpers/tiktok.js b/src/assets/javascripts/helpers/tiktok.js index f85b998..897baf0 100644 --- a/src/assets/javascripts/helpers/tiktok.js +++ b/src/assets/javascripts/helpers/tiktok.js @@ -13,22 +13,18 @@ let redirects = { } } function setRedirects(val) { - redirects.proxiTok = val; - browser.storage.local.set({ tiktokRedirects: redirects }) - console.log("tiktokRedirects: ", val) - for (const item of proxiTokNormalRedirectsChecks) - if (!redirects.proxiTok.normal.includes(item)) { - var index = proxiTokNormalRedirectsChecks.indexOf(item); - if (index !== -1) proxiTokNormalRedirectsChecks.splice(index, 1); + browser.storage.local.get('cloudflareList', r => { + redirects.proxiTok = val; + proxiTokNormalRedirectsChecks = [...redirects.proxiTok.normal]; + for (const instance of r.cloudflareList) { + const a = proxiTokNormalRedirectsChecks.indexOf(instance); + if (a > -1) proxiTokNormalRedirectsChecks.splice(a, 1); } - browser.storage.local.set({ proxiTokNormalRedirectsChecks }) - - for (const item of proxiTokTorRedirectsChecks) - if (!redirects.proxiTok.normal.includes(item)) { - var index = proxiTokTorRedirectsChecks.indexOf(item); - if (index !== -1) proxiTokTorRedirectsChecks.splice(index, 1); - } - browser.storage.local.set({ proxiTokTorRedirectsChecks }) + browser.storage.local.set({ + tiktokRedirects: redirects, + proxiTokNormalRedirectsChecks + }) + }) } let proxiTokNormalRedirectsChecks; @@ -57,7 +53,7 @@ function initProxiTokCookies(test, from) { ...r.proxiTokTorRedirectsChecks, ...r.proxiTokTorCustomRedirects, ].includes(protocolHost)) resolve(); - + if (!test) { let checkedInstances; if (r.tiktokProtocol == 'normal') checkedInstances = [...r.proxiTokNormalRedirectsChecks, ...r.proxiTokNormalCustomRedirects] @@ -74,26 +70,29 @@ function initProxiTokCookies(test, from) { } function setProxiTokCookies() { - browser.storage.local.get( - [ - "tiktokProtocol", - "disableTiktok", - "proxiTokNormalRedirectsChecks", - "proxiTokNormalCustomRedirects", - "proxiTokTorRedirectsChecks", - "proxiTokTorCustomRedirects", - ], - r => { - if (r.disableTiktok || r.tiktokProtocol === undefined) return; - let checkedInstances; - if (r.tiktokProtocol == 'normal') checkedInstances = [...r.proxiTokNormalRedirectsChecks, ...r.proxiTokNormalCustomRedirects] - else if (r.tiktokProtocol == 'tor') checkedInstances = [...r.proxiTokTorRedirectsChecks, ...r.proxiTokTorCustomRedirects] - for (const to of checkedInstances) { - utils.getCookiesFromStorage('proxitok', to, 'theme'); - utils.getCookiesFromStorage('proxitok', to, 'api-legacy'); + return new Promise(resolve => { + browser.storage.local.get( + [ + "tiktokProtocol", + "disableTiktok", + "proxiTokNormalRedirectsChecks", + "proxiTokNormalCustomRedirects", + "proxiTokTorRedirectsChecks", + "proxiTokTorCustomRedirects", + ], + r => { + if (r.disableTiktok || r.tiktokProtocol === undefined) { resolve(); return; } + let checkedInstances; + if (r.tiktokProtocol == 'normal') checkedInstances = [...r.proxiTokNormalRedirectsChecks, ...r.proxiTokNormalCustomRedirects] + else if (r.tiktokProtocol == 'tor') checkedInstances = [...r.proxiTokTorRedirectsChecks, ...r.proxiTokTorCustomRedirects] + for (const to of checkedInstances) { + utils.getCookiesFromStorage('proxitok', to, 'theme'); + utils.getCookiesFromStorage('proxitok', to, 'api-legacy'); + } + resolve(); } - } - ) + ) + }) } function redirect(url, type, initiator) { @@ -163,7 +162,7 @@ async function reverse(url) { }) } -async function initDefaults() { +function initDefaults() { return new Promise(async resolve => { fetch('/instances/data.json').then(response => response.text()).then(async data => { let dataJson = JSON.parse(data); diff --git a/src/assets/javascripts/helpers/translate/translate.js b/src/assets/javascripts/helpers/translate/translate.js index 8ce8a2c..7ad1f33 100644 --- a/src/assets/javascripts/helpers/translate/translate.js +++ b/src/assets/javascripts/helpers/translate/translate.js @@ -22,12 +22,11 @@ let lingvaNormalRedirectsChecks; function setRedirects(val) { - browser.storage.local.get('cloudflareList', async r => { + browser.storage.local.get('cloudflareList', r => { redirects = val; simplyTranslateNormalRedirectsChecks = [...redirects.simplyTranslate.normal]; lingvaNormalRedirectsChecks = [...redirects.lingva.normal] for (const instance of r.cloudflareList) { - let i; const a = simplyTranslateNormalRedirectsChecks.indexOf(instance); if (a > -1) simplyTranslateNormalRedirectsChecks.splice(a, 1); @@ -149,29 +148,32 @@ function initSimplyTranslateCookies(test, from) { } function setSimplyTranslateCookies() { - browser.storage.local.get( - [ - "translateProtocol", - "translateDisable", - "translateFrontend", - "simplyTranslateNormalRedirectsChecks", - "simplyTranslateNormalCustomRedirects", - "simplyTranslateTorRedirectsChecks", - "simplyTranslateTorCustomRedirects", - ], - r => { - if (r.translateDisable || r.translateFrontend != 'simplyTranslate') return; - let checkedInstances; - if (r.translateProtocol == 'normal') checkedInstances = [...r.simplyTranslateNormalRedirectsChecks, ...r.simplyTranslateNormalCustomRedirects] - else if (r.translateProtocol == 'tor') checkedInstances = [...r.simplyTranslateTorRedirectsChecks, ...r.simplyTranslateTorCustomRedirects] - for (const to of checkedInstances) { - utils.getCookiesFromStorage('simplyTranslate', to, 'from_lang'); - utils.getCookiesFromStorage('simplyTranslate', to, 'to_lang'); - utils.getCookiesFromStorage('simplyTranslate', to, 'tts_enabled'); - utils.getCookiesFromStorage('simplyTranslate', to, 'use_text_fields'); + return new Promise(resolve => { + browser.storage.local.get( + [ + "translateProtocol", + "translateDisable", + "translateFrontend", + "simplyTranslateNormalRedirectsChecks", + "simplyTranslateNormalCustomRedirects", + "simplyTranslateTorRedirectsChecks", + "simplyTranslateTorCustomRedirects", + ], + r => { + if (r.translateDisable || r.translateFrontend != 'simplyTranslate') { resolve(); return; } + let checkedInstances; + if (r.translateProtocol == 'normal') checkedInstances = [...r.simplyTranslateNormalRedirectsChecks, ...r.simplyTranslateNormalCustomRedirects] + else if (r.translateProtocol == 'tor') checkedInstances = [...r.simplyTranslateTorRedirectsChecks, ...r.simplyTranslateTorCustomRedirects] + for (const to of checkedInstances) { + utils.getCookiesFromStorage('simplyTranslate', to, 'from_lang'); + utils.getCookiesFromStorage('simplyTranslate', to, 'to_lang'); + utils.getCookiesFromStorage('simplyTranslate', to, 'tts_enabled'); + utils.getCookiesFromStorage('simplyTranslate', to, 'use_text_fields'); + } + resolve(); } - } - ) + ) + }) } function redirect(url) { @@ -285,39 +287,41 @@ function switchInstance(url) { } function initDefaults() { - fetch('/instances/data.json').then(response => response.text()).then(data => { - let dataJson = JSON.parse(data); - redirects.simplyTranslate = dataJson.simplyTranslate; - redirects.lingva = dataJson.lingva; - browser.storage.local.get( - 'cloudflareList', - r => { - simplyTranslateNormalRedirectsChecks = [...redirects.simplyTranslate.normal]; - lingvaNormalRedirectsChecks = [...redirects.lingva.normal] - for (const instance of r.cloudflareList) { - const a = simplyTranslateNormalRedirectsChecks.indexOf(instance); - if (a > -1) simplyTranslateNormalRedirectsChecks.splice(a, 1); + return new Promise(async resolve => { + fetch('/instances/data.json').then(response => response.text()).then(data => { + let dataJson = JSON.parse(data); + redirects.simplyTranslate = dataJson.simplyTranslate; + redirects.lingva = dataJson.lingva; + browser.storage.local.get('cloudflareList', + async r => { + simplyTranslateNormalRedirectsChecks = [...redirects.simplyTranslate.normal]; + lingvaNormalRedirectsChecks = [...redirects.lingva.normal] + for (const instance of r.cloudflareList) { + const a = simplyTranslateNormalRedirectsChecks.indexOf(instance); + if (a > -1) simplyTranslateNormalRedirectsChecks.splice(a, 1); - const b = lingvaNormalRedirectsChecks.indexOf(instance); - if (b > -1) lingvaNormalRedirectsChecks.splice(b, 1); - } - browser.storage.local.set({ - translateDisable: false, - translateFrontend: "simplyTranslate", - translateProtocol: 'normal', - translateRedirects: redirects, + const b = lingvaNormalRedirectsChecks.indexOf(instance); + if (b > -1) lingvaNormalRedirectsChecks.splice(b, 1); + } + await browser.storage.local.set({ + translateDisable: false, + translateFrontend: "simplyTranslate", + translateProtocol: 'normal', + translateRedirects: redirects, - simplyTranslateNormalRedirectsChecks: simplyTranslateNormalRedirectsChecks, - simplyTranslateNormalCustomRedirects: [], - simplyTranslateTorRedirectsChecks: [...redirects.simplyTranslate.tor], - simplyTranslateTorCustomRedirects: [], + simplyTranslateNormalRedirectsChecks: simplyTranslateNormalRedirectsChecks, + simplyTranslateNormalCustomRedirects: [], + simplyTranslateTorRedirectsChecks: [...redirects.simplyTranslate.tor], + simplyTranslateTorCustomRedirects: [], - lingvaNormalRedirectsChecks: lingvaNormalRedirectsChecks, - lingvaNormalCustomRedirects: [], - lingvaTorRedirectsChecks: [...redirects.lingva.tor], - lingvaTorCustomRedirects: [], + lingvaNormalRedirectsChecks: lingvaNormalRedirectsChecks, + lingvaNormalCustomRedirects: [], + lingvaTorRedirectsChecks: [...redirects.lingva.tor], + lingvaTorCustomRedirects: [], + }) + resolve(); }) - }) + }) }) } diff --git a/src/assets/javascripts/helpers/twitter.js b/src/assets/javascripts/helpers/twitter.js index 811edc1..89077fb 100644 --- a/src/assets/javascripts/helpers/twitter.js +++ b/src/assets/javascripts/helpers/twitter.js @@ -56,10 +56,11 @@ async function redirect(url, initiator) { if ( initiator && - [...r.twitterRedirects.nitter.normal, - ...r.twitterRedirects.nitter.tor, - ...r.nitterTorCustomRedirects, - ...r.nitterNormalCustomRedirects + [ + ...r.twitterRedirects.nitter.normal, + ...r.twitterRedirects.nitter.tor, + ...r.nitterTorCustomRedirects, + ...r.nitterNormalCustomRedirects ].includes(initiator.origin) ) { resolve('BYPASSTAB'); return; } @@ -228,61 +229,67 @@ function initNitterCookies(test, from) { } function setNitterCookies() { - browser.storage.local.get( - [ - "twitterProtocol", - "disableTwitter", - "youtubeFrontend", - "nitterNormalRedirectsChecks", - "nitterNormalCustomRedirects", - "nitterTorRedirectsChecks", - "nitterTorCustomRedirects", - ], - r => { - if (r.disableYoutube || r.youtubeFrontend != 'nitter' || r.twitterProtocol === undefined) return; - let checkedInstances; - if (r.youtubeProtocol == 'normal') checkedInstances = [...r.nitterNormalRedirectsChecks, ...r.nitterNormalCustomRedirects] - else if (r.youtubeProtocol == 'tor') checkedInstances = [...r.nitterTorRedirectsChecks, ...r.nitterTorCustomRedirects] - for (const to of checkedInstances) { - utils.getCookiesFromStorage('nitter', to, 'theme'); - utils.getCookiesFromStorage('nitter', to, 'infiniteScroll'); - utils.getCookiesFromStorage('nitter', to, 'stickyProfile'); - utils.getCookiesFromStorage('nitter', to, 'bidiSupport'); - utils.getCookiesFromStorage('nitter', to, 'hideTweetStats'); - utils.getCookiesFromStorage('nitter', to, 'hideBanner'); - utils.getCookiesFromStorage('nitter', to, 'hidePins'); - utils.getCookiesFromStorage('nitter', to, 'hideReplies'); - utils.getCookiesFromStorage('nitter', to, 'squareAvatars'); - utils.getCookiesFromStorage('nitter', to, 'mp4Playback'); - utils.getCookiesFromStorage('nitter', to, 'hlsPlayback'); - utils.getCookiesFromStorage('nitter', to, 'proxyVideos'); - utils.getCookiesFromStorage('nitter', to, 'muteVideos'); - utils.getCookiesFromStorage('nitter', to, 'autoplayGifs'); + return new Promise(resolve => { + browser.storage.local.get( + [ + "twitterProtocol", + "disableTwitter", + "youtubeFrontend", + "nitterNormalRedirectsChecks", + "nitterNormalCustomRedirects", + "nitterTorRedirectsChecks", + "nitterTorCustomRedirects", + ], + r => { + if (r.disableYoutube || r.youtubeFrontend != 'nitter' || r.twitterProtocol === undefined) { resolve(); return; } + let checkedInstances; + if (r.youtubeProtocol == 'normal') checkedInstances = [...r.nitterNormalRedirectsChecks, ...r.nitterNormalCustomRedirects] + else if (r.youtubeProtocol == 'tor') checkedInstances = [...r.nitterTorRedirectsChecks, ...r.nitterTorCustomRedirects] + for (const to of checkedInstances) { + utils.getCookiesFromStorage('nitter', to, 'theme'); + utils.getCookiesFromStorage('nitter', to, 'infiniteScroll'); + utils.getCookiesFromStorage('nitter', to, 'stickyProfile'); + utils.getCookiesFromStorage('nitter', to, 'bidiSupport'); + utils.getCookiesFromStorage('nitter', to, 'hideTweetStats'); + utils.getCookiesFromStorage('nitter', to, 'hideBanner'); + utils.getCookiesFromStorage('nitter', to, 'hidePins'); + utils.getCookiesFromStorage('nitter', to, 'hideReplies'); + utils.getCookiesFromStorage('nitter', to, 'squareAvatars'); + utils.getCookiesFromStorage('nitter', to, 'mp4Playback'); + utils.getCookiesFromStorage('nitter', to, 'hlsPlayback'); + utils.getCookiesFromStorage('nitter', to, 'proxyVideos'); + utils.getCookiesFromStorage('nitter', to, 'muteVideos'); + utils.getCookiesFromStorage('nitter', to, 'autoplayGifs'); + } + resolve(); } - } - ) + ) + }) } function initDefaults() { - fetch('/instances/data.json').then(response => response.text()).then(data => { - let dataJson = JSON.parse(data); - redirects.nitter = dataJson.nitter; - browser.storage.local.get('cloudflareList', r => { - nitterNormalRedirectsChecks = [...redirects.nitter.normal]; - for (const instance of r.cloudflareList) { - let i = nitterNormalRedirectsChecks.indexOf(instance); - if (i > -1) nitterNormalRedirectsChecks.splice(i, 1); - } - browser.storage.local.set({ - disableTwitter: false, - twitterRedirects: redirects, - twitterProtocol: "normal", + return new Promise(resolve => { + fetch('/instances/data.json').then(response => response.text()).then(data => { + let dataJson = JSON.parse(data); + redirects.nitter = dataJson.nitter; + browser.storage.local.get('cloudflareList', async r => { + nitterNormalRedirectsChecks = [...redirects.nitter.normal]; + for (const instance of r.cloudflareList) { + let i = nitterNormalRedirectsChecks.indexOf(instance); + if (i > -1) nitterNormalRedirectsChecks.splice(i, 1); + } + await browser.storage.local.set({ + disableTwitter: false, + twitterRedirects: redirects, + twitterProtocol: "normal", - nitterNormalRedirectsChecks, - nitterNormalCustomRedirects: [], + nitterNormalRedirectsChecks, + nitterNormalCustomRedirects: [], - nitterTorRedirectsChecks: [...redirects.nitter.tor], - nitterTorCustomRedirects: [], + nitterTorRedirectsChecks: [...redirects.nitter.tor], + nitterTorCustomRedirects: [], + }) + resolve(); }) }) }) diff --git a/src/assets/javascripts/helpers/utils.js b/src/assets/javascripts/helpers/utils.js index 59fff19..38c3536 100644 --- a/src/assets/javascripts/helpers/utils.js +++ b/src/assets/javascripts/helpers/utils.js @@ -28,60 +28,31 @@ async function initCloudflareList() { }); } -async function wholeInit() { - await sendTargetsHelper.init(); - await tiktokHelper.init(); - await initCloudflareList(); -} +function updateInstances() { + return new Promise(async resolve => { + let http = new XMLHttpRequest(); + http.open('GET', 'https://raw.githubusercontent.com/libredirect/libredirect/master/src/instances/data.json', false); + http.send(null); + if (http.status === 200) { + await initCloudflareList(); + const instances = JSON.parse(http.responseText); -async function updateInstances() { - let http = new XMLHttpRequest(); - http.open('GET', 'https://raw.githubusercontent.com/libredirect/libredirect/master/src/instances/data.json', false); - http.send(null); + youtubeHelper.setRedirects({ 'invidious': instances.invidious, 'piped': instances.piped, }) + twitterHelper.setRedirects(instances.nitter); + instagramHelper.setRedirects(instances.bibliogram); + redditHelper.setRedirects({ 'libreddit': instances.libreddit, 'teddit': instances.teddit }); + translateHelper.setRedirects({ "simplyTranslate": instances.simplyTranslate, "lingva": instances.lingva }); + searchHelper.setRedirects({ 'searx': instances.searx, 'searxng': instances.searxng, 'whoogle': instances.whoogle }); + wikipediaHelper.setRedirects(instances.wikiless); + mediumHelper.setRedirects(instances.scribe); + sendTargetsHelper.setRedirects(instances.send); + tiktokHelper.setRedirects(instances.proxiTok); - if (http.status === 200) { - await wholeInit(); - const instances = JSON.parse(http.responseText); - - browser.storage.local.get( - [ - 'youtubeRedirects' - ], - r => - brwoser.storage.local.set({ - youtubeRedirects: { - 'invidious': instances.invidious, - 'piped': r.youtubeRedirects.piped, - 'pipedMaterial': r.youtubeRedirects.pipedMaterial - }, - }) - ) - - twitterHelper.setRedirects(instances.nitter); - - instagramHelper.setRedirects(instances.bibliogram); - - redditHelper.setTedditRedirects(instances.teddit); - redditHelper.setLibredditRedirects(instances.libreddit); - - translateHelper.setRedirects({ "simplyTranslate": instances.simplyTranslate, "lingva": instances.lingva }); - - searchHelper.setSearxRedirects(instances.searx); - searchHelper.setSearxngRedirects(instances.searxng); - searchHelper.setWhoogleRedirects(instances.whoogle); - - wikipediaHelper.setRedirects(instances.wikiless); - - mediumHelper.setRedirects(instances.scribe); - - sendTargetsHelper.setRedirects(instances.send); - - tiktokHelper.setRedirects(instances.proxiTok); - - console.info("Successfully updated Instances"); - return true; - } - return false; + console.info("Successfully updated Instances"); + resolve(true); return; + } + resolve() + }) } function protocolHost(url) { @@ -436,8 +407,6 @@ function switchInstance(test) { if (!newUrl) newUrl = await imgurHelper.switchInstance(url); if (!newUrl) newUrl = await wikipediaHelper.switchInstance(url); - console.log('newUrl', newUrl); - console.log('test'); if (newUrl) { if (!test) browser.tabs.update({ url: newUrl }); @@ -446,7 +415,6 @@ function switchInstance(test) { } }) }) - return false; } function latency(name, frontend, document, location, splitNames) { diff --git a/src/assets/javascripts/helpers/wikipedia.js b/src/assets/javascripts/helpers/wikipedia.js index 8132422..fa6fd8f 100644 --- a/src/assets/javascripts/helpers/wikipedia.js +++ b/src/assets/javascripts/helpers/wikipedia.js @@ -12,35 +12,21 @@ let redirects = { } }; function setRedirects(val) { - redirects.wikiless = val; - browser.storage.local.set({ wikipediaRedirects: redirects }) - console.log("wikipediaRedirects: ", val) - for (const item of wikilessNormalRedirectsChecks) - if (!redirects.wikiless.normal.includes(item)) { - var index = wikilessNormalRedirectsChecks.indexOf(item); - if (index !== -1) wikilessNormalRedirectsChecks.splice(index, 1); + browser.storage.local.get('cloudflareList', r => { + redirects.wikiless = val; + wikilessNormalRedirectsChecks = [...redirects.wikiless.normal]; + for (const instance of r.cloudflareList) { + const a = wikilessNormalRedirectsChecks.indexOf(instance); + if (a > -1) wikilessNormalRedirectsChecks.splice(a, 1); } - browser.storage.local.set({ wikilessNormalRedirectsChecks }) - - for (const item of wikilessTorRedirectsChecks) - if (!redirects.wikiless.tor.includes(item)) { - var index = wikilessTorRedirectsChecks.indexOf(item); - if (index !== -1) wikilessTorRedirectsChecks.splice(index, 1); - } - browser.storage.local.set({ wikilessTorRedirectsChecks }) - - for (const item of wikilessI2pRedirectsChecks) - if (!redirects.wikiless.i2p.includes(item)) { - var index = wikilessI2pRedirectsChecks.indexOf(item); - if (index !== -1) wikilessI2pRedirectsChecks.splice(index, 1); - } - browser.storage.local.set({ wikilessI2pRedirectsChecks }) + browser.storage.local.set({ + wikipediaRedirects: redirects, + wikilessNormalRedirectsChecks + }) + }) } -let - wikilessNormalRedirectsChecks, - wikilessTorRedirectsChecks, - wikilessI2pRedirectsChecks; +let wikilessNormalRedirectsChecks; function initWikilessCookies(test, from) { return new Promise(resolve => { @@ -83,26 +69,29 @@ function initWikilessCookies(test, from) { } function setWikilessCookies() { - browser.storage.local.get( - [ - "disableWikipedia", - "wikipediaProtocol", - "wikilessNormalRedirectsChecks", - "wikilessNormalCustomRedirects", - "wikilessTorRedirectsChecks", - "wikilessTorCustomRedirects", - ], - r => { - if (r.disableWikipedia || r.wikipediaProtocol === undefined) return; - let checkedInstances; - if (r.wikipediaProtocol == 'normal') checkedInstances = [...r.wikilessNormalRedirectsChecks, ...r.wikilessNormalCustomRedirects] - else if (r.wikipediaProtocol == 'tor') checkedInstances = [...r.wikilessTorRedirectsChecks, ...r.wikilessTorCustomRedirects] - for (const to of checkedInstances) { - utils.getCookiesFromStorage('wikiless', to, 'theme'); - utils.getCookiesFromStorage('wikiless', to, 'default_lang'); + return new Promise(resolve => { + browser.storage.local.get( + [ + "disableWikipedia", + "wikipediaProtocol", + "wikilessNormalRedirectsChecks", + "wikilessNormalCustomRedirects", + "wikilessTorRedirectsChecks", + "wikilessTorCustomRedirects", + ], + r => { + if (r.disableWikipedia || r.wikipediaProtocol === undefined) { resolve(); return; } + let checkedInstances; + if (r.wikipediaProtocol == 'normal') checkedInstances = [...r.wikilessNormalRedirectsChecks, ...r.wikilessNormalCustomRedirects] + else if (r.wikipediaProtocol == 'tor') checkedInstances = [...r.wikilessTorRedirectsChecks, ...r.wikilessTorCustomRedirects] + for (const to of checkedInstances) { + utils.getCookiesFromStorage('wikiless', to, 'theme'); + utils.getCookiesFromStorage('wikiless', to, 'default_lang'); + } + resolve(); } - } - ) + ) + }) } function redirect(url) { @@ -206,26 +195,29 @@ function switchInstance(url) { }) } -async function initDefaults() { - fetch('/instances/data.json').then(response => response.text()).then(async data => { - let dataJson = JSON.parse(data); - redirects.wikiless = dataJson.wikiless; - browser.storage.local.get('cloudflareList', async r => { - wikilessNormalRedirectsChecks = [...redirects.wikiless.normal]; - for (const instance of r.cloudflareList) { - let i = wikilessNormalRedirectsChecks.indexOf(instance); - if (i > -1) wikilessNormalRedirectsChecks.splice(i, 1); - } - await browser.storage.local.set({ - disableWikipedia: true, - wikipediaRedirects: redirects, - wikipediaProtocol: "normal", - wikilessNormalRedirectsChecks: wikilessNormalRedirectsChecks, - wikilessTorRedirectsChecks: [...redirects.wikiless.tor], - wikilessI2pRedirectsChecks: [...redirects.wikiless.i2p], - wikilessNormalCustomRedirects: [], - wikilessTorCustomRedirects: [], - wikilessI2pCustomRedirects: [], +function initDefaults() { + return new Promise(resolve => { + fetch('/instances/data.json').then(response => response.text()).then(async data => { + let dataJson = JSON.parse(data); + redirects.wikiless = dataJson.wikiless; + browser.storage.local.get('cloudflareList', async r => { + wikilessNormalRedirectsChecks = [...redirects.wikiless.normal]; + for (const instance of r.cloudflareList) { + let i = wikilessNormalRedirectsChecks.indexOf(instance); + if (i > -1) wikilessNormalRedirectsChecks.splice(i, 1); + } + await browser.storage.local.set({ + disableWikipedia: true, + wikipediaRedirects: redirects, + wikipediaProtocol: "normal", + wikilessNormalRedirectsChecks: wikilessNormalRedirectsChecks, + wikilessTorRedirectsChecks: [...redirects.wikiless.tor], + wikilessI2pRedirectsChecks: [...redirects.wikiless.i2p], + wikilessNormalCustomRedirects: [], + wikilessTorCustomRedirects: [], + wikilessI2pCustomRedirects: [], + }) + resolve(); }) }) }) diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js index dce0368..060d149 100644 --- a/src/assets/javascripts/helpers/youtube/youtube.js +++ b/src/assets/javascripts/helpers/youtube/youtube.js @@ -396,25 +396,28 @@ function initInvidiousCookies(test, from) { } function setInvidiousCookies() { - browser.storage.local.get( - [ - "disableYoutube", - "youtubeProtocol", - "youtubeFrontend", - "invidiousNormalRedirectsChecks", - "invidiousNormalCustomRedirects", - "invidiousTorRedirectsChecks", - "invidiousTorCustomRedirects", - ], - r => { - if (r.disableYoutube || r.youtubeFrontend != 'invidious' || r.youtubeProtocol === undefined) return; - let checkedInstances; - if (r.youtubeProtocol == 'normal') checkedInstances = [...r.invidiousNormalRedirectsChecks, ...r.invidiousNormalCustomRedirects] - else if (r.youtubeProtocol == 'tor') checkedInstances = [...r.invidiousTorRedirectsChecks, ...r.invidiousTorCustomRedirects] - for (const to of checkedInstances) - utils.getCookiesFromStorage('invidious', to, 'PREFS'); - } - ) + return new Promise(resolve => { + browser.storage.local.get( + [ + "disableYoutube", + "youtubeProtocol", + "youtubeFrontend", + "invidiousNormalRedirectsChecks", + "invidiousNormalCustomRedirects", + "invidiousTorRedirectsChecks", + "invidiousTorCustomRedirects", + ], + r => { + if (r.disableYoutube || r.youtubeFrontend != 'invidious' || r.youtubeProtocol === undefined) { resolve(); return; } + let checkedInstances; + if (r.youtubeProtocol == 'normal') checkedInstances = [...r.invidiousNormalRedirectsChecks, ...r.invidiousNormalCustomRedirects] + else if (r.youtubeProtocol == 'tor') checkedInstances = [...r.invidiousTorRedirectsChecks, ...r.invidiousTorCustomRedirects] + for (const to of checkedInstances) + utils.getCookiesFromStorage('invidious', to, 'PREFS'); + resolve(); + } + ) + }) } function initPipedLocalStorage(test, url, tabId) { diff --git a/src/instances/get_instances.py b/src/instances/get_instances.py index facbca6..b47433b 100644 --- a/src/instances/get_instances.py +++ b/src/instances/get_instances.py @@ -349,7 +349,7 @@ def peertube(): myList.append('https://'+k['host']) mightyList['peertube'] = myList - print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'Peertube') + print(Fore.GREEN + 'Fetched ' + Style.RESET_ALL + 'PeerTube') def isValid(url): # This code is contributed by avanitrachhadiya2155 diff --git a/src/manifest.json b/src/manifest.json index 5101211..c0d5621 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -49,7 +49,7 @@ "name": "__MSG_extensionName__", "keyword": "libredirect", "favicon_url": "https://raw.githubusercontent.com/libredirect/libredirect/master/src/assets/images/libredirect-16.png", - "search_url": "https://libredirect.invalid/?q={searchTerms}", + "search_url": "https://search.libredirect.invalid/?q={searchTerms}", "encoding": "UTF-8", "is_default": false } diff --git a/src/pages/background/background.js b/src/pages/background/background.js index d8f0bb3..9eedc30 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -1,6 +1,8 @@ "use strict"; import generalHelper from "../../assets/javascripts/helpers/general.js"; +import utils from "../../assets/javascripts/helpers/utils.js"; + import youtubeHelper from "../../assets/javascripts/helpers/youtube/youtube.js"; import youtubeMusicHelper from "../../assets/javascripts/helpers/youtubeMusic.js"; import twitterHelper from "../../assets/javascripts/helpers/twitter.js"; @@ -16,7 +18,7 @@ import tiktokHelper from "../../assets/javascripts/helpers/tiktok.js"; import sendTargetsHelper from "../../assets/javascripts/helpers/sendTargets.js"; import peertubeHelper from "../../assets/javascripts/helpers/peertube.js"; import lbryHelper from "../../assets/javascripts/helpers/lbry.js"; -import utils from "../../assets/javascripts/helpers/utils.js"; + window.browser = window.browser || window.chrome; @@ -35,6 +37,7 @@ browser.runtime.onInstalled.addListener( if (details.reason == 'install') { fetch('/instances/blocklist.json').then(response => response.text()).then(async data => { await browser.storage.local.set({ cloudflareList: JSON.parse(data) }) + generalHelper.initDefaults(); youtubeHelper.initDefaults(); youtubeMusicHelper.initDefaults(); twitterHelper.initDefaults(); @@ -56,10 +59,6 @@ browser.runtime.onInstalled.addListener( ) async function wholeInit() { - await mapsHelper.init(); - await sendTargetsHelper.init(); - await peertubeHelper.init(); - await generalHelper.init(); } let incognitoInit = false; @@ -104,10 +103,10 @@ browser.webRequest.onBeforeRequest.addListener( if ( details.frameAncestors && details.frameAncestors.length > 0 && - generalHelper.isException(new URL(details.frameAncestors[0].url)) + await generalHelper.isException(new URL(details.frameAncestors[0].url)) ) newUrl = null; - if (generalHelper.isException(url)) newUrl = 'BYPASSTAB'; + if (await generalHelper.isException(url)) newUrl = 'BYPASSTAB'; if (BYPASSTABs.includes(details.tabId)) newUrl = null; @@ -117,7 +116,7 @@ browser.webRequest.onBeforeRequest.addListener( return { cancel: true }; } else if (newUrl === 'BYPASSTAB') { - console.log(`Bybassed ${details.tabId} ${url}`); + console.log(`Bypassed ${details.tabId} ${url}`); if (!BYPASSTABs.includes(details.tabId)) BYPASSTABs.push(details.tabId); return null; } @@ -180,9 +179,21 @@ async function redirectOfflineInstance(url, tabId) { } } let counter = 0; + +function isAutoRedirect() { + return new Promise(resolve => { + browser.storage.local.get('autoRedirect', + r => { + if (r.autoRedirect == true) resolve(true) + else resolve(false) + } + ) + }) +} + browser.webRequest.onResponseStarted.addListener( - details => { - if (!generalHelper.getAutoRedirect()) return null; + async details => { + if (!await isAutoRedirect()) return null; if (details.type == 'main_frame' && (details.statusCode == 502 || details.statusCode == 503 || details.statusCode == 504)) { // if (details.type == 'main_frame' && details.statusCode >= 200) { @@ -195,8 +206,8 @@ browser.webRequest.onResponseStarted.addListener( ) browser.webRequest.onErrorOccurred.addListener( - details => { - if (!generalHelper.getAutoRedirect()) return; + async details => { + if (!await isAutoRedirect()) return; if (details.type == 'main_frame') { const url = new URL(details.url); redirectOfflineInstance(url, details.tabId); diff --git a/src/pages/background/incognito.html b/src/pages/background/incognito.html index 57d0bfd..a618cdb 100644 --- a/src/pages/background/incognito.html +++ b/src/pages/background/incognito.html @@ -3,7 +3,35 @@ - + + + + Initializing Cookies + + + +
+

Initializing Cookies

+
+ + + \ No newline at end of file diff --git a/src/pages/background/incognito.js b/src/pages/background/incognito.js index 16eccf7..600591d 100644 --- a/src/pages/background/incognito.js +++ b/src/pages/background/incognito.js @@ -1,30 +1,21 @@ -"use strict"; - import youtubeHelper from "../../assets/javascripts/helpers/youtube/youtube.js"; import twitterHelper from "../../assets/javascripts/helpers/twitter.js"; -import instagramHelper from "../../assets/javascripts/helpers/instagram.js"; import redditHelper from "../../assets/javascripts/helpers/reddit.js"; import searchHelper from "../../assets/javascripts/helpers/search.js"; import translateHelper from "../../assets/javascripts/helpers/translate/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"; import tiktokHelper from "../../assets/javascripts/helpers/tiktok.js"; -import sendTargetsHelper from "../../assets/javascripts/helpers/sendTargets.js"; -import peertubeHelper from "../../assets/javascripts/helpers/peertube.js"; -import lbryHelper from "../../assets/javascripts/helpers/lbry.js"; -import generalHelper from "../../assets/javascripts/helpers/general.js"; -import youtubeMusicHelper from "../../assets/javascripts/helpers/youtubeMusic.js"; window.browser = window.browser || window.chrome; -async function wholeInit() { - await youtubeMusicHelper.init(); - await mapsHelper.init(); - await sendTargetsHelper.init(); - await peertubeHelper.init(); - await generalHelper.init(); -} -await wholeInit(); +await youtubeHelper.setInvidiousCookies(); +await translateHelper.setSimplyTranslateCookies(); +await twitterHelper.setNitterCookies(); +await wikipediaHelper.setWikilessCookies(); +await searchHelper.setSearxCookies(); +await searchHelper.setSearxngCookies(); +await redditHelper.setLibredditCookies(); +await redditHelper.setTedditCookies(); +await tiktokHelper.setProxiTokCookies(); + window.close() \ No newline at end of file diff --git a/src/pages/options/general/general.html b/src/pages/options/general/general.html index cb0c11f..8239f7c 100644 --- a/src/pages/options/general/general.html +++ b/src/pages/options/general/general.html @@ -30,7 +30,7 @@ Medium -
Peertube
+
PeerTube
LBRY/Odysee
@@ -180,7 +180,7 @@
-
Peertube
+
PeerTube
diff --git a/src/pages/options/general/general.js b/src/pages/options/general/general.js index c8a600c..f269020 100644 --- a/src/pages/options/general/general.js +++ b/src/pages/options/general/general.js @@ -4,7 +4,21 @@ window.browser = window.browser || window.chrome; import utils from "../../../assets/javascripts/helpers/utils.js"; import generalHelper from "../../../assets/javascripts/helpers/general.js"; - +import youtubeHelper from "../../../assets/javascripts/helpers/youtube/youtube.js"; +import youtubeMusicHelper from "../../../assets/javascripts/helpers/youtubeMusic.js"; +import twitterHelper from "../../../assets/javascripts/helpers/twitter.js"; +import instagramHelper from "../../../assets/javascripts/helpers/instagram.js"; +import redditHelper from "../../../assets/javascripts/helpers/reddit.js"; +import searchHelper from "../../../assets/javascripts/helpers/search.js"; +import translateHelper from "../../../assets/javascripts/helpers/translate/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"; +import tiktokHelper from "../../../assets/javascripts/helpers/tiktok.js"; +import sendTargetsHelper from "../../../assets/javascripts/helpers/sendTargets.js"; +import peertubeHelper from "../../../assets/javascripts/helpers/peertube.js"; +import lbryHelper from "../../../assets/javascripts/helpers/lbry.js"; let updateInstancesElement = document.getElementById("update-instances"); updateInstancesElement.addEventListener("click", () => { @@ -68,21 +82,41 @@ function importError() { let resetSettingsElement = document.getElementById("reset-settings"); resetSettingsElement.addEventListener("click", - () => { + async () => { console.log("reset"); - browser.storage.local.clear(); - location.reload(); + await browser.storage.local.clear(); + fetch('/instances/blocklist.json').then(response => response.text()).then(async data => { + await browser.storage.local.set({ cloudflareList: JSON.parse(data) }) + await generalHelper.initDefaults(); + await youtubeHelper.initDefaults(); + await youtubeMusicHelper.initDefaults(); + await twitterHelper.initDefaults(); + await instagramHelper.initDefaults(); + await mapsHelper.initDefaults(); + await searchHelper.initDefaults(); + await translateHelper.initDefaults(); + await mediumHelper.initDefaults(); + await redditHelper.initDefaults(); + await wikipediaHelper.initDefaults(); + await imgurHelper.initDefaults(); + await tiktokHelper.initDefaults(); + await sendTargetsHelper.initDefaults(); + await peertubeHelper.initDefaults(); + await lbryHelper.initDefaults(); + location.reload(); + }) } ); let autoRedirectElement = document.getElementById("auto-redirect") autoRedirectElement.addEventListener("change", - event => generalHelper.setAutoRedirect(event.target.checked) + event => browser.storage.local.set({ autoRedirect: event.target.checked }) ); + let themeElement = document.getElementById("theme"); themeElement.addEventListener("change", event => { const value = event.target.options[theme.selectedIndex].value; - generalHelper.setTheme(value); + browser.storage.local.set({ theme: value }); }) let nameCustomInstanceInput = document.getElementById("exceptions-custom-instance"); @@ -99,84 +133,94 @@ for (const frontend of generalHelper.allPopupFrontends) var index = popupFrontends.indexOf(frontend); if (index !== -1) popupFrontends.splice(index, 1); } - generalHelper.setPopupFrontends(popupFrontends); + browser.storage.local.set({ popupFrontends }) } ) -generalHelper.init().then(() => { - autoRedirectElement.checked = generalHelper.getAutoRedirect(); - themeElement.value = generalHelper.getTheme(); - instanceTypeElement.addEventListener("change", - event => { - instanceType = event.target.options[instanceTypeElement.selectedIndex].value - if (instanceType == 'url') { - nameCustomInstanceInput.setAttribute("type", "url"); - nameCustomInstanceInput.setAttribute("placeholder", "https://www.google.com"); - } - else if (instanceType == 'regex') { - nameCustomInstanceInput.setAttribute("type", "text"); - nameCustomInstanceInput.setAttribute("placeholder", "https?:\/\/(www\.|)youtube\.com\/"); - } - } - ) - let exceptionsCustomInstances = generalHelper.getExceptions(); - function calcExceptionsCustomInstances() { - document.getElementById("exceptions-custom-checklist").innerHTML = - [...exceptionsCustomInstances.url, ...exceptionsCustomInstances.regex].map( - (x) => `
- ${x} - -
-
` - ).join('\n'); - for (const x of [...exceptionsCustomInstances.url, ...exceptionsCustomInstances.regex]) { - document.getElementById(`clear-${x}`).addEventListener("click", - () => { - console.log(x); - let index; - index = exceptionsCustomInstances.url.indexOf(x); - if (index > -1) - exceptionsCustomInstances.url.splice(index, 1); - else { - index = exceptionsCustomInstances.regex.indexOf(x); +browser.storage.local.get( + [ + 'theme', + 'autoRedirect', + 'exceptions' + ], + r => { + autoRedirectElement.checked = r.autoRedirect; + themeElement.value = r.theme; + instanceTypeElement.addEventListener("change", + event => { + instanceType = event.target.options[instanceTypeElement.selectedIndex].value + if (instanceType == 'url') { + nameCustomInstanceInput.setAttribute("type", "url"); + nameCustomInstanceInput.setAttribute("placeholder", "https://www.google.com"); + } + else if (instanceType == 'regex') { + nameCustomInstanceInput.setAttribute("type", "text"); + nameCustomInstanceInput.setAttribute("placeholder", "https?:\/\/(www\.|)youtube\.com\/"); + } + } + ) + let exceptionsCustomInstances = r.exceptions; + function calcExceptionsCustomInstances() { + document.getElementById("exceptions-custom-checklist").innerHTML = + [...exceptionsCustomInstances.url, ...exceptionsCustomInstances.regex].map( + (x) => `
+ ${x} + +
+
` + ).join('\n'); + + for (const x of [...exceptionsCustomInstances.url, ...exceptionsCustomInstances.regex]) { + document.getElementById(`clear-${x}`).addEventListener("click", + () => { + console.log(x); + let index; + index = exceptionsCustomInstances.url.indexOf(x); if (index > -1) - exceptionsCustomInstances.regex.splice(index, 1); - } - generalHelper.setExceptions(exceptionsCustomInstances); - calcExceptionsCustomInstances(); - }); - } - } - calcExceptionsCustomInstances(); - document.getElementById("custom-exceptions-instance-form").addEventListener("submit", (event) => { - event.preventDefault(); - - let val - if (instanceType == 'url') { - if (nameCustomInstanceInput.validity.valid) { - let url = new URL(nameCustomInstanceInput.value); - val = `${url.protocol}//${url.host}` - if (!exceptionsCustomInstances.url.includes(val)) exceptionsCustomInstances.url.push(val) + exceptionsCustomInstances.url.splice(index, 1); + else { + index = exceptionsCustomInstances.regex.indexOf(x); + if (index > -1) + exceptionsCustomInstances.regex.splice(index, 1); + } + browser.storage.local.set({ exceptions: exceptionsCustomInstances }) + calcExceptionsCustomInstances(); + }); } - } else if (instanceType == 'regex') { - val = nameCustomInstanceInput.value - if (val.trim() != '' && !exceptionsCustomInstances.regex.includes(val)) exceptionsCustomInstances.regex.push(val) - } - if (val) { - generalHelper.setExceptions(exceptionsCustomInstances); - console.log("exceptionsCustomInstances", exceptionsCustomInstances) - nameCustomInstanceInput.value = ''; } calcExceptionsCustomInstances(); - }) + document.getElementById("custom-exceptions-instance-form").addEventListener("submit", (event) => { + event.preventDefault(); - popupFrontends = generalHelper.getPopupFrontends(); - for (const frontend of generalHelper.allPopupFrontends) - document.getElementById(frontend).checked = popupFrontends.includes(frontend); -}) \ No newline at end of file + let val + if (instanceType == 'url') { + if (nameCustomInstanceInput.validity.valid) { + let url = new URL(nameCustomInstanceInput.value); + val = `${url.protocol}//${url.host}` + if (!exceptionsCustomInstances.url.includes(val)) exceptionsCustomInstances.url.push(val) + } + } else if (instanceType == 'regex') { + val = nameCustomInstanceInput.value + if (val.trim() != '' && !exceptionsCustomInstances.regex.includes(val)) exceptionsCustomInstances.regex.push(val) + } + if (val) { + browser.storage.local.set({ exceptions: exceptionsCustomInstances }) + nameCustomInstanceInput.value = ''; + } + calcExceptionsCustomInstances(); + }) + + browser.storage.local.get('popupFrontends', + r => { + popupFrontends = r.popupFrontends; + for (const frontend of generalHelper.allPopupFrontends) + document.getElementById(frontend).checked = popupFrontends.includes(frontend); + } + ) + }) diff --git a/src/pages/options/general/general.pug b/src/pages/options/general/general.pug index 6a3b137..0cef802 100644 --- a/src/pages/options/general/general.pug +++ b/src/pages/options/general/general.pug @@ -151,7 +151,7 @@ body.option(dir="auto") div div img(src="../../../assets/images/peertube-icon.svg") - |Peertube + |PeerTube input#peertube(type="checkbox") div diff --git a/src/pages/options/imgur/imgur.html b/src/pages/options/imgur/imgur.html index d537acf..6194fbb 100644 --- a/src/pages/options/imgur/imgur.html +++ b/src/pages/options/imgur/imgur.html @@ -31,7 +31,7 @@ Medium
-
Peertube
+
PeerTube
LBRY/Odysee
diff --git a/src/pages/options/instagram/instagram.html b/src/pages/options/instagram/instagram.html index b03040b..dfb5872 100644 --- a/src/pages/options/instagram/instagram.html +++ b/src/pages/options/instagram/instagram.html @@ -31,7 +31,7 @@ Medium
-
Peertube
+
PeerTube
LBRY/Odysee
diff --git a/src/pages/options/lbry/lbry.html b/src/pages/options/lbry/lbry.html index 4e3c131..3802a14 100644 --- a/src/pages/options/lbry/lbry.html +++ b/src/pages/options/lbry/lbry.html @@ -31,7 +31,7 @@ Medium
-
Peertube
+
PeerTube
LBRY/Odysee
diff --git a/src/pages/options/maps/maps.html b/src/pages/options/maps/maps.html index d7961b3..af7d072 100644 --- a/src/pages/options/maps/maps.html +++ b/src/pages/options/maps/maps.html @@ -31,7 +31,7 @@ Medium
-
Peertube
+
PeerTube
LBRY/Odysee
diff --git a/src/pages/options/medium/medium.html b/src/pages/options/medium/medium.html index 136081d..87aff72 100644 --- a/src/pages/options/medium/medium.html +++ b/src/pages/options/medium/medium.html @@ -31,7 +31,7 @@ Medium
-
Peertube
+
PeerTube
LBRY/Odysee
diff --git a/src/pages/options/peertube/peertube.html b/src/pages/options/peertube/peertube.html index d5ded94..1ddc26a 100644 --- a/src/pages/options/peertube/peertube.html +++ b/src/pages/options/peertube/peertube.html @@ -31,7 +31,7 @@ Medium
-
Peertube
+
PeerTube
LBRY/Odysee
diff --git a/src/pages/options/reddit/reddit.html b/src/pages/options/reddit/reddit.html index 876369f..754314e 100644 --- a/src/pages/options/reddit/reddit.html +++ b/src/pages/options/reddit/reddit.html @@ -31,7 +31,7 @@ Medium
-
Peertube
+
PeerTube
LBRY/Odysee
diff --git a/src/pages/options/search/search.html b/src/pages/options/search/search.html index 46914d1..8b22e43 100644 --- a/src/pages/options/search/search.html +++ b/src/pages/options/search/search.html @@ -31,7 +31,7 @@ Medium
-
Peertube
+
PeerTube
LBRY/Odysee
diff --git a/src/pages/options/sendTargets/sendTargets.html b/src/pages/options/sendTargets/sendTargets.html index 7a68417..f372b3b 100644 --- a/src/pages/options/sendTargets/sendTargets.html +++ b/src/pages/options/sendTargets/sendTargets.html @@ -31,7 +31,7 @@ Medium
-
Peertube
+
PeerTube
LBRY/Odysee
diff --git a/src/pages/options/tiktok/tiktok.html b/src/pages/options/tiktok/tiktok.html index 9b5932f..89a14ba 100644 --- a/src/pages/options/tiktok/tiktok.html +++ b/src/pages/options/tiktok/tiktok.html @@ -31,7 +31,7 @@ Medium
-
Peertube
+
PeerTube
LBRY/Odysee
diff --git a/src/pages/options/translate/translate.html b/src/pages/options/translate/translate.html index 249ce0b..c62ea5a 100644 --- a/src/pages/options/translate/translate.html +++ b/src/pages/options/translate/translate.html @@ -31,7 +31,7 @@ Medium
-
Peertube
+
PeerTube
LBRY/Odysee
diff --git a/src/pages/options/twitter/twitter.html b/src/pages/options/twitter/twitter.html index 95e0a0b..2a477e6 100644 --- a/src/pages/options/twitter/twitter.html +++ b/src/pages/options/twitter/twitter.html @@ -31,7 +31,7 @@ Medium
-
Peertube
+
PeerTube
LBRY/Odysee
diff --git a/src/pages/options/wikipedia/wikipedia.html b/src/pages/options/wikipedia/wikipedia.html index c8475f0..ba22bc3 100644 --- a/src/pages/options/wikipedia/wikipedia.html +++ b/src/pages/options/wikipedia/wikipedia.html @@ -31,7 +31,7 @@ Medium
-
Peertube
+
PeerTube
LBRY/Odysee
diff --git a/src/pages/options/youtube/youtube.html b/src/pages/options/youtube/youtube.html index 20d13bd..6a2036a 100644 --- a/src/pages/options/youtube/youtube.html +++ b/src/pages/options/youtube/youtube.html @@ -31,7 +31,7 @@ Medium
-
Peertube
+
PeerTube
LBRY/Odysee
diff --git a/src/pages/options/youtubeMusic/youtubeMusic.html b/src/pages/options/youtubeMusic/youtubeMusic.html index 9910630..845ec44 100644 --- a/src/pages/options/youtubeMusic/youtubeMusic.html +++ b/src/pages/options/youtubeMusic/youtubeMusic.html @@ -31,7 +31,7 @@ Medium
-
Peertube
+
PeerTube
LBRY/Odysee
diff --git a/src/pages/popup/popup.html b/src/pages/popup/popup.html index 48f6f11..ffc1c86 100644 --- a/src/pages/popup/popup.html +++ b/src/pages/popup/popup.html @@ -35,7 +35,7 @@

Reddit

-
+ @@ -48,15 +48,15 @@

Medium

-
-

Peertube

+ - +

Unify Settings

+ + +
+
+

Settings

+ + +
+
diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js index b9c7579..824f178 100644 --- a/src/pages/popup/popup.js +++ b/src/pages/popup/popup.js @@ -98,14 +98,14 @@ utils.unify(true).then(r => { } }) - document.getElementById("more-options").addEventListener("click", () => browser.runtime.openOptionsPage()); -generalHelper.init().then(() => { - let popupFrontends = generalHelper.getPopupFrontends(); - for (const frontend of generalHelper.allPopupFrontends) - if (!popupFrontends.includes(frontend)) - document.getElementById(frontend).classList.add("hide") - else - document.getElementById(frontend).classList.remove("hide") -}); \ No newline at end of file +browser.storage.local.get( + 'popupFrontends', + r => { + for (const frontend of generalHelper.allPopupFrontends) + if (!r.popupFrontends.includes(frontend)) + document.getElementById(frontend).classList.add("hide") + else + document.getElementById(frontend).classList.remove("hide") + }); \ No newline at end of file diff --git a/src/pages/popup/popup.pug b/src/pages/popup/popup.pug index 35234b1..5e067f3 100644 --- a/src/pages/popup/popup.pug +++ b/src/pages/popup/popup.pug @@ -52,7 +52,7 @@ html(lang="en") #wikipedia.some-block a.title(href="https://wikipedia.com") - img(src="../../assets/images/wikipedia-icon.png") + img(src="../../assets/images/wikipedia-icon.svg") h4 Wikipedia input#disable-wikipedia(type="checkbox") @@ -64,8 +64,8 @@ html(lang="en") #peertube.some-block a.title(href="https://peertube.com") - img(src="../../assets/images/peertube-icon.png") - h4 Peertube + img(src="../../assets/images/peertube-icon.svg") + h4 PeerTube input#disable-peertube(type="checkbox") #lbry.some-block @@ -75,7 +75,7 @@ html(lang="en") input#disable-lbry(type="checkbox") #search.some-block - a.title(href="https://libredirect.invalid") + a.title(href="https://search.libredirect.invalid") +search h4 Search input#disable-search(type="checkbox") @@ -93,30 +93,34 @@ html(lang="en") input#disable-osm(type="checkbox") #sendTargets.some-block - a.title(href="https://send.invalid") + a.title(href="https://send.libredirect.invalid") +send h4 Send Files input#disable-sendTargets(type="checkbox") + hr + #change_instance_div.some-block a#change_instance.title.button - +change_instance h4 Change Instance - - .some-block - a#more-options.title.button - +settings - h4 Settings + +change_instance #copy_raw_div.some-block(title="Copy the original redirected link") a#copy_raw.title.button - +copy_raw h4 Copy Raw + +copy_raw #unify_div.some-block(title="Unify cookies across all selected instances") a#unify.title.button - +unify h4 Unify Settings + +unify + + .some-block + a#more-options.title.button + h4 Settings + +settings + + .space script(type="module" src="../options/init.js") script(type="module" src="./popup.js") diff --git a/src/pages/popup/style.css b/src/pages/popup/style.css index 4cc5614..8136237 100644 --- a/src/pages/popup/style.css +++ b/src/pages/popup/style.css @@ -1,5 +1,5 @@ body { - width: 240px; + width: 230px; min-height: auto; } @@ -9,4 +9,15 @@ html, body { .hide { display: none !important; +} + +.button { + display: flex; + margin: 0 auto; + justify-content: space-between; + width: 100%; +} + +.space { + height: 10px; } \ No newline at end of file diff --git a/src/pages/widgets/icons.pug b/src/pages/widgets/icons.pug index 4ef8d6b..6018669 100644 --- a/src/pages/widgets/icons.pug +++ b/src/pages/widgets/icons.pug @@ -39,6 +39,5 @@ mixin general mixin unify - svg(xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor") - rect(fill="none" height="24" width="24") - path(d="M18,2H9C7.9,2,7,2.9,7,4v12c0,1.1,0.9,2,2,2h9c1.1,0,2-0.9,2-2V4C20,2.9,19.1,2,18,2z M18,16H9V4h9V16z M3,15v-2h2v2H3z M3,9.5h2v2H3V9.5z M10,20h2v2h-2V20z M3,18.5v-2h2v2H3z M5,22c-1.1,0-2-0.9-2-2h2V22z M8.5,22h-2v-2h2V22z M13.5,22L13.5,22l0-2h2 v0C15.5,21.1,14.6,22,13.5,22z M5,6L5,6l0,2H3v0C3,6.9,3.9,6,5,6z") \ No newline at end of file + svg(xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor") + path(d="M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z") \ No newline at end of file diff --git a/src/pages/widgets/links.pug b/src/pages/widgets/links.pug index 4d6fdd7..9760196 100644 --- a/src/pages/widgets/links.pug +++ b/src/pages/widgets/links.pug @@ -44,7 +44,7 @@ mixin links(service) .title img(src="../../../assets/images/peertube-icon.svg") - a(href="../peertube/peertube.html" data-localise="__MSG_peertube__" class=service == "peertube" ? "selected" : "") Peertube + a(href="../peertube/peertube.html" data-localise="__MSG_peertube__" class=service == "peertube" ? "selected" : "") PeerTube .title img(src="../../../assets/images/lbry-icon.png")