diff options
author | BobIsMyManager <bimmgitsignature.nly8m@simplelogin.co> | 2022-07-21 21:30:46 +0100 |
---|---|---|
committer | BobIsMyManager <bimmgitsignature.nly8m@simplelogin.co> | 2022-07-21 21:30:46 +0100 |
commit | f4dc7ded61079a8d564bd804fad00a7f4f904319 (patch) | |
tree | 06b2df78b2a55411c4b4aa39afea9e9579ecf9df /src/assets/javascripts/translate | |
parent | No more trailing slashes (diff) | |
download | libredirect-f4dc7ded61079a8d564bd804fad00a7f4f904319.zip |
WIP: Optimization, resolve incorrect protocol storage, unified protocol settings...
Optmizations still throw a lot of errors, this will be resolved Custom instances of previously unused protocols do not save, this will be resolved Track version number locally for easier config migration in the future
Diffstat (limited to 'src/assets/javascripts/translate')
-rw-r--r-- | src/assets/javascripts/translate/translate.js | 146 |
1 files changed, 80 insertions, 66 deletions
diff --git a/src/assets/javascripts/translate/translate.js b/src/assets/javascripts/translate/translate.js index bbf08d52..ae64f127 100644 --- a/src/assets/javascripts/translate/translate.js +++ b/src/assets/javascripts/translate/translate.js @@ -6,30 +6,30 @@ const targets = [ /^https?:\/{2}translate\.google(\.[a-z]{2,3}){1,2}\//, ]; -let redirects = { - "simplyTranslate": { - "normal": [], - "tor": [], - "i2p": [], - "loki": [] - }, - "lingva": { - "normal": [], - "tor": [] - } -}; +const frontends = new Array("simplyTranslate", "lingva") +const protocols = new Array("normal", "tor", "i2p", "loki") + +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]] = [] + } +} let translateDisable, translateFrontend, - translateProtocol, + protocol, + protocolFallback, translateRedirects, simplyTranslateNormalRedirectsChecks, simplyTranslateNormalCustomRedirects, simplyTranslateTorRedirectsChecks, simplyTranslateTorCustomRedirects, - simplyTranslateI2PRedirectsChecks, - simplyTranslateI2PCustomRedirects, + simplyTranslateI2pRedirectsChecks, + simplyTranslateI2pCustomRedirects, simplyTranslateLokiRedirectsChecks, simplyTranslateLokiCustomReidrects, lingvaNormalRedirectsChecks, @@ -43,15 +43,15 @@ function init() { [ "translateDisable", "translateFrontend", - "translateProtocol", + "protocol", + "protocolFallback", "translateRedirects", - "simplyTranslateNormalRedirectsChecks", "simplyTranslateNormalCustomRedirects", "simplyTranslateTorRedirectsChecks", "simplyTranslateTorCustomRedirects", - "simplyTranslateI2PRedirectsChecks", - "simplyTranslateI2PCustomRedirects", + "simplyTranslateI2pRedirectsChecks", + "simplyTranslateI2pCustomRedirects", "simplyTranslateLokiRedirectsChecks", "simplyTranslateLokiCustomReidrects", @@ -63,14 +63,15 @@ function init() { r => { translateDisable = r.translateDisable; translateFrontend = r.translateFrontend; - translateProtocol = r.translateProtocol; + 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; + simplyTranslateI2pRedirectsChecks = r.simplyTranslateI2pRedirectsChecks; + simplyTranslateI2pCustomRedirects = r.simplyTranslateI2pCustomRedirects; simplyTranslateLokiRedirectsChecks = r.simplyTranslateLokiRedirectsChecks; simplyTranslateLokiCustomReidrects = r.simplyTranslateLokiCustomReidrects; lingvaNormalRedirectsChecks = r.lingvaNormalRedirectsChecks; @@ -98,7 +99,7 @@ function setRedirects(val) { translateRedirects: redirects, simplyTranslateNormalRedirectsChecks: redirects.simplyTranslate.normal, simplyTranslateTorRedirectsChecks: redirects.simplyTranslate.tor, - simplyTranslateI2PRedirectsChecks: redirects.simplyTranslate.i2p, + simplyTranslateI2pRedirectsChecks: redirects.simplyTranslate.i2p, simplyTranslateLokiRedirectsChecks: redirects.simplyTranslate.loki, lingvaNormalRedirectsChecks, lingvaTorRedirectsChecks: redirects.lingva.tor, @@ -124,9 +125,11 @@ function copyPasteLingvaLocalStorage(test, url, tabId) { { file: "/assets/javascripts/translate/get_lingva_preferences.js", runAt: "document_start" } ); - let checkedInstances; - if (translateProtocol == 'normal') checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; - if (translateProtocol == 'tor') checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; + let checkedInstances = []; + 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; } @@ -145,9 +148,11 @@ function pasteLingvaLocalStorage() { return new Promise(async resolve => { await init(); if (translateDisable || translateFrontend != 'lingva') { resolve(); return; } - let checkedInstances; - if (translateProtocol == 'normal') checkedInstances = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; - if (translateProtocol == 'tor') checkedInstances = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; + let checkedInstances = []; + 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" })) @@ -164,17 +169,19 @@ function copyPasteSimplyTranslateCookies(test, from) { ...simplyTranslateNormalCustomRedirects, ...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects, - ...simplyTranslateI2PRedirectsChecks, - ...simplyTranslateI2PCustomRedirects, + ...simplyTranslateI2pRedirectsChecks, + ...simplyTranslateI2pCustomRedirects, ...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects, ].includes(protocolHost)) { resolve(); return; } if (!test) { - let checkedInstances; - if (translateProtocol == 'normal') checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects] - else if (translateProtocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects] - else if (translateProtocol == 'i2p') checkedInstances = [...simplyTranslateI2PRedirectsChecks, ...simplyTranslateI2PCustomRedirects] - else if (translateProtocol == 'loki') checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects] + let checkedInstances = []; + if (protocol == 'loki') checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects] + 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'); @@ -189,11 +196,13 @@ function pasteSimplyTranslateCookies() { return new Promise(async resolve => { await init(); if (translateDisable || translateFrontend != 'simplyTranslate') { resolve(); return; } - let checkedInstances; - if (translateProtocol == 'normal') checkedInstances = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects] - else if (translateProtocol == 'tor') checkedInstances = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects] - else if (translateProtocol == 'i2p') checkedInstances = [...simplyTranslateI2PRedirectsChecks, ...simplyTranslateI2PCustomRedirects] - else if (translateProtocol == 'loki') checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects] + let checkedInstances = []; + if (protocol == 'loki') checkedInstances = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects] + 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'); @@ -208,11 +217,13 @@ function redirect(url, disableOverride) { if (!targets.some(rx => rx.test(url.href))) return; if (translateFrontend == 'simplyTranslate') { - let instancesList; - if (translateProtocol == 'normal') instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]; - if (translateProtocol == 'tor') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]; - if (translateProtocol == 'i2p') instancesList = [...simplyTranslateI2PRedirectsChecks, ...simplyTranslateI2PCustomRedirects]; - if (translateProtocol == 'loki') instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects]; + let instancesList = []; + if (protocol == 'loki') instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects]; + 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) @@ -226,9 +237,11 @@ function redirect(url, disableOverride) { let pair = params_arr[i].split('='); params[pair[0]] = pair[1]; } - let instancesList; - if (translateProtocol == 'normal') instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; - if (translateProtocol == 'tor') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; + let instancesList = []; + 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) @@ -252,7 +265,7 @@ function switchInstance(url, disableOverride) { ...simplyTranslateNormalCustomRedirects, ...simplyTranslateTorCustomRedirects, - ...simplyTranslateI2PCustomRedirects, + ...simplyTranslateI2pCustomRedirects, ...simplyTranslateLokiCustomReidrects, ...translateRedirects.lingva.normal, @@ -263,21 +276,22 @@ function switchInstance(url, disableOverride) { ].includes(protocolHost)) { resolve(); return; } let instancesList; - if (translateProtocol == 'normal') { - if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]; - else if (translateFrontend == 'lingva') instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; + + if (protocol == 'loki') { + if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects]; + //else if (translateFrontend == 'lingva') instancesList = [...lingvaLokiRedirectsChecks, ...lingvaLokiCustomRedirects]; + } + else if (protocol == 'i2p') { + if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateI2pRedirectsChecks, ...simplyTranslateI2pCustomRedirects]; + //else if (translateFrontend == 'lingva') instancesList = [...lingvaI2PRedirectsChecks, ...lingvaI2PCustomRedirects]; } - else if (translateProtocol == 'tor') { + else if (protocol == 'tor') { if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]; else if (translateFrontend == 'lingva') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; } - else if (translateProtocol == 'i2p') { - if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateI2PRedirectsChecks, ...simplyTranslateI2PCustomRedirects]; - //else if (translateFrontend == 'lingva') instancesList = [...lingvaI2PRedirectsChecks, ...lingvaI2PCustomRedirects]; - } - else if (translateProtocol == 'loki') { - if (translateFrontend == 'simplyTranslate') instancesList = [...simplyTranslateLokiRedirectsChecks, ...simplyTranslateLokiCustomReidrects]; - //else if (translateFrontend == 'lingva') instancesList = [...lingvaLokiRedirectsChecks, ...lingvaLokiCustomRedirects]; + 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); @@ -293,8 +307,9 @@ function initDefaults() { 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; + 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] @@ -305,15 +320,14 @@ function initDefaults() { browser.storage.local.set({ translateDisable: false, translateFrontend: "simplyTranslate", - translateProtocol: 'normal', translateRedirects: redirects, simplyTranslateNormalRedirectsChecks: [...redirects.simplyTranslate.normal], simplyTranslateNormalCustomRedirects: [], simplyTranslateTorRedirectsChecks: [...redirects.simplyTranslate.tor], simplyTranslateTorCustomRedirects: [], - simplyTranslateI2PRedirectsChecks: [...redirects.simplyTranslate.i2p], - simplyTranslateI2PCustomRedirects: [], + simplyTranslateI2pRedirectsChecks: [...redirects.simplyTranslate.i2p], + simplyTranslateI2pCustomRedirects: [], simplyTranslateLokiRedirectsChecks: [...redirects.simplyTranslate.loki], simplyTranslateLokiCustomReidrects: [], |