diff options
author | ManeraKai <manerakai@protonmail.com> | 2022-05-15 18:44:28 +0300 |
---|---|---|
committer | ManeraKai <manerakai@protonmail.com> | 2022-05-15 18:44:28 +0300 |
commit | ab44fd04ffa1055bd17a3da02017e8de3da88af2 (patch) | |
tree | 31480d540bcedd00c74ede926449af3ed34856bb /src/assets/javascripts | |
parent | Merge branch 'master' of https://github.com/libredirect/libredirect (diff) | |
download | libredirect-ab44fd04ffa1055bd17a3da02017e8de3da88af2.zip |
Complete on supporting Unify #234
Diffstat (limited to 'src/assets/javascripts')
21 files changed, 741 insertions, 1050 deletions
diff --git a/src/assets/javascripts/helpers/common.js b/src/assets/javascripts/helpers/common.js index f0da54c9..6e1c71ff 100644 --- a/src/assets/javascripts/helpers/common.js +++ b/src/assets/javascripts/helpers/common.js @@ -40,16 +40,13 @@ async function wholeInit() { } async function updateInstances() { - const apiEndpoint = 'https://raw.githubusercontent.com/libredirect/libredirect/master/src/instances/data.json'; - let request = new XMLHttpRequest(); - request.open('GET', apiEndpoint, false); - request.send(null); - - if (request.status === 200) { + 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 wholeInit(); - - const instances = JSON.parse(request.responseText); + const instances = JSON.parse(http.responseText); brwoser.storage.local.get( [ @@ -98,12 +95,7 @@ function protocolHost(url) { return `${url.protocol}//${url.host}`; } -async function processDefaultCustomInstances( - target, - name, - protocol, - document, -) { +async function processDefaultCustomInstances(target, name, protocol, document) { function camelCase(str) { return str.charAt(0).toUpperCase() + str.slice(1); } @@ -117,7 +109,6 @@ async function processDefaultCustomInstances( await initCloudflareList(); - let nameDefaultRedirects; let redirectsChecks = `${name}${camelCase(protocol)}RedirectsChecks`; @@ -250,21 +241,39 @@ function isRtl() { return ["ar", "iw", "ku", "fa", "ur"].includes(browser.i18n.getUILanguage()) } -async function ping(href) { +function getIp(href) { return new Promise(resolve => { + let host = new URL(href).hostname; + let http = new XMLHttpRequest(); + http.open("GET", `https://dns.google/resolve?name=${host}`, /*async*/true); + http.onreadystatechange = () => { + if (http.readyState == 4 && http.status == 200) { + let r = JSON.parse(http.responseText); + resolve(r.Answer[0].data) + } + }; + http.ontimeout = () => resolve() + http.onerror = () => resolve() + try { + http.send(null) + } + catch (exception) { + resolve() + } + }) +} + +async function ping(href) { + return new Promise(async resolve => { let http = new XMLHttpRequest(); - http.open("GET", href + '?_=' + new Date().getTime(), /*async*/true); + http.open("GET", `${href}?_=${new Date().getTime()}`, /*async*/true); http.timeout = 5000; let started = new Date().getTime(); - http.onreadystatechange = function () { + http.onreadystatechange = () => { if (http.readyState == 2) { - if (http.status == 200) { - let ended = new Date().getTime(); - let ms = ended - started; - http.abort(); - resolve(ms); - } - else resolve() + let ended = new Date().getTime(); + http.abort(); + resolve(ended - started); } }; http.ontimeout = () => resolve(5000) @@ -283,19 +292,33 @@ async function testLatency(element, instances) { for (const href of instances) await ping(href).then(m => { if (m) { myList[href] = m; - element.innerHTML = `${href}: ${'<span style="color:' + (m <= 1000 ? "green" : m <= 2000 ? "orange" : "red") + ';">' + (m == 5000 ? '5000ms+' : m + 'ms') + '</span>'}`; - console.log(`${href}: ${m}ms`) + let color = m <= 1000 ? "green" : m <= 2000 ? "orange" : "red"; + let text = m == 5000 ? '5000ms+' : m + 'ms'; + element.innerHTML = `${href}: '<span style="color:${color};">${text}</span>`; } }) resolve(myList); }) } -function copyCookie(targetUrl, url, name) { +function copyCookie(frontend, targetUrl, url, name) { browser.cookies.get( { url: protocolHost(targetUrl), name: name }, r => { - if (r) browser.cookies.set({ url: url, name: name, value: r.value }) + if (r) { + browser.cookies.set({ url: url, name: name, value: r.value }) + browser.storage.local.set({ [`${frontend}_${name}`]: r.value }) + } + } + ) +} + +function getCookiesFromStorage(frontend, to, name) { + let key = `${frontend}_${name}`; + browser.storage.local.get( + key, + r => { + if (r) browser.cookies.set({ url: to, name: name, value: r[key] }) } ) } @@ -307,5 +330,6 @@ export default { processDefaultCustomInstances, isRtl, testLatency, - copyCookie + copyCookie, + getCookiesFromStorage, } diff --git a/src/assets/javascripts/helpers/general.js b/src/assets/javascripts/helpers/general.js index b6570629..fdc60643 100644 --- a/src/assets/javascripts/helpers/general.js +++ b/src/assets/javascripts/helpers/general.js @@ -1,14 +1,6 @@ "use strict"; window.browser = window.browser || window.chrome; -let alwaysUsePreferred; -const getAlwaysUsePreferred = () => alwaysUsePreferred; -function setAlwaysUsePreferred(val) { - alwaysUsePreferred = val; - browser.storage.local.set({ alwaysUsePreferred }) - console.log("alwaysUsePreferred: ", alwaysUsePreferred) -} - let theme; const getTheme = () => theme; function setTheme(val) { @@ -17,14 +9,6 @@ function setTheme(val) { console.log("theme: ", theme) } -let applyThemeToSites; -const getApplyThemeToSites = () => applyThemeToSites; -function setApplyThemeToSites(val) { - applyThemeToSites = val; - browser.storage.local.set({ applyThemeToSites }) - console.log("applyThemeToSites: ", applyThemeToSites) -} - let exceptions = { "url": [], "regex": [], @@ -59,18 +43,14 @@ async function init() { resolve => browser.storage.local.get( [ "exceptions", - "alwaysUsePreferred", "theme", - "applyThemeToSites", "popupFrontends", "autoRedirect" ], - r => { + r => { if (r.exceptions) exceptions = r.exceptions; - alwaysUsePreferred = r.alwaysUsePreferred ?? false; theme = r.theme ?? "DEFAULT" - applyThemeToSites = r.applyThemeToSites ?? false; popupFrontends = r.popupFrontends ?? [ "youtube", @@ -128,12 +108,6 @@ export default { getAutoRedirect, setAutoRedirect, - getAlwaysUsePreferred, - setAlwaysUsePreferred, - - getApplyThemeToSites, - setApplyThemeToSites, - getPopupFrontends, setPopupFrontends, diff --git a/src/assets/javascripts/helpers/imgur.js b/src/assets/javascripts/helpers/imgur.js index f581a75a..8f8c28e9 100644 --- a/src/assets/javascripts/helpers/imgur.js +++ b/src/assets/javascripts/helpers/imgur.js @@ -52,21 +52,8 @@ let rimgoI2pCustomRedirects; function redirect(url, type, initiator) { - // https://imgur.com/gallery/s4WXQmn - // https://imgur.com/a/H8M4rcp - // https://imgur.com/gallery/gYiQLWy - // https://imgur.com/gallery/cTRwaJU - // https://i.imgur.com/CFSQArP.jpeg - if (disable) return; - if (url.pathname == "/") false; - if ( - initiator && - ([...redirects.rimgo.normal, ...rimgoNormalCustomRedirects].includes(initiator.origin) || targets.test(initiator.host)) - ) return; - if (!targets.test(url.href)) return; - - + if (url.pathname == "/") return; if (![ "main_frame", "sub_frame", @@ -74,10 +61,19 @@ function redirect(url, type, initiator) { "other", "image", "media", - ].includes(type)) return null; - - if (url.pathname.includes("delete/")) return null; + ].includes(type)) return; + if ( + initiator && + ([...redirects.rimgo.normal, ...rimgoNormalCustomRedirects].includes(initiator.origin) || targets.test(initiator.host)) + ) return; + if (!targets.test(url.href)) return; + if (url.pathname.includes("delete/")) return; + // https://imgur.com/gallery/s4WXQmn + // https://imgur.com/a/H8M4rcp + // https://imgur.com/gallery/gYiQLWy + // https://imgur.com/gallery/cTRwaJU + // https://i.imgur.com/CFSQArP.jpeg let instancesList; if (protocol == 'normal') instancesList = [...rimgoNormalRedirectsChecks, ...rimgoNormalCustomRedirects]; if (protocol == 'tor') instancesList = [...rimgoTorRedirectsChecks, ...rimgoTorCustomRedirects]; @@ -88,17 +84,29 @@ function redirect(url, type, initiator) { return `${randomInstance}${url.pathname}${url.search}`; } -function reverse(url) { - let protocolHost = commonHelper.protocolHost(url); - if ( - ![...redirects.rimgo.normal, - ...redirects.rimgo.tor, - ...redirects.rimgo.i2p, - ...rimgoNormalCustomRedirects, - ...rimgoTorCustomRedirects, - ...rimgoI2pCustomRedirects].includes(protocolHost) - ) return; - return `https://imgur.com${url.pathname}${url.search}`; +async function reverse(url) { + browser.storage.local.get( + [ + "imgurRedirects", + "rimgoNormalCustomRedirects", + "rimgoTorCustomRedirects", + "rimgoI2pCustomRedirects", + ], + r => { + let protocolHost = commonHelper.protocolHost(url); + if ( + ![ + ...r.imgurRedirects.rimgo.normal, + ...r.imgurRedirects.rimgo.tor, + ...r.imgurRedirects.rimgo.i2p, + ...r.rimgoNormalCustomRedirects, + ...r.rimgoTorCustomRedirects, + ...r.rimgoI2pCustomRedirects + ].includes(protocolHost) + ) return; + return `https://imgur.com${url.pathname}${url.search}`; + } + ) } function switchInstance(url) { diff --git a/src/assets/javascripts/helpers/instagram.js b/src/assets/javascripts/helpers/instagram.js index ca6097dd..effbe46c 100644 --- a/src/assets/javascripts/helpers/instagram.js +++ b/src/assets/javascripts/helpers/instagram.js @@ -84,21 +84,33 @@ function redirect(url, type, initiator) { return `${randomInstance}/u${url.pathname}${url.search}`; // Likely a user profile, redirect to '/u/...' } -function reverse(url) { - let protocolHost = commonHelper.protocolHost(url); - if ( - ![...redirects.bibliogram.normal, - ...redirects.bibliogram.tor, - ...bibliogramNormalCustomRedirects, - ...bibliogramTorCustomRedirects].includes(protocolHost) - ) return; - if (url.pathname.startsWith('/p')) - return `https://instagram.com${url.pathname.replace('/p', '')}${url.search}`; - - if (url.pathname.startsWith('/u')) - return `https://instagram.com${url.pathname.replace('/u', '')}${url.search}`; - - return `https://instagram.com${url.pathname}${url.search}`; +async function reverse(url) { + browser.storage.local.get( + [ + "instagramRedirects", + "bibliogramNormalCustomRedirects", + "bibliogramTorCustomRedirects", + ], + r => { + let protocolHost = commonHelper.protocolHost(url); + if ( + ![ + ...r.instagramRedirects.bibliogram.normal, + ...r.instagramRedirects.bibliogram.tor, + ...r.bibliogramNormalCustomRedirects, + ...r.bibliogramTorCustomRedirects + ].includes(protocolHost) + ) return; + + if (url.pathname.startsWith('/p')) + return `https://instagram.com${url.pathname.replace('/p', '')}${url.search}`; + + if (url.pathname.startsWith('/u')) + return `https://instagram.com${url.pathname.replace('/u', '')}${url.search}`; + + return `https://instagram.com${url.pathname}${url.search}`; + } + ) } function switchInstance(url) { @@ -139,7 +151,6 @@ function isBibliogram(url) { let instancesCookies; let theme; -let applyThemeToSites; function initBibliogramCookies(url) { let protocolHost = commonHelper.protocolHost(url); browser.cookies.get( @@ -150,17 +161,15 @@ function initBibliogramCookies(url) { let request = new XMLHttpRequest(); request.open("POST", `${protocolHost}/settings/return?referrer=%2F`); - if (applyThemeToSites) { - let themeValue; - if (theme == 'light') themeValue = "classic"; - if (theme == 'dark') themeValue = "pussthecat.org-v2" - - if (themeValue) { - let data = `csrf=x&theme=${themeValue}`; - request.send(data); - if (!instancesCookies.includes(protocolHost)) instancesCookies.push(protocolHost); - browser.storage.local.set({ instancesCookies }) - } + let themeValue; + if (theme == 'light') themeValue = "classic"; + if (theme == 'dark') themeValue = "pussthecat.org-v2" + + if (themeValue) { + let data = `csrf=x&theme=${themeValue}`; + request.send(data); + if (!instancesCookies.includes(protocolHost)) instancesCookies.push(protocolHost); + browser.storage.local.set({ instancesCookies }) } } }) @@ -168,25 +177,22 @@ function initBibliogramCookies(url) { } -async function initDefaults() { - return new Promise(async resolve => { - fetch('/instances/data.json').then(response => response.text()).then(async data => { +function initDefaults() { + return new Promise(resolve => { + fetch('/instances/data.json').then(response => response.text()).then(data => { let dataJson = JSON.parse(data); redirects.bibliogram = dataJson.bibliogram; - browser.storage.local.get('cloudflareList', async r => { + browser.storage.local.get('cloudflareList', r => { bibliogramNormalRedirectsChecks = [...redirects.bibliogram.normal]; for (const instance of r.cloudflareList) { - let i; - - i = bibliogramNormalRedirectsChecks.indexOf(instance); + let i = bibliogramNormalRedirectsChecks.indexOf(instance); if (i > -1) bibliogramNormalRedirectsChecks.splice(i, 1); } - await browser.storage.local.set({ + browser.storage.local.set({ disableInstagram: false, instagramRedirects: redirects, theme: 'DEFAULT', - applyThemeToSites: false, instancesCookies: [], @@ -212,7 +218,6 @@ async function init() { "instagramRedirects", "theme", - "applyThemeToSites", "instancesCookies", @@ -228,7 +233,6 @@ async function init() { if (r.instagramRedirects) redirects = r.instagramRedirects theme = r.theme; - applyThemeToSites = r.applyThemeToSites; instancesCookies = r.instancesCookies; diff --git a/src/assets/javascripts/helpers/lbry.js b/src/assets/javascripts/helpers/lbry.js index b82ae9ad..6010574e 100644 --- a/src/assets/javascripts/helpers/lbry.js +++ b/src/assets/javascripts/helpers/lbry.js @@ -118,7 +118,6 @@ async function initDefaults() { }) } - async function init() { return new Promise(resolve => { browser.storage.local.get( diff --git a/src/assets/javascripts/helpers/medium.js b/src/assets/javascripts/helpers/medium.js index 99a14cca..5306f478 100644 --- a/src/assets/javascripts/helpers/medium.js +++ b/src/assets/javascripts/helpers/medium.js @@ -35,18 +35,9 @@ let redirects = { } }; const getRedirects = () => redirects; -const getCustomRedirects = function () { - return { - "scribe": { - "normal": [...scribeNormalRedirectsChecks, ...scribeNormalCustomRedirects], - "tor": [...scribeTorRedirectsChecks, ...scribeTorCustomRedirects] - }, - }; -}; function setRedirects(val) { redirects.scribe = val; browser.storage.local.set({ mediumRedirects: redirects }) - console.log("mediumRedirects: ", val) for (const item of scribeNormalRedirectsChecks) if (!redirects.scribe.normal.includes(item)) { var index = scribeNormalRedirectsChecks.indexOf(item); if (index !== -1) scribeNormalRedirectsChecks.splice(index, 1); @@ -78,12 +69,11 @@ function redirect(url, type, initiator) { if (disable) return; - if (type != "main_frame" && "sub_frame" && "xmlhttprequest" && "other") return null; + if (type != "main_frame" && "sub_frame" && "xmlhttprequest" && "other") return; if (initiator && ([...redirects.scribe.normal, ...scribeNormalCustomRedirects].includes(initiator.origin))) return; if (!targets.some(rx => rx.test(url.host))) return; - console.log('url.pathname', url.pathname); if (/^\/($|@[a-zA-Z.]{0,}(\/|)$)/.test(url.pathname)) return; let instancesList; @@ -112,7 +102,6 @@ function switchInstance(url) { if (protocol == 'normal') instancesList = [...scribeNormalCustomRedirects, ...scribeNormalRedirectsChecks]; else if (protocol == 'tor') instancesList = [...scribeTorCustomRedirects, ...scribeTorRedirectsChecks]; - console.log("instancesList", instancesList); let index = instancesList.indexOf(protocolHost); if (index > -1) instancesList.splice(index, 1); @@ -122,17 +111,17 @@ function switchInstance(url) { return `${randomInstance}${url.pathname}${url.search}`; } -async function initDefaults() { - fetch('/instances/data.json').then(response => response.text()).then(async data => { +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', async r => { + 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); } - await browser.storage.local.set({ + browser.storage.local.set({ disableMedium: false, mediumRedirects: redirects, @@ -162,10 +151,7 @@ async function init() { ], r => { disable = r.disableMedium; - protocol = r.mediumProtocol; - - redirects = r.mediumRedirects; scribeNormalRedirectsChecks = r.scribeNormalRedirectsChecks; @@ -181,10 +167,7 @@ async function init() { } export default { - targets, - getRedirects, - getCustomRedirects, setRedirects, redirect, diff --git a/src/assets/javascripts/helpers/peertube.js b/src/assets/javascripts/helpers/peertube.js index 14dda0b1..7fca2b61 100644 --- a/src/assets/javascripts/helpers/peertube.js +++ b/src/assets/javascripts/helpers/peertube.js @@ -73,11 +73,18 @@ function switchInstance(url) { } function redirect(url, type, initiator) { - - let protocolHost = commonHelper.protocolHost(url); - if (disable) return null; - if (initiator && ([...redirects.simpleertube.normal, ...simpleertubeNormalCustomRedirects].includes(initiator.origin) || targets.includes(initiator.host))) return null; + if ( + initiator && + ( + [ + ...redirects.simpleertube.normal, + ...simpleertubeNormalCustomRedirects + ].includes(initiator.origin) || + targets.includes(initiator.host) + ) + ) return null; + let protocolHost = commonHelper.protocolHost(url); if (!targets.includes(protocolHost)) return null; if (type != "main_frame") return null; @@ -104,9 +111,7 @@ async function initDefaults() { } await browser.storage.local.set({ peerTubeTargets: ['https://search.joinpeertube.org', ...dataJson.peertube], - disablePeertubeTargets: true, - peertubeRedirects: redirects, simpleertubeNormalRedirectsChecks: simpleertubeNormalRedirectsChecks, @@ -132,14 +137,11 @@ async function init() { "simpleertubeTorCustomRedirects", "peerTubeTargets", - "peertubeTargetsProtocol" ], r => { disable = r.disablePeertubeTargets; - protocol = r.peertubeTargetsProtocol; - targets = r.peerTubeTargets; simpleertubeNormalRedirectsChecks = r.simpleertubeNormalRedirectsChecks; @@ -152,7 +154,6 @@ async function init() { } export default { - getRedirects, setRedirects, diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js index 04ac2a4b..bbcaf872 100644 --- a/src/assets/javascripts/helpers/reddit.js +++ b/src/assets/javascripts/helpers/reddit.js @@ -17,18 +17,6 @@ let redirects = { }, }; const getRedirects = () => redirects; -const getCustomRedirects = function () { - return { - "libreddit": { - "normal": [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects], - "tor": [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects] - }, - "teddit": { - "normal": [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects], - "tor": [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects] - } - }; -}; function setLibredditRedirects(val) { redirects.libreddit = val; @@ -80,63 +68,93 @@ let tedditTorCustomRedirects = []; const bypassPaths = /\/(gallery\/poll\/rpan\/settings\/topics)/; -let disableReddit; -const getDisableReddit = () => disableReddit; -function setDisableReddit(val) { - disableReddit = val; - browser.storage.local.set({ disableReddit }) -} +let + disableReddit, + frontend, + protocol; -let frontend; -let protocol; -let bypassWatchOnReddit; - -function initLibredditCookies(targetUrl) { - browser.storage.local.get( - [ - "redditProtocol", - "libredditNormalRedirectsChecks", - "libredditNormalCustomRedirects", - "libredditTorRedirectsChecks", - "libredditTorCustomRedirects", - ], - r => { - let checkedInstances; - if (r.redditProtocol == 'normal') checkedInstances = [...r.libredditNormalRedirectsChecks, ...r.libredditNormalCustomRedirects]; - else if (r.redditProtocol == 'tor') checkedInstances = [...r.libredditTorRedirectsChecks, ...r.libredditTorCustomRedirects]; - - for (const instance of checkedInstances) { - commonHelper.copyCookie(targetUrl, instance, "theme"); - commonHelper.copyCookie(targetUrl, instance, "front_page"); - commonHelper.copyCookie(targetUrl, instance, "layout"); - commonHelper.copyCookie(targetUrl, instance, "wide"); - commonHelper.copyCookie(targetUrl, instance, "post_sort"); - commonHelper.copyCookie(targetUrl, instance, "comment_sort"); - commonHelper.copyCookie(targetUrl, instance, "show_nsfw"); - commonHelper.copyCookie(targetUrl, instance, "autoplay_videos"); - commonHelper.copyCookie(targetUrl, instance, "use_hls"); - commonHelper.copyCookie(targetUrl, instance, "hide_hls_notification"); +function initLibredditCookies(from) { + return new Promise(resolve => { + browser.storage.local.get( + [ + "redditProtocol", + "libredditNormalRedirectsChecks", + "libredditNormalCustomRedirects", + "libredditTorRedirectsChecks", + "libredditTorCustomRedirects", + ], + r => { + let protocolHost = commonHelper.protocolHost(from); + if (![ + ...r.libredditNormalRedirectsChecks, + ...r.libredditTorRedirectsChecks, + ...r.libredditNormalCustomRedirects, + ...r.libredditTorCustomRedirects, + ].includes(protocolHost)) resolve(); + + 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) { + commonHelper.copyCookie('libreddit', from, to, "theme"); + commonHelper.copyCookie('libreddit', from, to, "front_page"); + commonHelper.copyCookie('libreddit', from, to, "layout"); + commonHelper.copyCookie('libreddit', from, to, "wide"); + commonHelper.copyCookie('libreddit', from, to, "post_sort"); + commonHelper.copyCookie('libreddit', from, to, "comment_sort"); + commonHelper.copyCookie('libreddit', from, to, "show_nsfw"); + commonHelper.copyCookie('libreddit', from, to, "autoplay_videos"); + commonHelper.copyCookie('libreddit', from, to, "use_hls"); + commonHelper.copyCookie('libreddit', from, to, "hide_hls_notification"); + } + resolve(true); } - } - ) -} + ) + }) -function initTedditCookies() { - let checkedInstances = [ - ...tedditNormalRedirectsChecks, - ...tedditNormalCustomRedirects, - ...tedditTorRedirectsChecks, - ...tedditTorCustomRedirects - ] - for (const instanceUrl of checkedInstances) - browser.cookies.set({ - url: instanceUrl, - name: "theme", - value: theme == 'dark' ? 'dark' : 'white' - }) } -let alwaysUsePreferred; +function initTedditCookies(from) { + return new Promise(resolve => { + browser.storage.local.get( + [ + "redditProtocol", + "tedditNormalRedirectsChecks", + "tedditNormalCustomRedirects", + "tedditTorRedirectsChecks", + "tedditTorCustomRedirects", + ], + r => { + let protocolHost = commonHelper.protocolHost(from); + if (![ + ...r.tedditNormalRedirectsChecks, + ...r.tedditTorRedirectsChecks, + ...r.tedditNormalCustomRedirects, + ...r.tedditTorCustomRedirects, + ].includes(protocolHost)) resolve(); + + 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) { + commonHelper.copyCookie('teddit', from, to, 'collapse_child_comments') + commonHelper.copyCookie('teddit', from, to, 'domain_instagram') + commonHelper.copyCookie('teddit', from, to, 'domain_twitter') + commonHelper.copyCookie('teddit', from, to, 'domain_youtube') + commonHelper.copyCookie('teddit', from, to, 'flairs') + commonHelper.copyCookie('teddit', from, to, 'highlight_controversial') + commonHelper.copyCookie('teddit', from, to, 'nsfw_enabled') + commonHelper.copyCookie('teddit', from, to, 'post_media_max_height') + commonHelper.copyCookie('teddit', from, to, 'show_upvoted_percentage') + commonHelper.copyCookie('teddit', from, to, 'show_upvotes') + commonHelper.copyCookie('teddit', from, to, 'theme') + commonHelper.copyCookie('teddit', from, to, 'videos_muted') + } + resolve(true); + } + ) + }) +} function redirect(url, type, initiator) { // https://libreddit.exonip.de/vid/1mq8d0ma3yk81/720.mp4 @@ -151,47 +169,9 @@ function redirect(url, type, initiator) { // https://i.redd.it/bfkhs659tzk81.jpg if (disableReddit) return null; - - let protocolHost = commonHelper.protocolHost(url); - - let isTeddit = [ - ...redirects.teddit.normal, - ...redirects.teddit.tor - ].includes(protocolHost); - - let isCheckedTeddit = [ - ...tedditNormalRedirectsChecks, - ...tedditNormalCustomRedirects, - ...tedditTorRedirectsChecks, - ...tedditTorCustomRedirects, - ].includes(protocolHost); - - let isLibreddit = [ - ...redirects.libreddit.normal, - ...redirects.libreddit.tor - ].includes(protocolHost); - - let isCheckedLibreddit = [ - ...libredditNormalRedirectsChecks, - ...libredditNormalCustomRedirects, - ...libredditTorRedirectsChecks, - ...libredditTorCustomRedirects, - ].includes(protocolHost) - - if ( - alwaysUsePreferred && frontend == 'teddit' && - (isTeddit || isLibreddit) && !isCheckedTeddit - ) return switchInstance(url); - - if ( - alwaysUsePreferred && frontend == 'libreddit' && - (isTeddit || isLibreddit) && !isCheckedLibreddit - ) return switchInstance(url); - if (!targets.some(rx => rx.test(url.href))) return null; if ( - bypassWatchOnReddit && initiator && [...redirects.libreddit.normal, ...redirects.libreddit.tor, @@ -320,10 +300,7 @@ async function switchInstance(url) { ...r.tedditNormalCustomRedirects, ...r.tedditTorCustomRedirects, ] - if (!redditList.includes(protocolHost)) return null; - - console.log('redditFrontend', r.redditFrontend) let instancesList; if (r.redditFrontend == 'libreddit') { if (r.redditProtocol == 'normal') instancesList = [...r.libredditNormalRedirectsChecks, ...r.libredditNormalCustomRedirects]; @@ -346,7 +323,6 @@ async function switchInstance(url) { } ) }) - } async function initDefaults() { @@ -370,10 +346,6 @@ async function initDefaults() { disableReddit: false, redditProtocol: 'normal', redditFrontend: 'libreddit', - - bypassWatchOnReddit: true, - alwaysUsePreferred: false, - redditRedirects: redirects, libredditNormalRedirectsChecks: libredditNormalRedirectsChecks, @@ -387,18 +359,6 @@ async function initDefaults() { tedditTorRedirectsChecks: [...redirects.teddit.tor], tedditTorCustomRedirects: [], - - enableLibredditCustomSettings: false, - - redditTheme: 'system', - redditFrontPage: 'default', - redditLayout: 'card', - redditWide: false, - redditPostSort: 'hot', - redditCommentSort: 'confidence', - redditShowNsfw: false, - redditUseHls: false, - redditHideHlsNotification: false, }); }); }); @@ -411,6 +371,7 @@ async function init() { "disableReddit", "redditFrontend", "redditRedirects", + "redditProtocol", "libredditNormalRedirectsChecks", "libredditNormalCustomRedirects", @@ -421,32 +382,10 @@ async function init() { "tedditNormalCustomRedirects", "tedditTorRedirectsChecks", "tedditTorCustomRedirects", - - "redditProtocol", - "bypassWatchOnReddit", - - "alwaysUsePreferred", - - "enableLibredditCustomSettings", - - "redditTheme", - "redditFrontPage", - "redditLayout", - "redditWide", - "redditPostSort", - "redditCommentSort", - "redditShowNsfw", - "redditAutoplayVideos", - "redditUseHls", - "redditHideHlsNotification", ], r => { disableReddit = r.disableReddit; protocol = r.redditProtocol; frontend = r.redditFrontend; - - bypassWatchOnReddit = r.bypassWatchOnReddit; - alwaysUsePreferred = r.alwaysUsePreferred; - redirects = r.redditRedirects; libredditNormalRedirectsChecks = r.libredditNormalRedirectsChecks; @@ -468,15 +407,10 @@ async function init() { } export default { - targets, getRedirects, - getCustomRedirects, setTedditRedirects, setLibredditRedirects, - getDisableReddit, - setDisableReddit, - initLibredditCookies, initTedditCookies, diff --git a/src/assets/javascripts/helpers/search.js b/src/assets/javascripts/helpers/search.js index e6d230fe..730f3938 100644 --- a/src/assets/javascripts/helpers/search.js +++ b/src/assets/javascripts/helpers/search.js @@ -122,138 +122,120 @@ let whoogleTorCustomRedirects, whoogleI2pCustomRedirects; -let disable; // disableSearch -let frontend; // searchFrontend -let protocol; // searchProtocol - -let theme; -let applyThemeToSites; -function initSearxCookies() { - let themeValue; - if (theme == 'light') themeValue = 'logicodev'; - if (theme == 'dark') themeValue = 'logicodev-dark'; - if (applyThemeToSites && themeValue) { - let checkedInstances; - if (protocol == 'normal') checkedInstances = [...searxNormalRedirectsChecks, ...searxNormalCustomRedirects]; - else if (protocol == 'tor') checkedInstances = [...searxTorRedirectsChecks, ...searxTorCustomRedirects]; - else if (protocol == 'i2p') checkedInstances = [...searxI2pRedirectsChecks, ...searxI2pCustomRedirects]; - - for (const instanceUrl of checkedInstances) { - browser.cookies.set({ url: instanceUrl, name: "oscar-style", value: themeValue }) - browser.cookies.set({ url: instanceUrl, name: "theme", value: 'oscar' }) - } - } +let disable, // disableSearch + frontend, // searchFrontend + protocol; // searchProtocol + +function initSearxCookies(from) { + return new Promise(resolve => { + browser.storage.local.get( + [ + "searchProtocol", + "searxNormalRedirectsChecks", + "searxNormalCustomRedirects", + "searxTorRedirectsChecks", + "searxTorCustomRedirects", + "searxI2pRedirectsChecks", + "searxI2pCustomRedirects", + ], + r => { + let protocolHost = commonHelper.protocolHost(from); + if (![ + ...r.searxNormalRedirectsChecks, + ...r.searxNormalCustomRedirects, + ...r.searxTorRedirectsChecks, + ...r.searxTorCustomRedirects, + ...r.searxI2pRedirectsChecks, + ...r.searxI2pCustomRedirects, + ].includes(protocolHost)) resolve(); + + let checkedInstances; + if (protocol == 'normal') checkedInstances = [...r.searxNormalRedirectsChecks, ...r.searxNormalCustomRedirects]; + else if (protocol == 'tor') checkedInstances = [...r.searxTorRedirectsChecks, ...r.searxTorCustomRedirects]; + else if (protocol == 'i2p') checkedInstances = [...r.searxI2pRedirectsChecks, ...r.searxI2pCustomRedirects]; + for (const to of checkedInstances) { + commonHelper.copyCookie('searx', from, to, 'advanced_search'); + commonHelper.copyCookie('searx', from, to, 'autocomplete'); + commonHelper.copyCookie('searx', from, to, 'categories'); + commonHelper.copyCookie('searx', from, to, 'disabled_engines'); + commonHelper.copyCookie('searx', from, to, 'disabled_plugins'); + commonHelper.copyCookie('searx', from, to, 'doi_resolver'); + commonHelper.copyCookie('searx', from, to, 'enabled_engines'); + commonHelper.copyCookie('searx', from, to, 'enabled_plugins'); + commonHelper.copyCookie('searx', from, to, 'image_proxy'); + commonHelper.copyCookie('searx', from, to, 'language'); + commonHelper.copyCookie('searx', from, to, 'locale'); + commonHelper.copyCookie('searx', from, to, 'method'); + commonHelper.copyCookie('searx', from, to, 'oscar-style'); + commonHelper.copyCookie('searx', from, to, 'results_on_new_tab'); + commonHelper.copyCookie('searx', from, to, 'safesearch'); + commonHelper.copyCookie('searx', from, to, 'theme'); + commonHelper.copyCookie('searx', from, to, 'tokens'); + } + resolve(true); + } + ) + }) } -function initSearxngCookies() { - browser.storage.local.get( - [ - "searchProtocol", - "searchFrontend", - "searxngCustomSettings", - - "searxngNormalRedirectsChecks", - "searxngNormalCustomRedirects", - "searxngTorRedirectsChecks", - "searxngTorCustomRedirects", - "searxngI2pRedirectsChecks", - "searxngI2pCustomRedirects", - - "searxng_category_general", - "searxng_category_images", - "searxng_category_videos", - "searxng_category_news", - "searxng_category_map", - "searxng_category_music", - "searxng_category_it", - "searxng_category_science", - "searxng_category_files", - "searxng_category_social_media", - "searxng_language", - "searxng_autocomplete", - "searxng_safesearch", - "searxng_hostname_replace", - "searxng_oa_doi_rewrite", - "searxng_doi_resolver", - "searxng_tokens", - "searxng_locale", - "searxng_theme", - "searxng_simple_style", - "searxng_results_on_new_tab", - "searxng_infinite_scroll", - "searxng_search_on_category_select", - "searxng_vim_hotkeys", - "searxng_method", - "searxng_image_proxy", - "searxng_query_in_title", - "searxng_tracker_url_remover", - ], - r => { - if (!r.searxngCustomSettings || r.searchFrontend != 'searxng') return; - console.log('init SearXNG Cookies'); - let checkedInstances; - if (r.searchProtocol == 'normal') checkedInstances = [...r.searxngNormalRedirectsChecks, ...r.searxngNormalCustomRedirects]; - else if (r.searchProtocol == 'tor') checkedInstances = [...r.searxngTorRedirectsChecks, ...r.searxngTorCustomRedirects]; - else if (r.searchProtocol == 'i2p') checkedInstances = [...r.searxngI2pRedirectsChecks, ...r.searxngI2pCustomRedirects]; - - let categoryList = []; - if (r.searxng_category_general) categoryList.push('general') - if (r.searxng_category_images) categoryList.push('images') - if (r.searxng_category_videos) categoryList.push('videos') - if (r.searxng_category_news) categoryList.push('news') - if (r.searxng_category_map) categoryList.push('map') - if (r.searxng_category_music) categoryList.push('music') - if (r.searxng_category_it) categoryList.push('it') - if (r.searxng_category_science) categoryList.push('science') - if (r.searxng_category_files) categoryList.push('files') - if (r.searxng_category_social_media) categoryList.push('social media') - let categoryString = '"' + categoryList.join("\\054") + '"' // ""general\054images\054videos"" - - let enabledPluginsList = []; - if (r.searxng_hostname_replace) enabledPluginsList.push('searx.plugins.hostname_replace') - if (r.searxng_oa_doi_rewrite) enabledPluginsList.push('searx.plugins.oa_doi_rewrite') - if (r.searxng_vim_hotkeys) enabledPluginsList.push('searx.plugins.vim_hotkeys') - - let enabledPluginsString = '"' + enabledPluginsList.join("\\054") + '"' // ""searx.plugins.hostname_replace\054searx.plugins.oa_doi_rewrite"" - - - let disabledPluginsList = []; - if (!r.searxng_search_on_category_select) disabledPluginsList.push('searx.plugins.search_on_category_select') - if (!r.searxng_tracker_url_remover) disabledPluginsList.push('searx.plugins.tracker_url_remover') - let disabledPluginsString = '"' + disabledPluginsList.join("\\054") + '"' // ""searx.plugins.hostname_replace\054searx.plugins.oa_doi_rewrite"" - - for (const instanceUrl of checkedInstances) { - browser.cookies.set({ url: instanceUrl, name: "categories", value: categoryString }); - - browser.cookies.set({ url: instanceUrl, name: "language", value: r.searxng_language }); - browser.cookies.set({ url: instanceUrl, name: "autocomplete", value: r.searxng_autocomplete }); - browser.cookies.set({ url: instanceUrl, name: "safesearch", value: r.searxng_safesearch }); - - browser.cookies.set({ url: instanceUrl, name: "enabled_plugins", value: enabledPluginsString }); - browser.cookies.set({ url: instanceUrl, name: "disabled_plugins", value: disabledPluginsString }); - - browser.cookies.set({ url: instanceUrl, name: "doi_resolver", value: r.searxng_doi_resolver }); - browser.cookies.set({ url: instanceUrl, name: "tokens", value: r.searxng_tokens }); - browser.cookies.set({ url: instanceUrl, name: "locale", value: r.searxng_locale }); - browser.cookies.set({ url: instanceUrl, name: "theme", value: r.searxng_theme }); - browser.cookies.set({ url: instanceUrl, name: "simple_style", value: r.searxng_simple_style }); - browser.cookies.set({ url: instanceUrl, name: "results_on_new_tab", value: r.searxng_results_on_new_tab }); - browser.cookies.set({ url: instanceUrl, name: "infinite_scroll", value: r.searxng_infinite_scroll }); - browser.cookies.set({ url: instanceUrl, name: "method", value: r.searxng_method }); - browser.cookies.set({ url: instanceUrl, name: "image_proxy", value: r.searxng_image_proxy }); - browser.cookies.set({ url: instanceUrl, name: "query_in_title", value: r.searxng_query_in_title }); +function initSearxngCookies(from) { + return new Promise(resolve => { + browser.storage.local.get( + [ + "searchProtocol", + "searxngNormalRedirectsChecks", + "searxngNormalCustomRedirects", + "searxngTorRedirectsChecks", + "searxngTorCustomRedirects", + "searxngI2pRedirectsChecks", + "searxngI2pCustomRedirects", + ], + r => { + let protocolHost = commonHelper.protocolHost(from); + if (![ + ...r.searxngNormalRedirectsChecks, + ...r.searxngNormalCustomRedirects, + ...r.searxngTorRedirectsChecks, + ...r.searxngTorCustomRedirects, + ...r.searxngI2pRedirectsChecks, + ...r.searxngI2pCustomRedirects, + ].includes(protocolHost)) resolve(); + + let checkedInstances; + if (r.searchProtocol == 'normal') checkedInstances = [...r.searxngNormalRedirectsChecks, ...r.searxngNormalCustomRedirects]; + else if (r.searchProtocol == 'tor') checkedInstances = [...r.searxngTorRedirectsChecks, ...r.searxngTorCustomRedirects]; + else if (r.searchProtocol == 'i2p') checkedInstances = [...r.searxngI2pRedirectsChecks, ...r.searxngI2pCustomRedirects]; + for (const to of checkedInstances) { + commonHelper.copyCookie('searxng', from, to, 'autocomplete'); + commonHelper.copyCookie('searxng', from, to, 'categories'); + commonHelper.copyCookie('searxng', from, to, 'disabled_engines'); + commonHelper.copyCookie('searxng', from, to, 'disabled_plugins'); + commonHelper.copyCookie('searxng', from, to, 'doi_resolver'); + commonHelper.copyCookie('searxng', from, to, 'enabled_plugins'); + commonHelper.copyCookie('searxng', from, to, 'enabled_engines'); + commonHelper.copyCookie('searxng', from, to, 'image_proxy'); + commonHelper.copyCookie('searxng', from, to, 'infinite_scroll'); + commonHelper.copyCookie('searxng', from, to, 'language'); + commonHelper.copyCookie('searxng', from, to, 'locale'); + commonHelper.copyCookie('searxng', from, to, 'maintab'); + commonHelper.copyCookie('searxng', from, to, 'method'); + commonHelper.copyCookie('searxng', from, to, 'query_in_title'); + commonHelper.copyCookie('searxng', from, to, 'results_on_new_tab'); + commonHelper.copyCookie('searxng', from, to, 'safesearch'); + commonHelper.copyCookie('searxng', from, to, 'simple_style'); + commonHelper.copyCookie('searxng', from, to, 'theme'); + commonHelper.copyCookie('searxng', from, to, 'tokens'); + } + resolve(true); } - } - ) - - + ) + }) } function redirect(url) { if (disable) return; if (!targets.some(rx => rx.test(url.href))) return; if (url.searchParams.has('tbm')) return; - if (url.hostname.includes('google') && !url.searchParams.has('q') && url.pathname != '/') return; let randomInstance; let path; @@ -353,7 +335,6 @@ function switchInstance(url) { else if (protocol == 'i2p') instancesList = [...whoogleI2pRedirectsChecks, ...whoogleI2pCustomRedirects]; } - console.log("instancesList", instancesList); let index = instancesList.indexOf(protocolHost); if (index > -1) instancesList.splice(index, 1); @@ -391,6 +372,7 @@ async function initDefaults() { searchFrontend: 'searxng', searchRedirects: redirects, searxngCustomSettings: false, + searchProtocol: 'normal', whoogleNormalRedirectsChecks: whoogleNormalRedirectsChecks, whoogleNormalCustomRedirects: [], @@ -418,46 +400,6 @@ async function initDefaults() { searxngI2pRedirectsChecks: [...redirects.searxng.i2p], searxngI2pCustomRedirects: [], - - theme: 'DEFAULT', - applyThemeToSites: false, - - searchProtocol: 'normal', - - searxng_category_general: true, - searxng_category_images: false, - searxng_category_videos: false, - searxng_category_news: false, - searxng_category_map: false, - searxng_category_music: false, - searxng_category_it: false, - searxng_category_science: false, - searxng_category_files: false, - searxng_category_social_media: false, - - searxng_language: 'en', - searxng_autocomplete: 'google', - searxng_safesearch: '0', - - searxng_hostname_replace: false, - searxng_oa_doi_rewrite: false, - - searxng_doi_resolver: 'oadoi.org', - searxng_tokens: '', - - searxng_locale: 'en', - searxng_theme: 'simple', - searxng_simple_style: 'auto', - searxng_results_on_new_tab: '0', - searxng_infinite_scroll: '0', - - searxng_search_on_category_select: true, - searxng_vim_hotkeys: false, - - searxng_method: 'POST', - searxng_image_proxy: '1', - searxng_query_in_title: '', - searxng_tracker_url_remover: false, }) }) }) @@ -469,6 +411,7 @@ async function init() { "disableSearch", "searchFrontend", "searchRedirects", + "searchProtocol", "whoogleNormalRedirectsChecks", "whoogleNormalCustomRedirects", @@ -496,20 +439,11 @@ async function init() { "searxngI2pRedirectsChecks", "searxngI2pCustomRedirects", - - "theme", - "applyThemeToSites", - - "searchProtocol", ], r => { disable = r.disableSearch; protocol = r.searchProtocol; frontend = r.searchFrontend; - - theme = r.theme; - applyThemeToSites = r.applyThemeToSites; - redirects = r.searchRedirects; whoogleNormalRedirectsChecks = r.whoogleNormalRedirectsChecks; @@ -543,7 +477,6 @@ async function init() { } export default { - setSearxRedirects, setSearxngRedirects, setWhoogleRedirects, diff --git a/src/assets/javascripts/helpers/sendTargets.js b/src/assets/javascripts/helpers/sendTargets.js index f131f5c3..7a5db96e 100644 --- a/src/assets/javascripts/helpers/sendTargets.js +++ b/src/assets/javascripts/helpers/sendTargets.js @@ -72,12 +72,15 @@ function switchInstance(url) { } function redirect(url, type, initiator) { - if (disable) 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; - 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; let instancesList; if (protocol == 'normal') instancesList = [...sendNormalRedirectsChecks, ...sendNormalCustomRedirects]; @@ -147,9 +150,9 @@ export default { getRedirects, setRedirects, + redirect, switchInstance, - redirect, initDefaults, init, }; diff --git a/src/assets/javascripts/helpers/tiktok.js b/src/assets/javascripts/helpers/tiktok.js index 4945f9e3..07820c26 100644 --- a/src/assets/javascripts/helpers/tiktok.js +++ b/src/assets/javascripts/helpers/tiktok.js @@ -40,43 +40,51 @@ let proxiTokTorCustomRedirects = []; let disable; // disableTiktok let protocol; -let enableCustom; -let theme; -let api_legacy; - -function initProxiTokCookies() { - console.log('initProxiTokCookies') - if (enableCustom) { - let checkedInstances; - if (protocol == 'normal') checkedInstances = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects] - else if (protocol == 'tor') checkedInstances = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects] - - for (const instance of checkedInstances) { - browser.cookies.set({ url: instance, name: "theme", value: theme }) - browser.cookies.set({ url: instance, name: "api-legacy", value: api_legacy ? 'on' : 'off' }) - } - } +function initProxiTokCookies(from) { + return new Promise(resolve => { + browser.storage.local.get( + [ + "tiktokProtocol", + "proxiTokNormalRedirectsChecks", + "proxiTokNormalCustomRedirects", + "proxiTokTorRedirectsChecks", + "proxiTokTorCustomRedirects", + ], + r => { + let protocolHost = commonHelper.protocolHost(from); + if (![ + ...r.proxiTokNormalRedirectsChecks, + ...r.proxiTokNormalCustomRedirects, + ...r.proxiTokTorRedirectsChecks, + ...r.proxiTokTorCustomRedirects, + ].includes(protocolHost)) resolve(); + + 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) { + commonHelper.copyCookie('proxitok', from, to, 'theme'); + commonHelper.copyCookie('proxitok', from, to, 'api-legacy'); + } + resolve(true); + } + ) + }) } function redirect(url, type, initiator) { if (disable) return; - if (initiator && - ( - [ - ...redirects.proxiTok.normal, - ...proxiTokNormalCustomRedirects - ].includes(initiator.origin) || - targets.includes(initiator.host) - ) + if (type != "main_frame") return null; + if (initiator && ( + [...redirects.proxiTok.normal, ...proxiTokNormalCustomRedirects].includes(initiator.origin) || + targets.includes(initiator.host) + ) ) return; if (!targets.some(rx => rx.test(url.href))) return; // https://www.tiktok.com/@keysikaspol/video/7061265241887345946 // https://www.tiktok.com/@keysikaspol - - if (type != "main_frame") return null; - let instancesList; if (protocol == 'normal') instancesList = [...proxiTokNormalRedirectsChecks, ...proxiTokNormalCustomRedirects]; if (protocol == 'tor') instancesList = [...proxiTokTorRedirectsChecks, ...proxiTokTorCustomRedirects]; @@ -86,16 +94,27 @@ function redirect(url, type, initiator) { return `${randomInstance}${url.pathname}`; } -function reverse(url) { - let protocolHost = commonHelper.protocolHost(url); - if ( - ![...redirects.proxiTok.normal, - ...redirects.proxiTok.tor, - ...proxiTokNormalCustomRedirects, - ...proxiTokTorCustomRedirects].includes(protocolHost) - ) return; - - return `https://tiktok.com${url.pathname}${url.search}`; +async function reverse(url) { + browser.storage.local.get( + [ + "tiktokRedirects", + "proxiTokNormalCustomRedirects", + "proxiTokTorCustomRedirects", + ], + r => { + let protocolHost = commonHelper.protocolHost(url); + if ( + ![ + ...r.tiktokRedirects.proxiTok.normal, + ...r.tiktokRedirects.proxiTok.tor, + ...r.proxiTokNormalCustomRedirects, + ...r.proxiTokTorCustomRedirects + ].includes(protocolHost) + ) return; + + return `https://tiktok.com${url.pathname}${url.search}`; + } + ) } async function initDefaults() { @@ -114,12 +133,6 @@ async function initDefaults() { proxiTokTorRedirectsChecks: [...redirects.proxiTok.tor], proxiTokTorCustomRedirects: [], - - enableTiktokCustomSettings: false, - - proxiTokTheme: 'default', - proxiTokApiLegacy: 'off', - }); resolve(); }); @@ -138,11 +151,6 @@ async function init() { "proxiTokTorRedirectsChecks", "proxiTokTorCustomRedirects", - - "enableTiktokCustomSettings", - - "proxiTokTheme", - "proxiTokApiLegacy", ], r => { disable = r.disableTiktok; @@ -154,25 +162,19 @@ async function init() { proxiTokTorRedirectsChecks = r.proxiTokTorRedirectsChecks; proxiTokTorCustomRedirects = r.proxiTokTorCustomRedirects; - - enableCustom = r.enableTiktokCustomSettings; - - theme = r.proxiTokTheme; - api_legacy = r.proxiTokApiLegacy; } ) } export default { - getRedirects, setRedirects, + redirect, reverse, initProxiTokCookies, - redirect, initDefaults, init, }; diff --git a/src/assets/javascripts/helpers/translate/lingva-preferences.js b/src/assets/javascripts/helpers/translate/lingva-preferences.js index a9652903..eeee2415 100644 --- a/src/assets/javascripts/helpers/translate/lingva-preferences.js +++ b/src/assets/javascripts/helpers/translate/lingva-preferences.js @@ -3,12 +3,10 @@ window.browser = window.browser || window.chrome; browser.storage.local.get( [ "theme", - "applyThemeToSites", ], r => { - let applyThemeToSites = r.applyThemeToSites; let theme = r.theme; - if (applyThemeToSites && theme != "DEFAULT") localStorage.setItem("chakra-ui-color-mode", r.theme); + if (theme != "DEFAULT") localStorage.setItem("chakra-ui-color-mode", r.theme); } ) \ No newline at end of file diff --git a/src/assets/javascripts/helpers/translate/translate.js b/src/assets/javascripts/helpers/translate/translate.js index 7ce67433..3efaf544 100644 --- a/src/assets/javascripts/helpers/translate/translate.js +++ b/src/assets/javascripts/helpers/translate/translate.js @@ -38,11 +38,6 @@ function setSimplyTranslateRedirects(val) { browser.storage.local.set({ simplyTranslateTorRedirectsChecks }) } -let simplyTranslateNormalRedirectsChecks; -let simplyTranslateTorRedirectsChecks; -let simplyTranslateNormalCustomRedirects = []; -let simplyTranslateTorCustomRedirects = []; - function setLingvaRedirects(val) { redirects.lingva = val; browser.storage.local.set({ translateRedirects: redirects }) @@ -62,24 +57,26 @@ function setLingvaRedirects(val) { browser.storage.local.set({ lingvaTorRedirectsChecks }) } -let lingvaNormalRedirectsChecks; -let lingvaTorRedirectsChecks; -let lingvaNormalCustomRedirects = []; -let lingvaTorCustomRedirects = []; +let + simplyTranslateNormalRedirectsChecks, + simplyTranslateTorRedirectsChecks, + simplyTranslateNormalCustomRedirects, + simplyTranslateTorCustomRedirects, + lingvaNormalRedirectsChecks, + lingvaTorRedirectsChecks, + lingvaNormalCustomRedirects, + lingvaTorCustomRedirects; let disable, // translateDisable frontend, // translateFrontend - protocol, // translateProtocol - from, // translateFrom - to, // translateTo - simplyTranslateEngine; + protocol; // translateProtocol function isTranslateRedirects(url, type, frontend) { let protocolHost = commonHelper.protocolHost(url); - if (type !== "main_frame") return false; + if (type !== "main_frame") return; if (frontend == 'simplyTranslate') return [ @@ -124,40 +121,33 @@ function redirect(url) { if (disable) return; if (!targets.some(rx => rx.test(url.href))) return; - let params_arr = url.search.split('&'); - params_arr[0] = params_arr[0].substring(1); - let myMap = {}; - for (let i = 0; i < params_arr.length; i++) { - let pair = params_arr[i].split('='); - myMap[pair[0]] = pair[1]; - } if (frontend == 'simplyTranslate') { let instancesList; if (protocol == 'normal') instancesList = [...simplyTranslateNormalRedirectsChecks, ...simplyTranslateNormalCustomRedirects]; if (protocol == 'tor') instancesList = [...simplyTranslateTorRedirectsChecks, ...simplyTranslateTorCustomRedirects]; - if (instancesList.length === 0) return null; + if (instancesList.length === 0) return; let randomInstance = commonHelper.getRandomInstance(instancesList) - if (myMap.sl && myMap.tl && myMap.text) - return `${randomInstance}/${url.search}`; - else { - if (from != "DEFAULT") url.searchParams.append("sl", from); - if (to != "DEFAULT") url.searchParams.append("tl", to); - if (simplyTranslateEngine != "DEFAULT") url.searchParams.append("engine", simplyTranslateEngine); - return `${randomInstance}/${url.search}` - } + return `${randomInstance}/${url.search}`; } else if (frontend == 'lingva') { + let params_arr = url.search.split('&'); + params_arr[0] = params_arr[0].substring(1); + let myMap = {}; + for (let i = 0; i < params_arr.length; i++) { + let pair = params_arr[i].split('='); + myMap[pair[0]] = pair[1]; + } let instancesList; if (protocol == 'normal') instancesList = [...lingvaNormalRedirectsChecks, ...lingvaNormalCustomRedirects]; if (protocol == 'tor') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; - if (instancesList.length === 0) return null; + if (instancesList.length === 0) return; let randomInstance = commonHelper.getRandomInstance(instancesList) if (myMap.sl && myMap.tl && myMap.text) return `${randomInstance}/${myMap.sl}/${myMap.tl}/${myMap.text}`; - else - return randomInstance; + + return randomInstance; } } @@ -190,10 +180,8 @@ function switchInstance(url) { else if (protocol == 'tor') instancesList = [...lingvaTorRedirectsChecks, ...lingvaTorCustomRedirects]; } - console.log("instancesList", instancesList); let index = instancesList.indexOf(protocolHost); if (index > -1) instancesList.splice(index, 1); - if (instancesList.length === 0) return null; let randomInstance = commonHelper.getRandomInstance(instancesList); @@ -210,7 +198,7 @@ async function initDefaults() { lingvaNormalRedirectsChecks = [...redirects.lingva.normal] for (const instance of r.cloudflareList) { let i; - + i = simplyTranslateNormalRedirectsChecks.indexOf(instance); if (i > -1) simplyTranslateNormalRedirectsChecks.splice(i, 1); @@ -232,10 +220,6 @@ async function initDefaults() { lingvaNormalCustomRedirects: [], lingvaTorRedirectsChecks: [...redirects.lingva.tor], lingvaTorCustomRedirects: [], - - translateFrom: "auto", - translateTo: 'en', - simplyTranslateEngine: 'google', }) }) }) @@ -258,33 +242,24 @@ async function init() { "lingvaNormalCustomRedirects", "lingvaTorRedirectsChecks", "lingvaTorCustomRedirects", - - "translateFrom", - "translateTo", - "simplyTranslateEngine", ], - result => { - disable = result.translateDisable; - frontend = result.translateFrontend; - protocol = result.translateProtocol; - - from = result.translateFrom; - to = result.translateTo; - simplyTranslateEngine = result.simplyTranslateEngine; - - redirects = result.translateRedirects; + r => { + disable = r.translateDisable; + frontend = r.translateFrontend; + protocol = r.translateProtocol; + redirects = r.translateRedirects; - simplyTranslateNormalRedirectsChecks = result.simplyTranslateNormalRedirectsChecks; - simplyTranslateNormalCustomRedirects = result.simplyTranslateNormalCustomRedirects; + simplyTranslateNormalRedirectsChecks = r.simplyTranslateNormalRedirectsChecks; + simplyTranslateNormalCustomRedirects = r.simplyTranslateNormalCustomRedirects; - simplyTranslateTorRedirectsChecks = result.simplyTranslateTorRedirectsChecks; - simplyTranslateTorCustomRedirects = result.simplyTranslateTorCustomRedirects; + simplyTranslateTorRedirectsChecks = r.simplyTranslateTorRedirectsChecks; + simplyTranslateTorCustomRedirects = r.simplyTranslateTorCustomRedirects; - lingvaNormalRedirectsChecks = result.lingvaNormalRedirectsChecks; - lingvaNormalCustomRedirects = result.lingvaNormalCustomRedirects; + lingvaNormalRedirectsChecks = r.lingvaNormalRedirectsChecks; + lingvaNormalCustomRedirects = r.lingvaNormalCustomRedirects; - lingvaTorRedirectsChecks = result.lingvaTorRedirectsChecks; - lingvaTorCustomRedirects = result.lingvaTorCustomRedirects; + lingvaTorRedirectsChecks = r.lingvaTorRedirectsChecks; + lingvaTorCustomRedirects = r.lingvaTorCustomRedirects; }); } diff --git a/src/assets/javascripts/helpers/twitter.js b/src/assets/javascripts/helpers/twitter.js index 2a213a80..2af6a28d 100644 --- a/src/assets/javascripts/helpers/twitter.js +++ b/src/assets/javascripts/helpers/twitter.js @@ -42,56 +42,14 @@ let nitterTorRedirectsChecks; let nitterTorCustomRedirects = []; let disable; // disableTwitter -let enableCustomSettings; // enableTwitterCustomSettings - let protocol; // twitterProtocol -let bypassWatchOnTwitter; // bypassWatchOnTwitter -let alwaysUsePreferred; - -let - theme, - infiniteScroll, - stickyProfile, - bidiSupport, - hideTweetStats, - hideBanner, - hidePins, - hideReplies, - squareAvatars, - mp4Playback, - hlsPlayback, - proxyVideos, - muteVideos, - autoplayGifs; - function redirect(url, initiator) { - let protocolHost = commonHelper.protocolHost(url); - let isNitter = [ - ...redirects.nitter.normal, - ...redirects.nitter.tor - ].includes(protocolHost); - - let isCheckedNitter = [ - ...nitterNormalRedirectsChecks, - ...nitterNormalCustomRedirects, - ...nitterTorRedirectsChecks, - ...nitterTorCustomRedirects - ].includes(protocolHost); - - if (alwaysUsePreferred && isNitter && !isCheckedNitter) return switchInstance(url); - - if (disable) return null; - - if (!targets.some(rx => rx.test(url.href))) return null; - - if (url.pathname.split("/").includes("home")) { - console.log("twitter homepage"); - return null; - } + if (disable) return; + if (!targets.some(rx => rx.test(url.href))) return; + if (url.pathname.split("/").includes("home")) return; if ( - bypassWatchOnTwitter && initiator && [...redirects.nitter.normal, ...redirects.nitter.tor, @@ -177,10 +135,9 @@ function removeXFrameOptions(e) { } function isNitter(url, type) { - let protocolHost = commonHelper.protocolHost(url); - if (type !== "main_frame" && type !== "sub_frame") return false; + let protocolHost = commonHelper.protocolHost(url); return [ ...redirects.nitter.normal, ...redirects.nitter.tor, @@ -189,73 +146,70 @@ function isNitter(url, type) { ].includes(protocolHost); } -function initNitterCookies() { - if (enableCustomSettings) { - let checkedInstances; - if (protocol == 'normal') checkedInstances = [...nitterNormalRedirectsChecks, ...nitterNormalCustomRedirects] - else if (protocol == 'tor') checkedInstances = [...nitterTorRedirectsChecks, ...nitterTorCustomRedirects] - - for (const instanceUrl of checkedInstances) { - browser.cookies.set({ url: instanceUrl, name: "theme", value: theme }) - browser.cookies.set({ url: instanceUrl, name: "infiniteScroll", value: infiniteScroll ? 'on' : '' }) - browser.cookies.set({ url: instanceUrl, name: "stickyProfile", value: stickyProfile ? 'on' : '' }) - browser.cookies.set({ url: instanceUrl, name: "bidiSupport", value: bidiSupport ? 'on' : '', }) - browser.cookies.set({ url: instanceUrl, name: "hideTweetStats", value: hideTweetStats ? 'on' : '' }) - browser.cookies.set({ url: instanceUrl, name: "hideBanner", value: hideBanner ? 'on' : '' }) - browser.cookies.set({ url: instanceUrl, name: "hidePins", value: hidePins ? 'on' : '', }) - browser.cookies.set({ url: instanceUrl, name: "hideReplies", value: hideReplies ? 'on' : '' }) - browser.cookies.set({ url: instanceUrl, name: "squareAvatars", value: squareAvatars ? 'on' : '' }) - browser.cookies.set({ url: instanceUrl, name: "mp4Playback", value: mp4Playback ? 'on' : '' }) - browser.cookies.set({ url: instanceUrl, name: "hlsPlayback", value: hlsPlayback ? 'on' : '' }) - browser.cookies.set({ url: instanceUrl, name: "proxyVideos", value: proxyVideos ? 'on' : '' }) - browser.cookies.set({ url: instanceUrl, name: "muteVideos", value: muteVideos ? 'on' : '' }) - browser.cookies.set({ url: instanceUrl, name: "autoplayGifs", value: autoplayGifs ? 'on' : '' }) - } - } +async function initNitterCookies(from) { + return new Promise(resolve => { + browser.storage.local.get( + [ + "twitterProtocol", + "nitterNormalRedirectsChecks", + "nitterNormalCustomRedirects", + "nitterTorRedirectsChecks", + "nitterTorCustomRedirects", + ], + r => { + let protocolHost = commonHelper.protocolHost(from); + if (![ + ...r.nitterNormalRedirectsChecks, + ...r.nitterTorRedirectsChecks, + ...r.nitterNormalCustomRedirects, + ...r.nitterTorCustomRedirects, + ].includes(protocolHost)) resolve(); + + let checkedInstances; + if (r.twitterProtocol == 'normal') checkedInstances = [...r.nitterNormalRedirectsChecks, ...r.nitterNormalCustomRedirects] + else if (r.twitterProtocol == 'tor') checkedInstances = [...r.nitterTorRedirectsChecks, ...r.nitterTorCustomRedirects] + + for (const to of checkedInstances) { + commonHelper.copyCookie('nitter', from, to, 'theme'); + commonHelper.copyCookie('nitter', from, to, 'infiniteScroll'); + commonHelper.copyCookie('nitter', from, to, 'stickyProfile'); + commonHelper.copyCookie('nitter', from, to, 'bidiSupport'); + commonHelper.copyCookie('nitter', from, to, 'hideTweetStats'); + commonHelper.copyCookie('nitter', from, to, 'hideBanner'); + commonHelper.copyCookie('nitter', from, to, 'hidePins'); + commonHelper.copyCookie('nitter', from, to, 'hideReplies'); + commonHelper.copyCookie('nitter', from, to, 'squareAvatars'); + commonHelper.copyCookie('nitter', from, to, 'mp4Playback'); + commonHelper.copyCookie('nitter', from, to, 'hlsPlayback'); + commonHelper.copyCookie('nitter', from, to, 'proxyVideos'); + commonHelper.copyCookie('nitter', from, to, 'muteVideos'); + commonHelper.copyCookie('nitter', from, to, 'autoplayGifs'); + } + resolve(true); + }) + }) } - -async function initDefaults() { - await fetch('/instances/data.json').then(response => response.text()).then(async data => { +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', async r => { + 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); } - await browser.storage.local.set({ + browser.storage.local.set({ disableTwitter: false, - - enableTwitterCustomSettings: false, - twitterRedirects: redirects, - bypassWatchOnTwitter: true, + twitterProtocol: "normal", nitterNormalRedirectsChecks: nitterNormalRedirectsChecks, nitterNormalCustomRedirects: [], nitterTorRedirectsChecks: [...redirects.nitter.tor], nitterTorCustomRedirects: [], - - twitterProtocol: "normal", - alwaysUsePreferred: false, - - nitterTheme: 'Auto', - nitterInfiniteScroll: false, - nitterStickyProfile: true, - nitterBidiSupport: false, - nitterHideTweetStats: false, - nitterHideBanner: false, - nitterHidePins: false, - nitterHideReplies: false, - nitterSquareAvatars: false, - nitterMp4Playback: true, - nitterHlsPlayback: false, - nitterProxyVideos: true, - nitterMuteVideos: false, - nitterAutoplayGifs: true, }) }) }) @@ -265,46 +219,18 @@ async function init() { browser.storage.local.get( [ "disableTwitter", - - "enableTwitterCustomSettings", - "twitterRedirects", - "bypassWatchOnTwitter", + "twitterProtocol", "nitterNormalRedirectsChecks", "nitterNormalCustomRedirects", "nitterTorRedirectsChecks", "nitterTorCustomRedirects", - - "twitterProtocol", - "alwaysUsePreferred", - - "nitterTheme", - "nitterInfiniteScroll", - "nitterStickyProfile", - "nitterBidiSupport", - "nitterHideTweetStats", - "nitterHideBanner", - "nitterHidePins", - "nitterHideReplies", - "nitterSquareAvatars", - "nitterMp4Playback", - "nitterHlsPlayback", - "nitterProxyVideos", - "nitterMuteVideos", - "nitterAutoplayGifs", ], r => { disable = r.disableTwitter; - enableCustomSettings = r.enableTwitterCustomSettings; - protocol = r.twitterProtocol; - - bypassWatchOnTwitter = r.bypassWatchOnTwitter; - - alwaysUsePreferred = r.alwaysUsePreferred; - redirects = r.twitterRedirects; nitterNormalRedirectsChecks = r.nitterNormalRedirectsChecks; @@ -312,21 +238,6 @@ async function init() { nitterTorRedirectsChecks = r.nitterTorRedirectsChecks; nitterTorCustomRedirects = r.nitterTorCustomRedirects; - - theme = r.nitterTheme; - infiniteScroll = r.nitterInfiniteScroll; - stickyProfile = r.nitterStickyProfile; - bidiSupport = r.nitterBidiSupport; - hideTweetStats = r.nitterHideTweetStats; - hideBanner = r.nitterHideBanner; - hidePins = r.nitterHidePins; - hideReplies = r.nitterHideReplies; - squareAvatars = r.nitterSquareAvatars; - mp4Playback = r.nitterMp4Playback; - hlsPlayback = r.nitterHlsPlayback; - proxyVideos = r.nitterProxyVideos; - muteVideos = r.nitterMuteVideos; - autoplayGifs = r.nitterAutoplayGifs; } ); } diff --git a/src/assets/javascripts/helpers/wikipedia.js b/src/assets/javascripts/helpers/wikipedia.js index b11eb1d2..17c1ece1 100644 --- a/src/assets/javascripts/helpers/wikipedia.js +++ b/src/assets/javascripts/helpers/wikipedia.js @@ -12,7 +12,6 @@ let redirects = { } }; const getRedirects = () => redirects; - function setRedirects(val) { redirects.wikiless = val; browser.storage.local.set({ wikipediaRedirects: redirects }) @@ -39,34 +38,52 @@ function setRedirects(val) { browser.storage.local.set({ wikilessI2pRedirectsChecks }) } -let disable; // disableWikipedia -let protocol; // wikipediaProtocol - -let wikilessNormalRedirectsChecks; -let wikilessTorRedirectsChecks; -let wikilessI2pRedirectsChecks; -let wikilessNormalCustomRedirects = []; -let wikilessTorCustomRedirects = []; -let wikilessI2pCustomRedirects = []; - +let + disable, // disableWikipedia + protocol; // wikipediaProtocol -let theme; -let applyThemeToSites; +let + wikilessNormalRedirectsChecks, + wikilessTorRedirectsChecks, + wikilessI2pRedirectsChecks, + wikilessNormalCustomRedirects, + wikilessTorCustomRedirects, + wikilessI2pCustomRedirects; function initWikilessCookies() { - let themeValue; - if (theme == 'light') themeValue = 'white'; - if (theme == 'dark') themeValue = 'dark'; - if (applyThemeToSites && themeValue) { - - let checkedInstances; - if (protocol == 'normal') checkedInstances = [...wikilessNormalRedirectsChecks, ...wikilessNormalCustomRedirects] - else if (protocol == 'tor') checkedInstances = [...wikilessTorRedirectsChecks, ...wikilessTorCustomRedirects] - else if (protocol == 'i2p') checkedInstances = [...wikilessI2pRedirectsChecks, ...wikilessI2pCustomRedirects] - - for (const instanceUrl of checkedInstances) - browser.cookies.set({ url: instanceUrl, name: "theme", value: themeValue }) - } + return new Promise(resolve => { + browser.storage.local.get( + [ + "wikipediaProtocol", + "wikilessNormalRedirectsChecks", + "wikilessNormalCustomRedirects", + "wikilessTorRedirectsChecks", + "wikilessTorCustomRedirects", + "wikilessI2pRedirectsChecks", + "wikilessI2pCustomRedirects", + ], + r => { + let protocolHost = commonHelper.protocolHost(from); + if (![ + ...r.wikilessNormalRedirectsChecks, + ...r.wikilessNormalCustomRedirects, + ...r.wikilessTorRedirectsChecks, + ...r.wikilessTorCustomRedirects, + ...r.wikilessI2pRedirectsChecks, + ...r.wikilessI2pCustomRedirects, + ].includes(protocolHost)) resolve(); + + let checkedInstances; + if (r.wikipediaProtocol == 'normal') checkedInstances = [...r.wikilessNormalRedirectsChecks, ...r.wikilessNormalCustomRedirects] + else if (r.wikipediaProtocol == 'tor') checkedInstances = [...r.wikilessTorRedirectsChecks, ...r.wikilessTorCustomRedirects] + else if (r.wikipediaProtocol == 'i2p') checkedInstances = [...r.wikilessI2pRedirectsChecks, ...r.wikilessI2pCustomRedirects] + + for (const to of checkedInstances) + commonHelper.copyCookie('wikiless', from, to, 'theme'); + resolve(true); + } + ) + }) } function redirect(url) { @@ -104,7 +121,6 @@ function redirect(url) { link += (i == 0 ? "?" : "&") + GETArguments[i][0] + "=" + GETArguments[i][1]; return link; - } function switchInstance(url) { @@ -126,7 +142,6 @@ function switchInstance(url) { else if (protocol == 'tor') instancesList = [...wikilessTorCustomRedirects, ...wikilessTorRedirectsChecks]; else if (protocol == 'i2p') instancesList = [...wikilessI2pCustomRedirects, ...wikilessI2pRedirectsChecks]; - console.log("instancesList", instancesList); let index = instancesList.indexOf(protocolHost); if (index > -1) instancesList.splice(index, 1); @@ -136,7 +151,6 @@ function switchInstance(url) { return `${randomInstance}${url.pathname}${url.search}`; } - async function initDefaults() { fetch('/instances/data.json').then(response => response.text()).then(async data => { let dataJson = JSON.parse(data); @@ -144,24 +158,19 @@ async function initDefaults() { browser.storage.local.get('cloudflareList', async r => { wikilessNormalRedirectsChecks = [...redirects.wikiless.normal]; for (const instance of r.cloudflareList) { - let i; - - i = wikilessNormalRedirectsChecks.indexOf(instance); + 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: [], - wikipediaProtocol: "normal", - - theme: 'DEFAULT', - applyThemeToSites: false, }) }) }) @@ -172,20 +181,17 @@ async function init() { [ "disableWikipedia", "wikipediaRedirects", + "wikipediaProtocol", + "wikilessNormalRedirectsChecks", "wikilessTorRedirectsChecks", "wikilessI2pRedirectsChecks", "wikilessNormalCustomRedirects", "wikilessTorCustomRedirects", "wikilessI2pCustomRedirects", - "wikipediaProtocol", - - "theme", - "applyThemeToSites", - - ], r => { + ], + r => { disable = r.disableWikipedia; - protocol = r.wikipediaProtocol; redirects = r.wikipediaRedirects; @@ -197,9 +203,6 @@ async function init() { wikilessI2pRedirectsChecks = r.wikilessI2pRedirectsChecks; wikilessI2pCustomRedirects = r.wikilessI2pCustomRedirects; - - theme = r.theme; - applyThemeToSites = r.applyThemeToSites; } ); } diff --git a/src/assets/javascripts/helpers/youtube/get_piped_settings.js b/src/assets/javascripts/helpers/youtube/get_piped_settings.js new file mode 100644 index 00000000..12e92baa --- /dev/null +++ b/src/assets/javascripts/helpers/youtube/get_piped_settings.js @@ -0,0 +1,22 @@ +window.browser = window.browser || window.chrome; + +browser.storage.local.set( + { + 'piped_bufferGoal': localStorage.getItem("bufferGoal"), + 'piped_comments': localStorage.getItem("comments"), + 'piped_disableLBRY': localStorage.getItem("disableLBRY"), + 'piped_enabledCodecs': localStorage.getItem("enabledCodecs"), + 'piped_homepage': localStorage.getItem("homepage"), + 'piped_listen': localStorage.getItem("listen"), + 'piped_minimizeDescription': localStorage.getItem("minimizeDescription"), + 'piped_playerAutoPlay': localStorage.getItem("playerAutoPlay"), + 'piped_proxyLBRY': localStorage.getItem("proxyLBRY"), + 'piped_quality': localStorage.getItem("quality"), + 'piped_region': localStorage.getItem("region"), + 'piped_selectedSkip': localStorage.getItem("selectedSkip"), + 'piped_sponsorblock': localStorage.getItem("sponsorblock"), + 'piped_theme': localStorage.getItem("theme"), + 'piped_volume': localStorage.getItem("volume"), + 'piped_watchHistory': localStorage.getItem("watchHistory"), + } +) diff --git a/src/assets/javascripts/helpers/youtube/invidious.js b/src/assets/javascripts/helpers/youtube/invidious.js deleted file mode 100644 index a8e215a2..00000000 --- a/src/assets/javascripts/helpers/youtube/invidious.js +++ /dev/null @@ -1,133 +0,0 @@ -"use strict"; - -window.browser = window.browser || window.chrome; - -async function initDefaults() { - await browser.storage.local.set({ - youtubeListen: false, - youtubeVolume: 100, - youtubeAutoplay: false, - invidiousAlwaysProxy: false, - invidiousQuality: 'hd720', - invidiousPlayerStyle: 'invidious', - invidiousVideoLoop: false, - invidiousContinueAutoplay: true, - invidiousContinue: false, - invidiousSpeed: '1.0', - invidiousQualityDash: 'auto', - invidiousComments: ['youtube', ''], - invidiousCaptions: ['', '', ''], - invidiousRelatedVideos: true, - invidiousAnnotations: false, - invidiousExtendDesc: false, - invidiousVrMode: true, - invidiousSavePlayerPos: false, - invidiousRegion: 'US', - invidiousDarkMode: '', - invidiousThinMode: false, - invidiousDefaultHome: 'Popular', - invidiousFeedMenuList: ['Popular', 'Trending'] - }) -} - -async function initInvidiousCookies() { - console.log('initInvidiousCookies() starting') - await browser.storage.local.get( - [ - "disableYoutube", - "youtubeFrontend", - "youtubeProtocol", - - "enableYoutubeCustomSettings", - - "invidiousNormalRedirectsChecks", - "invidiousNormalCustomRedirects", - "invidiousTorRedirectsChecks", - "invidiousTorCustomRedirects", - - "youtubeListen", - "youtubeVolume", - "youtubeAutoplay", - "invidiousQuality", - "invidiousAlwaysProxy", - "invidiousQuality", - "invidiousPlayerStyle", - "invidiousVideoLoop", - "invidiousContinueAutoplay", - "invidiousContinue", - "invidiousSpeed", - "invidiousQualityDash", - "invidiousComments", - "invidiousCaptions", - "invidiousRelatedVideos", - "invidiousAnnotations", - "invidiousExtendDesc", - "invidiousVrMode", - "invidiousSavePlayerPos", - "invidiousRegion", - "invidiousDarkMode", - "invidiousThinMode", - "invidiousDefaultHome", - "invidiousFeedMenuList", - ], - r => { - if (!r.disableYoutube && r.youtubeFrontend == 'invidious' && r.enableYoutubeCustomSettings) { - let checkedInstances; - if (r.youtubeProtocol == 'normal') - checkedInstances = [...r.invidiousNormalRedirectsChecks, ...r.invidiousNormalCustomRedirects] - else if (r.youtubeProtocol == 'tor') - checkedInstances = [...r.invidiousTorRedirectsChecks, ...r.invidiousTorCustomRedirects] - - for (const instanceUrl of checkedInstances) - browser.cookies.get( - { url: instanceUrl, name: "PREFS" }, - cookie => { - let prefs = {}; - if (cookie) { - prefs = JSON.parse(decodeURIComponent(cookie.value)); - browser.cookies.remove({ url: instanceUrl, name: "PREFS" }); - } - - prefs.local = r.invidiousAlwaysProxy; - prefs.video_loop = r.invidiousVideoLoop; - prefs.continue_autoplay = r.invidiousContinueAutoplay; - prefs.continue = r.invidiousContinue; - prefs.listen = r.youtubeListen; - prefs.speed = parseFloat(r.invidiousSpeed); - prefs.quality = r.invidiousQuality; - prefs.quality_dash = r.invidiousQualityDash; - - prefs.comments = r.invidiousComments; - prefs.captions = r.invidiousCaptions; - - prefs.related_videos = r.invidiousRelatedVideos; - prefs.annotations = r.invidiousAnnotations - prefs.extend_desc = r.invidiousExtendDesc; - prefs.vr_mode = r.invidiousVrMode; - prefs.save_player_pos = r.invidiousSavePlayerPos; - - prefs.volume = parseInt(r.youtubeVolume); - prefs.player_style = r.invidiousPlayerStyle; - prefs.autoplay = r.youtubeAutoplay; - - prefs.region = r.invidiousRegion; - prefs.dark_mode = r.invidiousDarkMode; - prefs.thin_mode = r.invidiousThinMode; - prefs.default_home = r.invidiousDefaultHome; - prefs.feed_menu = r.invidiousFeedMenuList; - - browser.cookies.set({ - url: instanceUrl, name: "PREFS", - value: encodeURIComponent(JSON.stringify(prefs)) - }) - } - ) - } - } - ) -} - -export default { - initDefaults, - initInvidiousCookies, -} \ No newline at end of file diff --git a/src/assets/javascripts/helpers/youtube/piped-preferences.js b/src/assets/javascripts/helpers/youtube/piped-preferences.js index c6a5707a..8a1f2d0d 100644 --- a/src/assets/javascripts/helpers/youtube/piped-preferences.js +++ b/src/assets/javascripts/helpers/youtube/piped-preferences.js @@ -2,40 +2,39 @@ window.browser = window.browser || window.chrome; browser.storage.local.get( [ - "youtubeVolume", - "youtubeAutoplay", - "youtubeListen", - - "pipedBufferGoal", - "pipedComments", - "pipedDisableLBRY", - "pipedEnabledCodecs", - "pipedHomepage", - "pipedMinimizeDescription", - "pipedProxyLBRY", - "pipedQuality", - "pipedRegion", - "pipedSelectedSkip", - "pipedSponsorblock", - "pipedDdlTheme", - "pipedWatchHistory", + "piped_bufferGoal", + "piped_comments", + "piped_disableLBRY", + "piped_enabledCodecs", + "piped_homepage", + "piped_listen", + "piped_minimizeDescription", + "piped_playerAutoPlay", + "piped_proxyLBRY", + "piped_quality", + "piped_region", + "piped_selectedSkip", + "piped_sponsorblock", + "piped_theme", + "piped_volume", + "piped_watchHistory", ], r => { - localStorage.setItem("bufferGoal", r.pipedBufferGoal.toString()); - localStorage.setItem("comments", r.pipedComments); - localStorage.setItem("disableLBRY", r.pipedDisableLBRY); - localStorage.setItem("enabledCodecs", r.pipedEnabledCodecs); - localStorage.setItem("homepage", r.pipedHomepage); - localStorage.setItem("listen", r.youtubeListen); - localStorage.setItem("minimizeDescription", r.pipedMinimizeDescription); - localStorage.setItem("playerAutoPlay", r.youtubeAutoplay); - localStorage.setItem("proxyLBRY", r.pipedProxyLBRY); - localStorage.setItem("quality", r.pipedQuality); - localStorage.setItem("region", r.pipedRegion); - localStorage.setItem("selectedSkip", r.pipedSelectedSkip); - localStorage.setItem("sponsorblock", r.pipedSponsorblock); - localStorage.setItem("theme", r.pipedDdlTheme); - localStorage.setItem("volume", r.youtubeVolume / 100); - localStorage.setItem("watchHistory", r.pipedWatchHistory); + localStorage.setItem("bufferGoal", r.piped_bufferGoal); + localStorage.setItem("comments", r.piped_comments); + localStorage.setItem("disableLBRY", r.piped_disableLBRY); + localStorage.setItem("enabledCodecs", r.piped_enabledCodecs); + localStorage.setItem("homepage", r.piped_homepage); + localStorage.setItem("listen", r.piped_listen); + localStorage.setItem("minimizeDescription", r.piped_minimizeDescription); + localStorage.setItem("playerAutoPlay", r.piped_playerAutoPlay); + localStorage.setItem("proxyLBRY", r.piped_proxyLBRY); + localStorage.setItem("quality", r.piped_quality); + localStorage.setItem("region", r.piped_region); + localStorage.setItem("selectedSkip", r.piped_selectedSkip); + localStorage.setItem("sponsorblock", r.piped_sponsorblock); + localStorage.setItem("theme", r.piped_theme); + localStorage.setItem("volume", r.piped_volume); + localStorage.setItem("watchHistory", r.piped_watchHistory); } ) \ No newline at end of file diff --git a/src/assets/javascripts/helpers/youtube/piped.js b/src/assets/javascripts/helpers/youtube/piped.js index 10bec749..e1f7b0df 100644 --- a/src/assets/javascripts/helpers/youtube/piped.js +++ b/src/assets/javascripts/helpers/youtube/piped.js @@ -1,27 +1,76 @@ +"use strict"; +window.browser = window.browser || window.chrome; + +import commonHelper from '../common.js' + async function initDefaults() { - await browser.storage.local.set({ - youtubeVolume: 100, - youtubeAutoplay: false, - youtubeListen: false, + await browser.storage.local.set({ + youtubeVolume: 100, + youtubeAutoplay: false, + youtubeListen: false, - pipedBufferGoal: 300, - pipedComments: true, - pipedDisableLBRY: false, - pipedEnabledCodecs: ["av1", "vp9", "avc"], - pipedHomepage: "trending", - pipedMinimizeDescription: false, - pipedProxyLBRY: false, - pipedQuality: 0, - pipedRegion: "US", - pipedSelectedSkip: ["sponsor", "interaction", "selfpromo", "music_offtopic"], - pipedSponsorblock: true, - pipedDdlTheme: 'auto', - pipedWatchHistory: false, - }) + pipedBufferGoal: 300, + pipedComments: true, + pipedDisableLBRY: false, + pipedEnabledCodecs: ["av1", "vp9", "avc"], + pipedHomepage: "trending", + pipedMinimizeDescription: false, + pipedProxyLBRY: false, + pipedQuality: 0, + pipedRegion: "US", + pipedSelectedSkip: ["sponsor", "interaction", "selfpromo", "music_offtopic"], + pipedSponsorblock: true, + pipedDdlTheme: 'auto', + pipedWatchHistory: false, + }) } -function initPipedLocalStorage(tabId) { - if (!disable && frontend == 'piped' && enableCustomSettings) +async function copyPipedLocalStorage(url, tabId) { + return new Promise(resolve => { + browser.storage.local.get( + [ + "pipedNormalRedirectsChecks", + "pipedNormalCustomRedirects", + "pipedTorRedirectsChecks", + "pipedTorCustomRedirects", + ], + r => { + let protocolHost = commonHelper.protocolHost(url); + if (![ + ...r.pipedNormalCustomRedirects, + ...r.pipedNormalRedirectsChecks, + ...r.pipedTorRedirectsChecks, + ...r.pipedTorCustomRedirects, + ].includes(protocolHost)) resolve(); + browser.tabs.executeScript( + tabId, + { + file: "/assets/javascripts/helpers/youtube/get_piped_settings.js", + runAt: "document_start" + } + ); + resolve(true); + }) + }) +} + +async function initPipedLocalStorage(url, tabId) { + browser.storage.local.get( + [ + "youtubeProtocol", + "pipedNormalRedirectsChecks", + "pipedNormalCustomRedirects", + "pipedTorRedirectsChecks", + "pipedTorCustomRedirects", + ], + r => { + let protocolHost = commonHelper.protocolHost(url); + if (![ + ...r.pipedNormalRedirectsChecks, + ...r.pipedTorRedirectsChecks, + ...r.pipedNormalCustomRedirects, + ...r.pipedTorCustomRedirects, + ].includes(protocolHost)) return; browser.tabs.executeScript( tabId, { @@ -29,9 +78,12 @@ function initPipedLocalStorage(tabId) { runAt: "document_start" } ); - } + return true; + }) +} export default { - initDefaults, - initPipedLocalStorage + initDefaults, + initPipedLocalStorage, + copyPipedLocalStorage, } \ No newline at end of file diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js index 7c4ad8c8..cf6f9074 100644 --- a/src/assets/javascripts/helpers/youtube/youtube.js +++ b/src/assets/javascripts/helpers/youtube/youtube.js @@ -3,7 +3,6 @@ window.browser = window.browser || window.chrome; import commonHelper from '../common.js' -import invidious from './invidious.js' import piped from './piped.js'; import pipedMaterial from './pipedMaterial.js'; @@ -62,63 +61,27 @@ let protocol, OnlyEmbeddedVideo, frontend, - youtubeEmbedFrontend, - bypassWatchOnYoutube, - alwaysUsePreferred; + youtubeEmbedFrontend; function redirect(url, details, initiator) { if (disable) return null; let protocolHost = commonHelper.protocolHost(url); - let isInvidious = [ - ...redirects.invidious.normal, - ...redirects.invidious.tor - ].includes(protocolHost); - - let isCheckedInvidious = [ - ...invidiousNormalRedirectsChecks, - ...invidiousNormalCustomRedirects, - ...invidiousTorRedirectsChecks, - ...invidiousTorCustomRedirects, - ].includes(protocolHost); - - let isPiped = [ - ...redirects.piped.normal, - ...redirects.piped.tor - ].includes(protocolHost); - - let isCheckedPiped = [ - ...pipedNormalRedirectsChecks, - ...pipedNormalCustomRedirects, - ...pipedTorRedirectsChecks, - ...pipedTorCustomRedirects, - ].includes(protocolHost) - - if ( - alwaysUsePreferred && frontend == 'invidious' && - (isInvidious || isPiped) && !isCheckedInvidious - ) return switchInstance(url); - - if ( - alwaysUsePreferred && frontend == 'piped' && - (isInvidious || isPiped) && !isCheckedPiped - ) return switchInstance(url); - if (!targets.some(rx => rx.test(url.href))) return null; if ( - bypassWatchOnYoutube && initiator && ( - [...redirects.invidious.normal, - ...invidiousNormalCustomRedirects, - ...redirects.invidious.tor, - ...invidiousTorCustomRedirects, - - ...redirects.piped.normal, - ...redirects.piped.tor, - ...pipedNormalCustomRedirects, - ...pipedTorCustomRedirects + [ + ...redirects.invidious.normal, + ...invidiousNormalCustomRedirects, + ...redirects.invidious.tor, + ...invidiousTorCustomRedirects, + + ...redirects.piped.normal, + ...redirects.piped.tor, + ...pipedNormalCustomRedirects, + ...pipedTorCustomRedirects ].includes(initiator.origin) ) ) return 'BYPASSTAB'; @@ -192,19 +155,32 @@ function redirect(url, details, initiator) { } function reverse(url) { - let protocolHost = commonHelper.protocolHost(url); - if (![ - ...redirects.invidious.normal, - ...redirects.invidious.tor, - ...invidiousNormalCustomRedirects, - ...invidiousTorCustomRedirects, - ...redirects.piped.normal, - ...redirects.piped.tor, - ...pipedNormalCustomRedirects, - ...pipedTorCustomRedirects, - ].includes(protocolHost)) return; + browser.storage.local.get( + [ + "youtubeRedirects", + "invidiousNormalCustomRedirects", + "invidiousTorCustomRedirects", + "pipedNormalCustomRedirects", + "pipedTorCustomRedirects", + ], + r => { + let protocolHost = commonHelper.protocolHost(url); + if (![ + ...r.youtubeRedirects.invidious.normal, + ...r.youtubeRedirects.invidious.tor, + + ...r.youtubeRedirects.piped.normal, + ...r.youtubeRedirects.piped.tor, + + ...r.invidiousNormalCustomRedirects, + ...r.invidiousTorCustomRedirects, - return `https://youtube.com${url.pathname}${url.search}`; + ...r.pipedNormalCustomRedirects, + ...r.pipedTorCustomRedirects, + ].includes(protocolHost)) return; + + return `https://youtube.com${url.pathname}${url.search}`; + }) } function switchInstance(url) { @@ -351,13 +327,10 @@ async function initDefaults() { pipedMaterialTorRedirectsChecks: [...redirects.pipedMaterial.tor], pipedMaterialTorCustomRedirects: [], - alwaysUsePreferred: false, youtubeEmbedFrontend: 'invidious', youtubeProtocol: 'normal', - bypassWatchOnYoutube: true, }) - await invidious.initDefaults(); await piped.initDefaults(); await pipedMaterial.initDefaults(); resolve(); @@ -394,10 +367,8 @@ async function init() { "pipedMaterialTorRedirectsChecks", "pipedMaterialTorCustomRedirects", - "alwaysUsePreferred", "youtubeEmbedFrontend", "youtubeProtocol", - "bypassWatchOnYoutube", ], r => { redirects = r.youtubeRedirects; @@ -426,18 +397,46 @@ async function init() { youtubeEmbedFrontend = r.youtubeEmbedFrontend; OnlyEmbeddedVideo = r.OnlyEmbeddedVideo; - alwaysUsePreferred = r.alwaysUsePreferred; - bypassWatchOnYoutube = r.bypassWatchOnYoutube; resolve(); }); }) } +async function initInvidiousCookies(from) { + return new Promise(resolve => { + browser.storage.local.get( + [ + "youtubeProtocol", + "invidiousNormalRedirectsChecks", + "invidiousNormalCustomRedirects", + "invidiousTorRedirectsChecks", + "invidiousTorCustomRedirects", + ], + r => { + let protocolHost = commonHelper.protocolHost(from); + if (![ + ...r.invidiousNormalRedirectsChecks, + ...r.invidiousTorRedirectsChecks, + ...r.invidiousNormalCustomRedirects, + ...r.invidiousTorCustomRedirects, + ].includes(protocolHost)) resolve(); + 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) + commonHelper.copyCookie('invidious', from, to, 'PREFS'); + resolve(true); + } + ) + } + ) +} + let initPipedLocalStorage = piped.initPipedLocalStorage, initPipedMaterialLocalStorage = pipedMaterial.initPipedMaterialLocalStorage, - initInvidiousCookies = invidious.initInvidiousCookies; + copyPipedLocalStorage = piped.copyPipedLocalStorage; export default { initPipedLocalStorage, @@ -452,6 +451,8 @@ export default { isPipedorInvidious, + copyPipedLocalStorage, + initDefaults, init, diff --git a/src/assets/javascripts/helpers/youtubeMusic.js b/src/assets/javascripts/helpers/youtubeMusic.js index 0b06bfa3..98549147 100644 --- a/src/assets/javascripts/helpers/youtubeMusic.js +++ b/src/assets/javascripts/helpers/youtubeMusic.js @@ -28,7 +28,6 @@ function isYoutubeMusic(url, initiator) { } function redirect(url, type) { - // Video // https://music.youtube.com/watch?v=_PkGiKBW-DA&list=RDAMVM_PkGiKBW-DA // https://beatbump.ml/listen?id=_PkGiKBW-DA&list=RDAMVM_PkGiKBW-DA @@ -69,7 +68,6 @@ function redirect(url, type) { async function initDefaults() { await browser.storage.local.set({ disableYoutubeMusic: true, - youtubeMusicRedirects: redirects, beatbumpNormalRedirectsChecks: [...redirects.beatbump.normal], |