diff options
author | ManeraKai <manerakai@protonmail.com> | 2022-07-27 17:44:04 +0200 |
---|---|---|
committer | ManeraKai <manerakai@protonmail.com> | 2022-07-27 17:44:04 +0200 |
commit | a9a7dba5a329eb17e23ba08802406a4e2e2cb836 (patch) | |
tree | 2cb69c855b36e82128a00e5895d5f5409d5e0a5e /src/assets/javascripts/translate | |
parent | Merge branch 'BobIsMyManager-librex' (diff) | |
parent | , (diff) | |
download | libredirect-a9a7dba5a329eb17e23ba08802406a4e2e2cb836.zip |
Merge pull request 'Squashed a few bugs' (#10) from BobIsMyManager/libredirect:master into master
Reviewed-on: https://codeberg.org/LibRedirect/libredirect/pulls/10
Diffstat (limited to 'src/assets/javascripts/translate')
3 files changed, 388 insertions, 364 deletions
diff --git a/src/assets/javascripts/translate/get_lingva_preferences.js b/src/assets/javascripts/translate/get_lingva_preferences.js index 40def6a5..0d6ff6ec 100644 --- a/src/assets/javascripts/translate/get_lingva_preferences.js +++ b/src/assets/javascripts/translate/get_lingva_preferences.js @@ -1,12 +1,10 @@ -window.browser = window.browser || window.chrome; +window.browser = window.browser || window.chrome -browser.storage.local.set( - { - ['lingva_chakra-ui-color-mode']: localStorage.getItem('chakra-ui-color-mode'), - lingva_isauto: localStorage.getItem('isauto'), - lingva_source: localStorage.getItem('source'), - lingva_target: localStorage.getItem('target'), - } -) +browser.storage.local.set({ + ["lingva_chakra-ui-color-mode"]: localStorage.getItem("chakra-ui-color-mode"), + lingva_isauto: localStorage.getItem("isauto"), + lingva_source: localStorage.getItem("source"), + lingva_target: localStorage.getItem("target"), +}) -console.log(localStorage.getItem('target')); \ No newline at end of file +console.log(localStorage.getItem("target")) diff --git a/src/assets/javascripts/translate/set_lingva_preferences.js b/src/assets/javascripts/translate/set_lingva_preferences.js index a0f2ad87..04a36e1b 100644 --- a/src/assets/javascripts/translate/set_lingva_preferences.js +++ b/src/assets/javascripts/translate/set_lingva_preferences.js @@ -1,17 +1,9 @@ -window.browser = window.browser || window.chrome; +window.browser = window.browser || window.chrome -browser.storage.local.get( - [ - "lingva_chakra-ui-color-mode", - "lingva_isauto", - "lingva_source", - "lingva_target", - ], - r => { - if (r['lingva_chakra-ui-color-mode'] !== undefined) localStorage.setItem('chakra-ui-color-mode', r['lingva_chakra-ui-color-mode']); - if (r.lingva_isauto !== undefined) localStorage.setItem('isauto', r.lingva_isauto); - if (r.lingva_source !== undefined) localStorage.setItem('source', r.lingva_source); - if (r.lingva_target !== undefined) localStorage.setItem('target', r.lingva_target); - window.close(); - } -) +browser.storage.local.get(["lingva_chakra-ui-color-mode", "lingva_isauto", "lingva_source", "lingva_target"], r => { + if (r["lingva_chakra-ui-color-mode"] !== undefined) localStorage.setItem("chakra-ui-color-mode", r["lingva_chakra-ui-color-mode"]) + if (r.lingva_isauto !== undefined) localStorage.setItem("isauto", r.lingva_isauto) + if (r.lingva_source !== undefined) localStorage.setItem("source", r.lingva_source) + if (r.lingva_target !== undefined) localStorage.setItem("target", r.lingva_target) + window.close() +}) diff --git a/src/assets/javascripts/translate/translate.js b/src/assets/javascripts/translate/translate.js index 75c5b5f8..5512f7f1 100644 --- a/src/assets/javascripts/translate/translate.js +++ b/src/assets/javascripts/translate/translate.js @@ -1,379 +1,413 @@ -window.browser = window.browser || window.chrome; +window.browser = window.browser || window.chrome -import utils from '../utils.js' +import utils from "../utils.js" -const targets = [ - /^https?:\/{2}translate\.google(\.[a-z]{2,3}){1,2}\//, -]; +const targets = [/^https?:\/{2}translate\.google(\.[a-z]{2,3}){1,2}\//] const frontends = new Array("simplyTranslate", "lingva") const protocols = new Array("normal", "tor", "i2p", "loki") -let redirects = {}; +let redirects = {} for (let i = 0; i < frontends.length; i++) { - redirects[frontends[i]] = {} - for (let x = 0; x < protocols.length; x++) { - redirects[frontends[i]][protocols[x]] = [] - } + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + redirects[frontends[i]][protocols[x]] = [] + } } -let - translateDisable, - translateFrontend, - protocol, - protocolFallback, - translateRedirects, - simplyTranslateNormalRedirectsChecks, - simplyTranslateNormalCustomRedirects, - simplyTranslateTorRedirectsChecks, - simplyTranslateTorCustomRedirects, - simplyTranslateI2pRedirectsChecks, - simplyTranslateI2pCustomRedirects, - simplyTranslateLokiRedirectsChecks, - simplyTranslateLokiCustomRedirects, - lingvaNormalRedirectsChecks, - lingvaNormalCustomRedirects, - lingvaTorRedirectsChecks, - lingvaTorCustomRedirects, - lingvaI2pCustomRedirects, - lingvaLokiCustomRedirects +let translateDisable, + translateFrontend, + protocol, + protocolFallback, + translateRedirects, + simplyTranslateNormalRedirectsChecks, + simplyTranslateNormalCustomRedirects, + simplyTranslateTorRedirectsChecks, + simplyTranslateTorCustomRedirects, + simplyTranslateI2pRedirectsChecks, + simplyTranslateI2pCustomRedirects, + simplyTranslateLokiRedirectsChecks, + simplyTranslateLokiCustomRedirects, + lingvaNormalRedirectsChecks, + lingvaNormalCustomRedirects, + lingvaTorRedirectsChecks, + lingvaTorCustomRedirects, + lingvaI2pCustomRedirects, + lingvaLokiCustomRedirects function init() { - return new Promise(resolve => { - browser.storage.local.get( - [ - "translateDisable", - "translateFrontend", - "protocol", - "protocolFallback", - "translateRedirects", - "simplyTranslateNormalRedirectsChecks", - "simplyTranslateNormalCustomRedirects", - "simplyTranslateTorRedirectsChecks", - "simplyTranslateTorCustomRedirects", - "simplyTranslateI2pRedirectsChecks", - "simplyTranslateI2pCustomRedirects", - "simplyTranslateLokiRedirectsChecks", - "simplyTranslateLokiCustomRedirects", - - "lingvaNormalRedirectsChecks", - "lingvaNormalCustomRedirects", - "lingvaTorRedirectsChecks", - "lingvaTorCustomRedirects", - "lingvaI2pCustomRedirects", - "lingvaLokiCustomRedirects" - ], - r => { - translateDisable = r.translateDisable; - translateFrontend = r.translateFrontend; - protocol = r.protocol; - protocolFallback = r.protocolFallback - translateRedirects = r.translateRedirects; - simplyTranslateNormalRedirectsChecks = r.simplyTranslateNormalRedirectsChecks; - simplyTranslateNormalCustomRedirects = r.simplyTranslateNormalCustomRedirects; - simplyTranslateTorRedirectsChecks = r.simplyTranslateTorRedirectsChecks; - simplyTranslateTorCustomRedirects = r.simplyTranslateTorCustomRedirects; - simplyTranslateI2pRedirectsChecks = r.simplyTranslateI2pRedirectsChecks; - simplyTranslateI2pCustomRedirects = r.simplyTranslateI2pCustomRedirects; - simplyTranslateLokiRedirectsChecks = r.simplyTranslateLokiRedirectsChecks; - simplyTranslateLokiCustomRedirects = r.simplyTranslateLokiCustomRedirects; - lingvaNormalRedirectsChecks = r.lingvaNormalRedirectsChecks; - lingvaNormalCustomRedirects = r.lingvaNormalCustomRedirects; - lingvaTorRedirectsChecks = r.lingvaTorRedirectsChecks; - lingvaTorCustomRedirects = r.lingvaTorCustomRedirects; - lingvaI2pCustomRedirects = r.lingvaI2pCustomRedirects; - lingvaLokiCustomRedirects = r.lingvaLokiCustomRedirects; - resolve(); - } - ) - }) + return new Promise(resolve => { + browser.storage.local.get( + [ + "translateDisable", + "translateFrontend", + "protocol", + "protocolFallback", + "translateRedirects", + "simplyTranslateNormalRedirectsChecks", + "simplyTranslateNormalCustomRedirects", + "simplyTranslateTorRedirectsChecks", + "simplyTranslateTorCustomRedirects", + "simplyTranslateI2pRedirectsChecks", + "simplyTranslateI2pCustomRedirects", + "simplyTranslateLokiRedirectsChecks", + "simplyTranslateLokiCustomRedirects", + + "lingvaNormalRedirectsChecks", + "lingvaNormalCustomRedirects", + "lingvaTorRedirectsChecks", + "lingvaTorCustomRedirects", + "lingvaI2pCustomRedirects", + "lingvaLokiCustomRedirects", + ], + r => { + translateDisable = r.translateDisable + translateFrontend = r.translateFrontend + protocol = r.protocol + protocolFallback = r.protocolFallback + translateRedirects = r.translateRedirects + simplyTranslateNormalRedirectsChecks = r.simplyTranslateNormalRedirectsChecks + simplyTranslateNormalCustomRedirects = r.simplyTranslateNormalCustomRedirects + simplyTranslateTorRedirectsChecks = r.simplyTranslateTorRedirectsChecks + simplyTranslateTorCustomRedirects = r.simplyTranslateTorCustomRedirects + simplyTranslateI2pRedirectsChecks = r.simplyTranslateI2pRedirectsChecks + simplyTranslateI2pCustomRedirects = r.simplyTranslateI2pCustomRedirects + simplyTranslateLokiRedirectsChecks = r.simplyTranslateLokiRedirectsChecks + simplyTranslateLokiCustomRedirects = r.simplyTranslateLokiCustomRedirects + lingvaNormalRedirectsChecks = r.lingvaNormalRedirectsChecks + lingvaNormalCustomRedirects = r.lingvaNormalCustomRedirects + lingvaTorRedirectsChecks = r.lingvaTorRedirectsChecks + lingvaTorCustomRedirects = r.lingvaTorCustomRedirects + lingvaI2pCustomRedirects = r.lingvaI2pCustomRedirects + lingvaLokiCustomRedirects = r.lingvaLokiCustomRedirects + resolve() + } + ) + }) } -init(); +init() browser.storage.onChanged.addListener(init) function setRedirects(val) { - browser.storage.local.get('cloudflareBlackList', r => { - redirects = val; - lingvaNormalRedirectsChecks = [...redirects.lingva.normal] - for (const instance of r.cloudflareBlackList) { - const i = lingvaNormalRedirectsChecks.indexOf(instance); - if (i > -1) lingvaNormalRedirectsChecks.splice(i, 1); - } - browser.storage.local.set({ - translateRedirects: redirects, - simplyTranslateNormalRedirectsChecks: redirects.simplyTranslate.normal, - simplyTranslateTorRedirectsChecks: redirects.simplyTranslate.tor, - simplyTranslateI2pRedirectsChecks: redirects.simplyTranslate.i2p, - simplyTranslateLokiRedirectsChecks: redirects.simplyTranslate.loki, - lingvaNormalRedirectsChecks, - lingvaTorRedirectsChecks: redirects.lingva.tor, - }) - }) + browser.storage.local.get("cloudflareBlackList", r => { + redirects = val + lingvaNormalRedirectsChecks = [...redirects.lingva.normal] + for (const instance of r.cloudflareBlackList) { + const i = lingvaNormalRedirectsChecks.indexOf(instance) + if (i > -1) lingvaNormalRedirectsChecks.splice(i, 1) + } + browser.storage.local.set({ + translateRedirects: redirects, + simplyTranslateNormalRedirectsChecks: redirects.simplyTranslate.normal, + simplyTranslateTorRedirectsChecks: redirects.simplyTranslate.tor, + simplyTranslateI2pRedirectsChecks: redirects.simplyTranslate.i2p, + simplyTranslateLokiRedirectsChecks: redirects.simplyTranslate.loki, + lingvaNormalRedirectsChecks, + lingvaTorRedirectsChecks: redirects.lingva.tor, + }) + }) } function copyPasteLingvaLocalStorage(test, url, tabId) { - return new Promise(async resolve => { - await init(); - if (translateDisable || translateFrontend != 'lingva') { resolve(); return; } - const protocolHost = utils.protocolHost(url); - if (![ - ...lingvaNormalRedirectsChecks, - ...lingvaNormalCustomRedirects, - ...lingvaTorRedirectsChecks, - ...lingvaTorCustomRedirects, - ...lingvaI2pCustomRedirects, - ...lingvaLokiCustomRedirects - ].includes(protocolHost)) { resolve(); return; } - - if (!test) { - browser.tabs.executeScript( - tabId, - { file: "/assets/javascripts/translate/get_lingva_preferences.js", runAt: "document_start" } - ); - - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...lingvaLokiCustomRedirects]; //...lingvaLokiRedirectsChecks, - else if (protocol == 'i2p') checkedInstances = [...lingvaI2pCustomRedirects]; //...lingvaI2pRedirectsChecks, - else if (protocol == 'tor') checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; - } - const i = checkedInstances.indexOf(protocolHost); - if (i !== -1) checkedInstances.splice(i, 1); - if (checkedInstances.length === 0) { resolve(); return; } - for (const to of checkedInstances) - browser.tabs.create( - { url: to }, - tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/translate/set_lingva_preferences.js", runAt: "document_start" }) - ); - } - resolve(true); - } - ) + return new Promise(async resolve => { + await init() + if (translateDisable || translateFrontend != "lingva") { + resolve() + return + } + const protocolHost = utils.protocolHost(url) + if ( + ![...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects, ...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects, ...lingvaI2pCustomRedirects, ...lingvaLokiCustomRedirects].includes( + protocolHost + ) + ) { + resolve() + return + } + + if (!test) { + browser.tabs.executeScript(tabId, { + file: "/assets/javascripts/translate/get_lingva_preferences.js", + runAt: "document_start", + }) + + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...lingvaLokiCustomRedirects] + //...lingvaLokiRedirectsChecks, + else if (protocol == "i2p") checkedInstances = [...lingvaI2pCustomRedirects] + //...lingvaI2pRedirectsChecks, + else if (protocol == "tor") checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects] + } + const i = checkedInstances.indexOf(protocolHost) + if (i !== -1) checkedInstances.splice(i, 1) + if (checkedInstances.length === 0) { + resolve() + return + } + for (const to of checkedInstances) + browser.tabs.create({ url: to }, tab => + browser.tabs.executeScript(tab.id, { + file: "/assets/javascripts/translate/set_lingva_preferences.js", + runAt: "document_start", + }) + ) + } + resolve(true) + }) } function pasteLingvaLocalStorage() { - return new Promise(async resolve => { - await init(); - if (translateDisable || translateFrontend != 'lingva') { resolve(); return; } - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...lingvaLokiCustomRedirects]; //...lingvaLokiRedirectsChecks, - else if (protocol == 'i2p') checkedInstances = [...lingvaI2pCustomRedirects]; //...lingvaI2pRedirectsChecks, - else if (protocol == 'tor') checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; - } - for (const to of checkedInstances) - browser.tabs.create({ url: to }, - tab => browser.tabs.executeScript(tab.id, { file: "/assets/javascripts/translate/set_lingva_preferences.js", runAt: "document_start" })) - resolve(); - }) + return new Promise(async resolve => { + await init() + if (translateDisable || translateFrontend != "lingva") { + resolve() + return + } + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...lingvaLokiCustomRedirects] + //...lingvaLokiRedirectsChecks, + else if (protocol == "i2p") checkedInstances = [...lingvaI2pCustomRedirects] + //...lingvaI2pRedirectsChecks, + else if (protocol == "tor") checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects] + } + for (const to of checkedInstances) + browser.tabs.create({ url: to }, tab => + browser.tabs.executeScript(tab.id, { + file: "/assets/javascripts/translate/set_lingva_preferences.js", + runAt: "document_start", + }) + ) + resolve() + }) } function copyPasteSimplyTranslateCookies(test, from) { - return new Promise(async resolve => { - await init(); - const protocolHost = utils.protocolHost(from); - if (![ - ...simplyTranslateNormalRedirectsChecks, - ...simplyTranslateNormalCustomRedirects, - ...simplyTranslateTorRedirectsChecks, - ...simplyTranslateTorCustomRedirects, - ...simplyTranslateI2pRedirectsChecks, - ...simplyTranslateI2pCustomRedirects, - ...simplyTranslateLokiRedirectsChecks, - ...simplyTranslateLokiCustomRedirects, - ].includes(protocolHost)) { resolve(); return; } - if (!test) { - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects] - else if (protocol == 'i2p') checkedInstances = [...simplyTranslateI2pCustomRedirects, ...simplyTranslateI2pRedirectsChecks]; - else if (protocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]; - } - await utils.copyCookie('simplyTranslate', from, checkedInstances, 'from_lang'); - await utils.copyCookie('simplyTranslate', from, checkedInstances, 'to_lang'); - await utils.copyCookie('simplyTranslate', from, checkedInstances, 'tts_enabled'); - await utils.copyCookie('simplyTranslate', from, checkedInstances, 'use_text_fields'); - } - resolve(true); - } - ) + return new Promise(async resolve => { + await init() + const protocolHost = utils.protocolHost(from) + if ( + ![ + ...simplyTranslateNormalRedirectsChecks, + ...simplyTranslateNormalCustomRedirects, + ...simplyTranslateTorRedirectsChecks, + ...simplyTranslateTorCustomRedirects, + ...simplyTranslateI2pRedirectsChecks, + ...simplyTranslateI2pCustomRedirects, + ...simplyTranslateLokiRedirectsChecks, + ...simplyTranslateLokiCustomRedirects, + ].includes(protocolHost) + ) { + resolve() + return + } + if (!test) { + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...simplyTranslateI2pCustomRedirects, ...simplyTranslateI2pRedirectsChecks] + else if (protocol == "tor") checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects] + } + await utils.copyCookie("simplyTranslate", from, checkedInstances, "from_lang") + await utils.copyCookie("simplyTranslate", from, checkedInstances, "to_lang") + await utils.copyCookie("simplyTranslate", from, checkedInstances, "tts_enabled") + await utils.copyCookie("simplyTranslate", from, checkedInstances, "use_text_fields") + } + resolve(true) + }) } function pasteSimplyTranslateCookies() { - return new Promise(async resolve => { - await init(); - if (translateDisable || translateFrontend != 'simplyTranslate') { resolve(); return; } - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects] - else if (protocol == 'i2p') checkedInstances = [...simplyTranslateI2pCustomRedirects, ...simplyTranslateI2pRedirectsChecks]; - else if (protocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]; - } - utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'from_lang'); - utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'to_lang'); - utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'tts_enabled'); - utils.getCookiesFromStorage('simplyTranslate', checkedInstances, 'use_text_fields'); - resolve(); - } - ) + return new Promise(async resolve => { + await init() + if (translateDisable || translateFrontend != "simplyTranslate") { + resolve() + return + } + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...simplyTranslateI2pCustomRedirects, ...simplyTranslateI2pRedirectsChecks] + else if (protocol == "tor") checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects] + } + utils.getCookiesFromStorage("simplyTranslate", checkedInstances, "from_lang") + utils.getCookiesFromStorage("simplyTranslate", checkedInstances, "to_lang") + utils.getCookiesFromStorage("simplyTranslate", checkedInstances, "tts_enabled") + utils.getCookiesFromStorage("simplyTranslate", checkedInstances, "use_text_fields") + resolve() + }) } function redirect(url, disableOverride) { - if (translateDisable && !disableOverride) return; - if (!targets.some(rx => rx.test(url.href))) return; - - if (translateFrontend == 'simplyTranslate') { - let instancesList = []; - if (protocol == 'loki') instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...simplyTranslateI2pRedirectsChecks, ...simplyTranslateI2pCustomRedirects]; - else if (protocol == 'tor') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]; - } - if (instancesList.length === 0) return; - - const randomInstance = utils.getRandomInstance(instancesList) - return `${randomInstance}/${url.search}`; - } - else if (translateFrontend == 'lingva') { - let params_arr = url.search.split('&'); - params_arr[0] = params_arr[0].substring(1); - let params = {}; - for (let i = 0; i < params_arr.length; i++) { - let pair = params_arr[i].split('='); - params[pair[0]] = pair[1]; - } - let instancesList = []; - if (protocol == 'loki') instancesList = [...lingvaLokiCustomRedirects]; //...lingvaLokiRedirectsChecks, - else if (protocol == 'i2p') instancesList = [...lingvaI2pCustomRedirects]; //...lingvaI2pRedirectsChecks, - if (protocol == 'tor') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; - } - if (instancesList.length === 0) return; - - const randomInstance = utils.getRandomInstance(instancesList) - if (params.sl && params.tl && params.text) { - return `${randomInstance}/${params.sl}/${params.tl}/${params.text}` - } - return randomInstance; - } + if (translateDisable && !disableOverride) return + if (!targets.some(rx => rx.test(url.href))) return + + if (translateFrontend == "simplyTranslate") { + let instancesList = [] + if (protocol == "loki") instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects] + else if (protocol == "i2p") instancesList = [...simplyTranslateI2pRedirectsChecks, ...simplyTranslateI2pCustomRedirects] + else if (protocol == "tor") instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects] + } + if (instancesList.length === 0) return + + const randomInstance = utils.getRandomInstance(instancesList) + return `${randomInstance}/${url.search}` + } else if (translateFrontend == "lingva") { + let params_arr = url.search.split("&") + params_arr[0] = params_arr[0].substring(1) + let params = {} + for (let i = 0; i < params_arr.length; i++) { + let pair = params_arr[i].split("=") + params[pair[0]] = pair[1] + } + let instancesList = [] + if (protocol == "loki") instancesList = [...lingvaLokiCustomRedirects] + //...lingvaLokiRedirectsChecks, + else if (protocol == "i2p") instancesList = [...lingvaI2pCustomRedirects] //...lingvaI2pRedirectsChecks, + if (protocol == "tor") instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects] + } + if (instancesList.length === 0) return + + const randomInstance = utils.getRandomInstance(instancesList) + if (params.sl && params.tl && params.text) { + return `${randomInstance}/${params.sl}/${params.tl}/${params.text}` + } + return randomInstance + } } function switchInstance(url, disableOverride) { - return new Promise(async resolve => { - await init(); - if (translateDisable && !disableOverride) { resolve(); return; } - const protocolHost = utils.protocolHost(url); - if (![ - ...translateRedirects.simplyTranslate.normal, - ...translateRedirects.simplyTranslate.tor, - ...translateRedirects.simplyTranslate.i2p, - ...translateRedirects.simplyTranslate.loki, - - ...simplyTranslateNormalCustomRedirects, - ...simplyTranslateTorCustomRedirects, - ...simplyTranslateI2pCustomRedirects, - ...simplyTranslateLokiCustomRedirects, - - ...translateRedirects.lingva.normal, - ...translateRedirects.lingva.tor, - - ...lingvaNormalCustomRedirects, - ...lingvaTorCustomRedirects, - ...lingvaI2pCustomRedirects, - ...lingvaLokiCustomRedirects - ].includes(protocolHost)) { resolve(); return; } - - let instancesList; - - if (protocol == 'loki') { - if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects]; - else if (translateFrontend == 'lingva') instancesList = [...lingvaLokiCustomRedirects]; //...lingvaLokiRedirectsChecks, - } - else if (protocol == 'i2p') { - if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateI2pRedirectsChecks, ...simplyTranslateI2pCustomRedirects]; - else if (translateFrontend == 'lingva') instancesList = [...lingvaI2pCustomRedirects]; //...lingvaI2pRedirectsChecks, - } - else if (protocol == 'tor') { - if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]; - else if (translateFrontend == 'lingva') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; - } - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]; - else if (translateFrontend == 'lingva') instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; - } - - const i = instancesList.indexOf(protocolHost); - if (i > -1) instancesList.splice(i, 1); - if (instancesList.length === 0) { resolve(); return; } - - const randomInstance = utils.getRandomInstance(instancesList); - resolve(`${randomInstance}${url.pathname}${url.search}`); - }) + return new Promise(async resolve => { + await init() + if (translateDisable && !disableOverride) { + resolve() + return + } + const protocolHost = utils.protocolHost(url) + if ( + ![ + ...translateRedirects.simplyTranslate.normal, + ...translateRedirects.simplyTranslate.tor, + ...translateRedirects.simplyTranslate.i2p, + ...translateRedirects.simplyTranslate.loki, + + ...simplyTranslateNormalCustomRedirects, + ...simplyTranslateTorCustomRedirects, + ...simplyTranslateI2pCustomRedirects, + ...simplyTranslateLokiCustomRedirects, + + ...translateRedirects.lingva.normal, + ...translateRedirects.lingva.tor, + + ...lingvaNormalCustomRedirects, + ...lingvaTorCustomRedirects, + ...lingvaI2pCustomRedirects, + ...lingvaLokiCustomRedirects, + ].includes(protocolHost) + ) { + resolve() + return + } + + let instancesList + + if (protocol == "loki") { + if (translateFrontend == "simplyTranslate") instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomRedirects] + else if (translateFrontend == "lingva") instancesList = [...lingvaLokiCustomRedirects] //...lingvaLokiRedirectsChecks, + } else if (protocol == "i2p") { + if (translateFrontend == "simplyTranslate") instancesList = [...simplyTranslateI2pRedirectsChecks, ...simplyTranslateI2pCustomRedirects] + else if (translateFrontend == "lingva") instancesList = [...lingvaI2pCustomRedirects] //...lingvaI2pRedirectsChecks, + } else if (protocol == "tor") { + if (translateFrontend == "simplyTranslate") instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects] + else if (translateFrontend == "lingva") instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects] + } + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + if (translateFrontend == "simplyTranslate") instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects] + else if (translateFrontend == "lingva") instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects] + } + + const i = instancesList.indexOf(protocolHost) + if (i > -1) instancesList.splice(i, 1) + if (instancesList.length === 0) { + resolve() + return + } + + const randomInstance = utils.getRandomInstance(instancesList) + resolve(`${randomInstance}${url.pathname}${url.search}`) + }) } function initDefaults() { - return new Promise(async resolve => { - fetch('/instances/data.json').then(response => response.text()).then(data => { - let dataJson = JSON.parse(data); - for (let i = 0; i < frontends.length; i++) { - redirects[frontends[i]] = dataJson[frontends[i]] - } - browser.storage.local.get('cloudflareBlackList', - async r => { - lingvaNormalRedirectsChecks = [...redirects.lingva.normal] - for (const instance of r.cloudflareBlackList) { - const i = lingvaNormalRedirectsChecks.indexOf(instance); - if (i > -1) lingvaNormalRedirectsChecks.splice(i, 1); - } - browser.storage.local.set({ - translateDisable: false, - translateFrontend: "simplyTranslate", - translateRedirects: redirects, - - simplyTranslateNormalRedirectsChecks: [...redirects.simplyTranslate.normal], - simplyTranslateNormalCustomRedirects: [], - - simplyTranslateTorRedirectsChecks: [...redirects.simplyTranslate.tor], - simplyTranslateTorCustomRedirects: [], - - simplyTranslateI2pRedirectsChecks: [...redirects.simplyTranslate.i2p], - simplyTranslateI2pCustomRedirects: [], - - simplyTranslateLokiRedirectsChecks: [...redirects.simplyTranslate.loki], - simplyTranslateLokiCustomRedirects: [], - - lingvaNormalRedirectsChecks: lingvaNormalRedirectsChecks, - lingvaNormalCustomRedirects: [], - - lingvaTorRedirectsChecks: [...redirects.lingva.tor], - lingvaTorCustomRedirects: [], - - lingvaI2pRedirectsChecks: [...redirects.lingva.i2p], - lingvaI2pCustomRedirects: [], - - lingvaLokiRedirectsChecks: [...redirects.lingva.loki], - lingvaLokiCustomRedirects: [] - }, () => resolve()) - }) - }) - }) + return new Promise(async resolve => { + fetch("/instances/data.json") + .then(response => response.text()) + .then(data => { + let dataJson = JSON.parse(data) + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } + browser.storage.local.get("cloudflareBlackList", async r => { + lingvaNormalRedirectsChecks = [...redirects.lingva.normal] + for (const instance of r.cloudflareBlackList) { + const i = lingvaNormalRedirectsChecks.indexOf(instance) + if (i > -1) lingvaNormalRedirectsChecks.splice(i, 1) + } + browser.storage.local.set( + { + translateDisable: false, + translateFrontend: "simplyTranslate", + translateRedirects: redirects, + + simplyTranslateNormalRedirectsChecks: [...redirects.simplyTranslate.normal], + simplyTranslateNormalCustomRedirects: [], + + simplyTranslateTorRedirectsChecks: [...redirects.simplyTranslate.tor], + simplyTranslateTorCustomRedirects: [], + + simplyTranslateI2pRedirectsChecks: [...redirects.simplyTranslate.i2p], + simplyTranslateI2pCustomRedirects: [], + + simplyTranslateLokiRedirectsChecks: [...redirects.simplyTranslate.loki], + simplyTranslateLokiCustomRedirects: [], + + lingvaNormalRedirectsChecks: lingvaNormalRedirectsChecks, + lingvaNormalCustomRedirects: [], + + lingvaTorRedirectsChecks: [...redirects.lingva.tor], + lingvaTorCustomRedirects: [], + + lingvaI2pRedirectsChecks: [...redirects.lingva.i2p], + lingvaI2pCustomRedirects: [], + + lingvaLokiRedirectsChecks: [...redirects.lingva.loki], + lingvaLokiCustomRedirects: [], + }, + () => resolve() + ) + }) + }) + }) } export default { - copyPasteSimplyTranslateCookies, - pasteSimplyTranslateCookies, - copyPasteLingvaLocalStorage, - pasteLingvaLocalStorage, - setRedirects, - redirect, - initDefaults, - switchInstance, -}; + copyPasteSimplyTranslateCookies, + pasteSimplyTranslateCookies, + copyPasteLingvaLocalStorage, + pasteLingvaLocalStorage, + setRedirects, + redirect, + initDefaults, + switchInstance, +} |