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/tiktok.js | |
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/tiktok.js')
-rw-r--r-- | src/assets/javascripts/tiktok.js | 415 |
1 files changed, 216 insertions, 199 deletions
diff --git a/src/assets/javascripts/tiktok.js b/src/assets/javascripts/tiktok.js index a5c14a27..ba4a9ff1 100644 --- a/src/assets/javascripts/tiktok.js +++ b/src/assets/javascripts/tiktok.js @@ -1,10 +1,8 @@ -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}(www\.|)tiktok\.com.*/ -]; +const targets = [/^https?:\/{2}(www\.|)tiktok\.com.*/] const frontends = new Array("proxiTok") const protocols = new Array("normal", "tor", "i2p", "loki") @@ -12,232 +10,251 @@ 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]] = [] - } + redirects[frontends[i]] = {} + for (let x = 0; x < protocols.length; x++) { + redirects[frontends[i]][protocols[x]] = [] + } } function setRedirects(val) { - browser.storage.local.get('cloudflareBlackList', r => { - redirects.proxiTok = val; - proxiTokNormalRedirectsChecks = [...redirects.proxiTok.normal]; - for (const instance of r.cloudflareBlackList) { - const a = proxiTokNormalRedirectsChecks.indexOf(instance); - if (a > -1) proxiTokNormalRedirectsChecks.splice(a, 1); - } - browser.storage.local.set({ - tiktokRedirects: redirects, - proxiTokNormalRedirectsChecks - }) - }) + browser.storage.local.get("cloudflareBlackList", r => { + redirects.proxiTok = val + proxiTokNormalRedirectsChecks = [...redirects.proxiTok.normal] + for (const instance of r.cloudflareBlackList) { + const a = proxiTokNormalRedirectsChecks.indexOf(instance) + if (a > -1) proxiTokNormalRedirectsChecks.splice(a, 1) + } + browser.storage.local.set({ + tiktokRedirects: redirects, + proxiTokNormalRedirectsChecks, + }) + }) } function initProxiTokCookies(test, from) { - return new Promise(async resolve => { - await init(); - let protocolHost = utils.protocolHost(from); - if (![ - ...proxiTokNormalRedirectsChecks, - ...proxiTokNormalCustomRedirects, - ...proxiTokTorRedirectsChecks, - ...proxiTokTorCustomRedirects, - ...proxiTokI2pCustomRedirects, - ...proxiTokLokiCustomRedirects, - ].includes(protocolHost)) resolve(); - - if (!test) { - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...proxiTokI2pCustomRedirects]; - else if (protocol == 'i2p') checkedInstances = [...proxiTokLokiCustomRedirects]; - else if (protocol == 'tor') checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]; - } - await utils.copyCookie('proxitok', from, checkedInstances, 'theme'); - await utils.copyCookie('proxitok', from, checkedInstances, 'api-legacy'); - } - resolve(true); - }) + return new Promise(async resolve => { + await init() + let protocolHost = utils.protocolHost(from) + if ( + ![ + ...proxiTokNormalRedirectsChecks, + ...proxiTokNormalCustomRedirects, + ...proxiTokTorRedirectsChecks, + ...proxiTokTorCustomRedirects, + ...proxiTokI2pCustomRedirects, + ...proxiTokLokiCustomRedirects, + ].includes(protocolHost) + ) + resolve() + + if (!test) { + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...proxiTokI2pCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...proxiTokLokiCustomRedirects] + else if (protocol == "tor") checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects] + } + await utils.copyCookie("proxitok", from, checkedInstances, "theme") + await utils.copyCookie("proxitok", from, checkedInstances, "api-legacy") + } + resolve(true) + }) } function pasteProxiTokCookies() { - return new Promise(async resolve => { - await init(); - if (disableTiktok || protocol === undefined) { resolve(); return; } - let checkedInstances = []; - if (protocol == 'loki') checkedInstances = [...proxiTokI2pCustomRedirects]; - else if (protocol == 'i2p') checkedInstances = [...proxiTokLokiCustomRedirects]; - else if (protocol == 'tor') checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]; - if ((checkedInstances.length === 0 && protocolFallback) || protocol == 'normal') { - checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]; - } - utils.getCookiesFromStorage('proxitok', checkedInstances, 'theme'); - utils.getCookiesFromStorage('proxitok', checkedInstances, 'api-legacy'); - resolve(); - }) + return new Promise(async resolve => { + await init() + if (disableTiktok || protocol === undefined) { + resolve() + return + } + let checkedInstances = [] + if (protocol == "loki") checkedInstances = [...proxiTokI2pCustomRedirects] + else if (protocol == "i2p") checkedInstances = [...proxiTokLokiCustomRedirects] + else if (protocol == "tor") checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects] + if ((checkedInstances.length === 0 && protocolFallback) || protocol == "normal") { + checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects] + } + utils.getCookiesFromStorage("proxitok", checkedInstances, "theme") + utils.getCookiesFromStorage("proxitok", checkedInstances, "api-legacy") + resolve() + }) } -let - disableTiktok, - protocol, - protocolFallback, - tiktokRedirects, - proxiTokNormalRedirectsChecks, - proxiTokNormalCustomRedirects, - proxiTokTorRedirectsChecks, - proxiTokTorCustomRedirects, - proxiTokI2pCustomRedirects, - proxiTokLokiCustomRedirects; +let disableTiktok, + protocol, + protocolFallback, + tiktokRedirects, + proxiTokNormalRedirectsChecks, + proxiTokNormalCustomRedirects, + proxiTokTorRedirectsChecks, + proxiTokTorCustomRedirects, + proxiTokI2pCustomRedirects, + proxiTokLokiCustomRedirects function init() { - return new Promise(async resolve => { - browser.storage.local.get( - [ - "disableTiktok", - "protocol", - "protocolFallback", - "tiktokRedirects", - "proxiTokNormalRedirectsChecks", - "proxiTokNormalCustomRedirects", - "proxiTokTorRedirectsChecks", - "proxiTokTorCustomRedirects", - "proxiTokI2pCustomRedirects", - "proxiTokLokiCustomRedirects" - ], - r => { - disableTiktok = r.disableTiktok; - protocol = r.protocol; - protocolFallback = r.protocolFallback; - tiktokRedirects = r.tiktokRedirects; - proxiTokNormalRedirectsChecks = r.proxiTokNormalRedirectsChecks; - proxiTokNormalCustomRedirects = r.proxiTokNormalCustomRedirects; - proxiTokTorRedirectsChecks = r.proxiTokTorRedirectsChecks; - proxiTokTorCustomRedirects = r.proxiTokTorCustomRedirects; - proxiTokI2pCustomRedirects = r.proxiTokI2pCustomRedirects; - proxiTokLokiCustomRedirects = r.proxiTokLokiCustomRedirects; - resolve(); - } - ) - }) + return new Promise(async resolve => { + browser.storage.local.get( + [ + "disableTiktok", + "protocol", + "protocolFallback", + "tiktokRedirects", + "proxiTokNormalRedirectsChecks", + "proxiTokNormalCustomRedirects", + "proxiTokTorRedirectsChecks", + "proxiTokTorCustomRedirects", + "proxiTokI2pCustomRedirects", + "proxiTokLokiCustomRedirects", + ], + r => { + disableTiktok = r.disableTiktok + protocol = r.protocol + protocolFallback = r.protocolFallback + tiktokRedirects = r.tiktokRedirects + proxiTokNormalRedirectsChecks = r.proxiTokNormalRedirectsChecks + proxiTokNormalCustomRedirects = r.proxiTokNormalCustomRedirects + proxiTokTorRedirectsChecks = r.proxiTokTorRedirectsChecks + proxiTokTorCustomRedirects = r.proxiTokTorCustomRedirects + proxiTokI2pCustomRedirects = r.proxiTokI2pCustomRedirects + proxiTokLokiCustomRedirects = r.proxiTokLokiCustomRedirects + resolve() + } + ) + }) } -init(); +init() browser.storage.onChanged.addListener(init) // https://www.tiktok.com/@keysikaspol/video/7061265241887345946 // https://www.tiktok.com/@keysikaspol function redirect(url, type, initiator, disableOverride) { - if (disableTiktok && !disableOverride) return; - if (type != "main_frame") return; - const all = [ - ...tiktokRedirects.proxiTok.normal, - ...proxiTokNormalCustomRedirects - ]; - if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return; - if (!targets.some(rx => rx.test(url.href))) return; - - let instancesList = []; - if (protocol == 'loki') instancesList = [...proxiTokI2pCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...proxiTokLokiCustomRedirects]; - else if (protocol == 'tor') instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]; - } - if (instancesList.length === 0) return; - - const randomInstance = utils.getRandomInstance(instancesList); - return `${randomInstance}${url.pathname}`; + if (disableTiktok && !disableOverride) return + if (type != "main_frame") return + const all = [...tiktokRedirects.proxiTok.normal, ...proxiTokNormalCustomRedirects] + if (initiator && (all.includes(initiator.origin) || targets.includes(initiator.host))) return + if (!targets.some(rx => rx.test(url.href))) return + + let instancesList = [] + if (protocol == "loki") instancesList = [...proxiTokI2pCustomRedirects] + else if (protocol == "i2p") instancesList = [...proxiTokLokiCustomRedirects] + else if (protocol == "tor") instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects] + } + if (instancesList.length === 0) return + + const randomInstance = utils.getRandomInstance(instancesList) + return `${randomInstance}${url.pathname}` } function reverse(url) { - return new Promise(async resolve => { - await init(); - let protocolHost = utils.protocolHost(url); - const all = [ - ...tiktokRedirects.proxiTok.normal, - ...tiktokRedirects.proxiTok.tor, - ...proxiTokNormalCustomRedirects, - ...proxiTokTorCustomRedirects, - ...proxiTokI2pCustomRedirects, - ...proxiTokLokiCustomRedirects - ]; - if (!all.includes(protocolHost)) { resolve(); return; } - - resolve(`https://tiktok.com${url.pathname}${url.search}`); - }) + return new Promise(async resolve => { + await init() + let protocolHost = utils.protocolHost(url) + const all = [ + ...tiktokRedirects.proxiTok.normal, + ...tiktokRedirects.proxiTok.tor, + ...proxiTokNormalCustomRedirects, + ...proxiTokTorCustomRedirects, + ...proxiTokI2pCustomRedirects, + ...proxiTokLokiCustomRedirects, + ] + if (!all.includes(protocolHost)) { + resolve() + return + } + + resolve(`https://tiktok.com${url.pathname}${url.search}`) + }) } function switchInstance(url, disableOverride) { - return new Promise(async resolve => { - await init(); - if (disableTiktok && !disableOverride) { resolve(); return; } - let protocolHost = utils.protocolHost(url); - const all = [ - ...tiktokRedirects.proxiTok.tor, - ...tiktokRedirects.proxiTok.normal, - - ...proxiTokNormalCustomRedirects, - ...proxiTokTorCustomRedirects, - ...proxiTokI2pCustomRedirects, - ...proxiTokLokiCustomRedirects - ]; - if (!all.includes(protocolHost)) { resolve(); return; } - - let instancesList = []; - if (protocol == 'loki') instancesList = [...proxiTokI2pCustomRedirects]; - else if (protocol == 'i2p') instancesList = [...proxiTokLokiCustomRedirects]; - else if (protocol == 'tor') instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]; - if ((instancesList.length === 0 && protocolFallback) || protocol == 'normal') { - instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]; - } - - 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 (disableTiktok && !disableOverride) { + resolve() + return + } + let protocolHost = utils.protocolHost(url) + const all = [ + ...tiktokRedirects.proxiTok.tor, + ...tiktokRedirects.proxiTok.normal, + + ...proxiTokNormalCustomRedirects, + ...proxiTokTorCustomRedirects, + ...proxiTokI2pCustomRedirects, + ...proxiTokLokiCustomRedirects, + ] + if (!all.includes(protocolHost)) { + resolve() + return + } + + let instancesList = [] + if (protocol == "loki") instancesList = [...proxiTokI2pCustomRedirects] + else if (protocol == "i2p") instancesList = [...proxiTokLokiCustomRedirects] + else if (protocol == "tor") instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects] + if ((instancesList.length === 0 && protocolFallback) || protocol == "normal") { + instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects] + } + + 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(async data => { - let dataJson = JSON.parse(data); - for (let i = 0; i < frontends.length; i++) { - redirects[frontends[i]] = dataJson[frontends[i]] - } - browser.storage.local.set({ - disableTiktok: false, - - tiktokRedirects: redirects, - - proxiTokNormalRedirectsChecks: [...redirects.proxiTok.normal], - proxiTokNormalCustomRedirects: [], - - proxiTokTorRedirectsChecks: [...redirects.proxiTok.tor], - proxiTokTorCustomRedirects: [], - - proxiTokI2pRedirectsChecks: [...redirects.proxiTok.i2p], - proxiTokI2pCustomRedirects: [], - - proxiTokLokiRedirectsChecks: [...redirects.proxiTok.loki], - proxiTokLokiCustomRedirects: [] - }, () => resolve()); - }); - }) + return new Promise(async resolve => { + fetch("/instances/data.json") + .then(response => response.text()) + .then(async data => { + let dataJson = JSON.parse(data) + for (let i = 0; i < frontends.length; i++) { + redirects[frontends[i]] = dataJson[frontends[i]] + } + browser.storage.local.set( + { + disableTiktok: false, + + tiktokRedirects: redirects, + + proxiTokNormalRedirectsChecks: [...redirects.proxiTok.normal], + proxiTokNormalCustomRedirects: [], + + proxiTokTorRedirectsChecks: [...redirects.proxiTok.tor], + proxiTokTorCustomRedirects: [], + + proxiTokI2pRedirectsChecks: [...redirects.proxiTok.i2p], + proxiTokI2pCustomRedirects: [], + + proxiTokLokiRedirectsChecks: [...redirects.proxiTok.loki], + proxiTokLokiCustomRedirects: [], + }, + () => resolve() + ) + }) + }) } export default { - setRedirects, + setRedirects, - redirect, - reverse, - switchInstance, + redirect, + reverse, + switchInstance, - initProxiTokCookies, - pasteProxiTokCookies, + initProxiTokCookies, + pasteProxiTokCookies, - initDefaults -}; + initDefaults, +} |