diff options
author | ManeraKai <manerakai@protonmail.com> | 2022-05-03 16:45:14 +0300 |
---|---|---|
committer | ManeraKai <manerakai@protonmail.com> | 2022-05-03 16:45:29 +0300 |
commit | a78d6cdd04d491fcc773a4530d7887eee2ba4a59 (patch) | |
tree | 4784be6bdd47a0da9af535961a90e26e02393ae3 /src/assets/javascripts/helpers | |
parent | Update README.md (diff) | |
download | libredirect-a78d6cdd04d491fcc773a4530d7887eee2ba4a59.zip |
Restructuring and simplifying code #229
Diffstat (limited to 'src/assets/javascripts/helpers')
-rw-r--r-- | src/assets/javascripts/helpers/common.js | 115 | ||||
-rw-r--r-- | src/assets/javascripts/helpers/imgur.js | 208 | ||||
-rw-r--r-- | src/assets/javascripts/helpers/instagram.js | 170 | ||||
-rw-r--r-- | src/assets/javascripts/helpers/reddit.js | 1 | ||||
-rw-r--r-- | src/assets/javascripts/helpers/youtube/invidious.js | 133 | ||||
-rw-r--r-- | src/assets/javascripts/helpers/youtube/options.js | 223 | ||||
-rw-r--r-- | src/assets/javascripts/helpers/youtube/piped-preferences.js | 52 | ||||
-rw-r--r-- | src/assets/javascripts/helpers/youtube/piped.js | 37 | ||||
-rw-r--r-- | src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js | 35 | ||||
-rw-r--r-- | src/assets/javascripts/helpers/youtube/pipedMaterial.js | 31 | ||||
-rw-r--r-- | src/assets/javascripts/helpers/youtube/youtube.js | 520 |
11 files changed, 555 insertions, 970 deletions
diff --git a/src/assets/javascripts/helpers/common.js b/src/assets/javascripts/helpers/common.js index 93707dcc..b2a91b20 100644 --- a/src/assets/javascripts/helpers/common.js +++ b/src/assets/javascripts/helpers/common.js @@ -50,7 +50,19 @@ async function updateInstances() { const instances = JSON.parse(request.responseText); - youtubeHelper.setInvidiousRedirects(instances.invidious); + brwoser.storage.local.get( + [ + 'youtubeRedirects' + ], + r => + brwoser.storage.local.set({ + youtubeRedirects: { + 'invidious': instances.invidious, + 'piped': r.youtubeRedirects.piped, + 'pipedMaterial': r.youtubeRedirects.pipedMaterial + }, + }) + ) twitterHelper.setRedirects(instances.nitter); @@ -80,10 +92,6 @@ async function updateInstances() { return false; } -function isFirefox() { - return typeof InstallTrigger !== "undefined"; -} - function protocolHost(url) { if (url.username && url.password) return `${url.protocol}//${url.username}:${url.password}@${url.host}`; return `${url.protocol}//${url.host}`; @@ -94,18 +102,17 @@ async function processDefaultCustomInstances( protocol, nameHelper, document, - getNameRedirectsChecks, - setNameRedirectsChecks, - getNameCustomRedirects, - setNameCustomRedirects, - instancesLatency, ) { - instancesLatency = instancesLatency ?? []; + function camelCase(str) { + return str.charAt(0).toUpperCase() + str.slice(1); + } + let latencyKey = `${name}Latency`; + let instancesLatency; + await browser.storage.local.get(latencyKey, r => instancesLatency = r[latencyKey] ?? []); let nameProtocolElement = document.getElementById(name).getElementsByClassName(protocol)[0]; let nameCustomInstances = []; let nameCheckListElement = nameProtocolElement.getElementsByClassName('checklist')[0]; - let nameDefaultRedirects; await initCloudflareList(); @@ -122,59 +129,103 @@ async function processDefaultCustomInstances( nameProtocolElement.getElementsByClassName('toogle-all')[0].checked = isTrue; } - nameDefaultRedirects = getNameRedirectsChecks(); + let nameDefaultRedirects; + + let redirectsChecks = `${name}${camelCase(protocol)}RedirectsChecks`; + let customRedirects = `${name}${camelCase(protocol)}CustomRedirects`; + + async function setRedirectsChecks(val) { + await browser.storage.local.set({ [redirectsChecks]: val }); + } + + async function setCustom(val) { + await browser.storage.local.set({ [customRedirects]: val }); + } + + async function getFromStorage() { + return new Promise(async resolve => { + nameHelper.init().then(() => + browser.storage.local.get( + [ + redirectsChecks, + customRedirects, + ], + r => { + nameDefaultRedirects = r[redirectsChecks]; + nameCustomInstances = r[customRedirects]; + resolve(); + } + ) + ) + }) + } + await getFromStorage(); + nameCheckListElement.innerHTML = [ - `<div><x data-localise="__MSG_toggleAll__">Toggle All</x><input type="checkbox" class="toogle-all" /></div>`, - ...nameHelper.getRedirects()[name][protocol].map(x => `<div><x>${x}${cloudflareList.includes(x) ? ' <span style="color:red;">cloudflare</span>' : ''} ${x in instancesLatency ? '<span style="color:' + (instancesLatency[x] <= 1000 ? "green" : instancesLatency[x] <= 2000 ? "orange" : "red") + ';">' + (instancesLatency[x] == 5000 ? '5000ms+' : instancesLatency[x] + 'ms') + '</span>' : ''}</x > <input type="checkbox" class="${x}" /></div > `), + `<div> + <x data-localise="__MSG_toggleAll__">Toggle All</x> + <input type="checkbox" class="toogle-all"/> + </div>`, + ...nameHelper.getRedirects()[name][protocol].map( + x => { + let cloudflare = cloudflareList.includes(x) ? ' <span style="color:red;">cloudflare</span>' : ''; + + let latencyColor = (instancesLatency[x] <= 1000 ? "green" : instancesLatency[x] <= 2000 ? "orange" : "red"); + let latencyLimit = (instancesLatency[x] == 5000 ? '5000ms+' : instancesLatency[x] + 'ms') + let latency = x in instancesLatency ? '<span style="color:' + latencyColor + ';">' + latencyLimit + '</span>' : ''; + + return `<div><x>${x}${cloudflare} ${latency}</x><input type="checkbox" class="${x}"/></div>`; + } + ), ].join('\n<hr>\n'); localise.localisePage(); calcNameCheckBoxes(); - nameProtocolElement.getElementsByClassName('toogle-all')[0].addEventListener("change", event => { + nameProtocolElement.getElementsByClassName('toogle-all')[0].addEventListener("change", async event => { if (event.target.checked) nameDefaultRedirects = [...nameHelper.getRedirects()[name][protocol]]; else nameDefaultRedirects = []; - setNameRedirectsChecks(nameDefaultRedirects); + + await setRedirectsChecks(nameDefaultRedirects); calcNameCheckBoxes(); }); for (let element of nameCheckListElement.getElementsByTagName('input')) { if (element.className != 'toogle-all') - nameProtocolElement.getElementsByClassName(element.className)[0].addEventListener("change", event => { + nameProtocolElement.getElementsByClassName(element.className)[0].addEventListener("change", async event => { if (event.target.checked) nameDefaultRedirects.push(element.className) else { let index = nameDefaultRedirects.indexOf(element.className); if (index > -1) nameDefaultRedirects.splice(index, 1); } - setNameRedirectsChecks(nameDefaultRedirects); + await setRedirectsChecks(nameDefaultRedirects); calcNameCheckBoxes(); }); } - nameCustomInstances = getNameCustomRedirects(); function calcNameCustomInstances() { nameProtocolElement.getElementsByClassName('custom-checklist')[0].innerHTML = nameCustomInstances.map( - x => `<div> ${x} <button class="add clear-${x}"> - <svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" - fill="currentColor"> - <path d="M0 0h24v24H0V0z" fill="none" /> - <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z" /> - </svg> -</button> - </div > - <hr>` + x => `<div> + ${x} + <button class="add clear-${x}"> + <svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" fill="currentColor"> + <path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z" /> + </svg> + </button> + </div> + <hr>` ).join('\n'); for (const item of nameCustomInstances) { nameProtocolElement.getElementsByClassName(`clear-${item}`)[0].addEventListener("click", () => { let index = nameCustomInstances.indexOf(item); if (index > -1) nameCustomInstances.splice(index, 1); - setNameCustomRedirects(nameCustomInstances); + setCustom(nameCustomInstances); calcNameCustomInstances(); }); } @@ -188,13 +239,14 @@ async function processDefaultCustomInstances( if (nameCustomInstanceInput.validity.valid && !nameHelper.getRedirects()[name][protocol].includes(protocolHostVar)) { if (!nameCustomInstances.includes(protocolHostVar)) { nameCustomInstances.push(protocolHostVar) - setNameCustomRedirects(nameCustomInstances); + setCustom(nameCustomInstances); nameCustomInstanceInput.value = ''; } calcNameCustomInstances(); } }) } + function isRtl() { return ["ar", "iw", "ku", "fa", "ur"].includes(browser.i18n.getUILanguage()) } @@ -243,7 +295,6 @@ export default { getRandomInstance, updateInstances, protocolHost, - isFirefox, processDefaultCustomInstances, isRtl, testLatency, diff --git a/src/assets/javascripts/helpers/imgur.js b/src/assets/javascripts/helpers/imgur.js index a376e404..7a2daa43 100644 --- a/src/assets/javascripts/helpers/imgur.js +++ b/src/assets/javascripts/helpers/imgur.js @@ -12,16 +12,6 @@ let redirects = { } } const getRedirects = () => redirects; -const getCustomRedirects = function () { - return { - "rimgo": { - "normal": [...rimgoNormalRedirectsChecks, ...rimgoNormalCustomRedirects], - "tor": [...rimgoTorRedirectsChecks, ...rimgoTorCustomRedirects], - "i2p": [...rimgoI2pRedirectsChecks, ...rimgoI2pCustomRedirects] - }, - }; -}; - function setRedirects(val) { redirects.rimgo = val; browser.storage.local.set({ imgurRedirects: redirects }) @@ -31,103 +21,50 @@ function setRedirects(val) { var index = rimgoNormalRedirectsChecks.indexOf(item); if (index !== -1) rimgoNormalRedirectsChecks.splice(index, 1); } - setRimgoNormalRedirectsChecks(rimgoNormalRedirectsChecks); + browser.storage.local.set({rimgoNormalRedirectsChecks}); for (const item of rimgoTorRedirectsChecks) if (!redirects.rimgo.tor.includes(item)) { var index = rimgoTorRedirectsChecks.indexOf(item); if (index !== -1) rimgoTorRedirectsChecks.splice(index, 1); } - setRimgoTorRedirectsChecks(rimgoTorRedirectsChecks); + browser.storage.local.set({rimgoTorRedirectsChecks}); for (const item of rimgoI2pRedirectsChecks) if (!redirects.rimgo.i2p.includes(item)) { var index = rimgoI2pRedirectsChecks.indexOf(item); if (index !== -1) rimgoI2pRedirectsChecks.splice(index, 1); } - setRimgoI2pRedirectsChecks(rimgoI2pRedirectsChecks); -} + browser.storage.local.set({rimgoI2pRedirectsChecks}); -let disable; -const getDisable = () => disable; -function setDisable(val) { - disable = val; - browser.storage.local.set({ disableImgur: disable }) } +let disable; let protocol; -const getProtocol = () => protocol; -function setProtocol(val) { - protocol = val; - browser.storage.local.set({ imgurProtocol: val }) - console.log("imgurProtocol: ", val) -} let rimgoNormalRedirectsChecks; -const getRimgoNormalRedirectsChecks = () => rimgoNormalRedirectsChecks; -function setRimgoNormalRedirectsChecks(val) { - rimgoNormalRedirectsChecks = val; - browser.storage.local.set({ rimgoNormalRedirectsChecks }) - console.log("rimgoNormalRedirectsChecks: ", val) -} - let rimgoTorRedirectsChecks; -const getRimgoTorRedirectsChecks = () => rimgoTorRedirectsChecks; -function setRimgoTorRedirectsChecks(val) { - rimgoTorRedirectsChecks = val; - browser.storage.local.set({ rimgoTorRedirectsChecks }) - console.log("rimgoTorRedirectsChecks: ", val) -} - let rimgoI2pRedirectsChecks; -const getRimgoI2pRedirectsChecks = () => rimgoI2pRedirectsChecks; -function setRimgoI2pRedirectsChecks(val) { - rimgoI2pRedirectsChecks = val; - browser.storage.local.set({ rimgoI2pRedirectsChecks }) - console.log("rimgoI2pRedirectsChecks: ", val) -} - let rimgoNormalCustomRedirects = []; -const getRimgoNormalCustomRedirects = () => rimgoNormalCustomRedirects; -function setRimgoNormalCustomRedirects(val) { - rimgoNormalCustomRedirects = val; - browser.storage.local.set({ rimgoNormalCustomRedirects }) - console.log("rimgoNormalCustomRedirects: ", val) -} - let rimgoTorCustomRedirects = []; -const getRimgoTorCustomRedirects = () => rimgoTorCustomRedirects; -function setRimgoTorCustomRedirects(val) { - rimgoTorCustomRedirects = val; - browser.storage.local.set({ rimgoTorCustomRedirects }) - console.log("rimgoTorCustomRedirects: ", val) -} - let rimgoI2pCustomRedirects = []; -const getRimgoI2pCustomRedirects = () => rimgoI2pCustomRedirects; -function setRimgoI2pCustomRedirects(val) { - rimgoI2pCustomRedirects = val; - browser.storage.local.set({ rimgoI2pCustomRedirects }) - console.log("rimgoI2pCustomRedirects: ", val) -} -function isImgur(url, initiator) { - if (disable) return false; - if (url.pathname == "/") return false; - if ( - initiator && - ([...redirects.rimgo.normal, ...rimgoNormalCustomRedirects].includes(initiator.origin) || targets.test(initiator.host)) - ) return false; - return targets.test(url.href); -} - -function redirect(url, type) { +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 (![ "main_frame", "sub_frame", @@ -191,79 +128,72 @@ function switchInstance(url) { return `${randomInstance}${url.pathname}${url.search}`; } +async function initDefaults() { + return new Promise(async resolve => { + fetch('/instances/data.json').then(response => response.text()).then(async data => { + let dataJson = JSON.parse(data); + redirects.rimgo = dataJson.rimgo + await browser.storage.local.set({ + disableImgur: false, + imgurProtocol: 'normal', + imgurRedirects: { + 'rimgo': redirects.rimgo, + }, + + rimgoNormalRedirectsChecks: [...redirects.rimgo.normal], + rimgoNormalCustomRedirects: [], + + rimgoTorRedirectsChecks: [...redirects.rimgo.tor], + rimgoTorCustomRedirects: [], + + rimgoI2pRedirectsChecks: [...redirects.rimgo.i2p], + rimgoI2pCustomRedirects: [], + }); + resolve(); + }); + }) +} + async function init() { return new Promise(resolve => { - fetch('/instances/data.json') - .then(response => response.text()) - .then(text => { - let data = JSON.parse(text); - browser.storage.local.get( - [ - "disableImgur", - "imgurRedirects", - - "rimgoNormalRedirectsChecks", - "rimgoNormalCustomRedirects", - "rimgoTorRedirectsChecks", - "rimgoTorCustomRedirects", - "rimgoI2pRedirectsChecks", - "rimgoI2pCustomRedirects", - - "imgurProtocol", - ], - r => { - disable = r.disableImgur ?? false; - - protocol = r.imgurProtocol ?? "normal"; - - redirects.rimgo = data.rimgo; - if (r.imgurRedirects) redirects = r.imgurRedirects; - - rimgoNormalRedirectsChecks = r.rimgoNormalRedirectsChecks ?? [...redirects.rimgo.normal]; - rimgoNormalCustomRedirects = r.rimgoNormalCustomRedirects ?? []; - - rimgoTorRedirectsChecks = r.rimgoTorRedirectsChecks ?? [...redirects.rimgo.tor]; - rimgoTorCustomRedirects = r.rimgoTorCustomRedirects ?? []; - - rimgoI2pRedirectsChecks = r.rimgoI2pRedirectsChecks ?? [...redirects.rimgo.i2p]; - rimgoI2pCustomRedirects = r.rimgoI2pCustomRedirects ?? []; - - resolve(); - } - ) - }); + browser.storage.local.get( + [ + "disableImgur", + "imgurRedirects", + "imgurProtocol", + + "rimgoNormalRedirectsChecks", + "rimgoNormalCustomRedirects", + "rimgoTorRedirectsChecks", + "rimgoTorCustomRedirects", + "rimgoI2pRedirectsChecks", + "rimgoI2pCustomRedirects", + ], + r => { + disable = r.disableImgur; + protocol = r.imgurProtocol; + redirects = r.imgurRedirects; + + rimgoNormalRedirectsChecks = r.rimgoNormalRedirectsChecks; + rimgoNormalCustomRedirects = r.rimgoNormalCustomRedirects; + rimgoTorRedirectsChecks = r.rimgoTorRedirectsChecks; + rimgoTorCustomRedirects = r.rimgoTorCustomRedirects; + rimgoI2pRedirectsChecks = r.rimgoI2pRedirectsChecks; + rimgoI2pCustomRedirects = r.rimgoI2pCustomRedirects; + + resolve(); + } + ) }); } export default { getRedirects, - getCustomRedirects, setRedirects, - getDisable, - setDisable, - - - getProtocol, - setProtocol, - - getRimgoNormalRedirectsChecks, - setRimgoNormalRedirectsChecks, - getRimgoTorRedirectsChecks, - setRimgoTorRedirectsChecks, - getRimgoI2pRedirectsChecks, - setRimgoI2pRedirectsChecks, - - getRimgoNormalCustomRedirects, - setRimgoNormalCustomRedirects, - getRimgoTorCustomRedirects, - setRimgoTorCustomRedirects, - getRimgoI2pCustomRedirects, - setRimgoI2pCustomRedirects, - redirect, reverse, - isImgur, init, + initDefaults, switchInstance, }; diff --git a/src/assets/javascripts/helpers/instagram.js b/src/assets/javascripts/helpers/instagram.js index f007fac3..26414070 100644 --- a/src/assets/javascripts/helpers/instagram.js +++ b/src/assets/javascripts/helpers/instagram.js @@ -12,13 +12,6 @@ let redirects = { } }; const getRedirects = () => redirects; -const getCustomRedirects = function () { - return { - "bibliogram": { - "normal": [...bibliogramNormalRedirectsChecks, ...bibliogramNormalCustomRedirects] - }, - }; -}; function setRedirects(val) { redirects.bibliogram = val; browser.storage.local.set({ instagramRedirects: redirects }) @@ -28,40 +21,13 @@ function setRedirects(val) { var index = bibliogramNormalRedirectsChecks.indexOf(item); if (index !== -1) bibliogramNormalRedirectsChecks.splice(index, 1); } - setBibliogramNormalRedirectsChecks(bibliogramNormalRedirectsChecks); + browser.storage.local.set({ bibliogramNormalRedirectsChecks }); } let bibliogramNormalRedirectsChecks; -const getBibliogramNormalRedirectsChecks = () => bibliogramNormalRedirectsChecks; -function setBibliogramNormalRedirectsChecks(val) { - bibliogramNormalRedirectsChecks = val; - browser.storage.local.set({ bibliogramNormalRedirectsChecks }) - console.log("bibliogramNormalRedirectsChecks: ", val) -} - let bibliogramTorRedirectsChecks; -const getBibliogramTorRedirectsChecks = () => bibliogramTorRedirectsChecks; -function setBibliogramTorRedirectsChecks(val) { - bibliogramTorRedirectsChecks = val; - browser.storage.local.set({ bibliogramTorRedirectsChecks }) - console.log("bibliogramTorRedirectsChecks: ", val) -} - let bibliogramNormalCustomRedirects = []; -const getBibliogramNormalCustomRedirects = () => bibliogramNormalCustomRedirects; -function setBibliogramNormalCustomRedirects(val) { - bibliogramNormalCustomRedirects = val; - browser.storage.local.set({ bibliogramNormalCustomRedirects }) - console.log("bibliogramNormalCustomRedirects: ", val) -} - let bibliogramTorCustomRedirects = []; -const getBibliogramTorCustomRedirects = () => bibliogramTorCustomRedirects; -function setBibliogramTorCustomRedirects(val) { - bibliogramTorCustomRedirects = val; - browser.storage.local.set({ bibliogramTorCustomRedirects }) - console.log("bibliogramTorCustomRedirects: ", val) -} const reservedPaths = [ "u", @@ -81,20 +47,8 @@ const bypassPaths = [ /\/(accounts\/|embeds?.js)/ ]; -let disable; -const getDisable = () => disable; -function setDisable(val) { - disable = val; - browser.storage.local.set({ disableInstagram: disable }) -} - -let protocol; -const getProtocol = () => protocol; -function setProtocol(val) { - protocol = val; - browser.storage.local.set({ nitterProtocol: val }) - console.log("nitterProtocol: ", val) -} +let disable; //disableInstagram +let protocol; //instagramProtocol function redirect(url, type, initiator) { if (disable) return; @@ -189,10 +143,7 @@ let applyThemeToSites; function initBibliogramCookies(url) { let protocolHost = commonHelper.protocolHost(url); browser.cookies.get( - { - url: protocolHost, - name: "settings" - }, + { url: protocolHost, name: "settings" }, cookie => { if (!cookie || !instancesCookies.includes(protocolHost)) { console.log(`initing cookie for ${protocolHost}`); @@ -211,89 +162,94 @@ function initBibliogramCookies(url) { browser.storage.local.set({ instancesCookies }) } } - } else { - console.log("cookie url", protocolHost); - console.log("instancesCookies", instancesCookies); - }; + } }) } -async function init() { - return new Promise((resolve) => { - fetch('/instances/data.json').then(response => response.text()).then(data => { - let dataJson = JSON.parse(data); - browser.storage.local.get( - [ - "disableInstagram", - "instagramRedirects", - "theme", - "applyThemeToSites", +async function initDefaults() { + return new Promise(async resolve => { + fetch('/instances/data.json').then(response => response.text()).then(async data => { + let dataJson = JSON.parse(data); + redirects.bibliogram = dataJson.bibliogram; + await browser.storage.local.set({ + disableInstagram: false, + instagramRedirects: { + 'bibliogram': redirects.bibliogram + }, + + theme: 'DEFAULT', + applyThemeToSites: false, + + instancesCookies: [], + + bibliogramNormalRedirectsChecks: [...redirects.bibliogram.normal], + bibliogramTorRedirectsChecks: [], + + bibliogramNormalCustomRedirects: [...redirects.bibliogram.tor], + bibliogramTorCustomRedirects: [], + instagramProtocol: "normal", + }) + resolve(); + } + ) + }) +} - "instancesCookies", +async function init() { + return new Promise(resolve => { + browser.storage.local.get( + [ + "disableInstagram", + "instagramRedirects", - "bibliogramNormalRedirectsChecks", - "bibliogramTorRedirectsChecks", + "theme", + "applyThemeToSites", - "bibliogramNormalCustomRedirects", - "bibliogramTorCustomRedirects", - "instagramProtocol" - ], - r => { - disable = r.disableInstagram ?? false; + "instancesCookies", - redirects.bibliogram = dataJson.bibliogram; + "bibliogramNormalRedirectsChecks", + "bibliogramTorRedirectsChecks", - if (r.instagramRedirects) redirects = r.instagramRedirects + "bibliogramNormalCustomRedirects", + "bibliogramTorCustomRedirects", + "instagramProtocol" + ], + r => { + disable = r.disableInstagram; + if (r.instagramRedirects) redirects = r.instagramRedirects - theme = r.theme ?? 'DEFAULT'; - applyThemeToSites = r.applyThemeToSites ?? false; + theme = r.theme; + applyThemeToSites = r.applyThemeToSites; - instancesCookies = r.instancesCookies ?? []; + instancesCookies = r.instancesCookies; - bibliogramNormalRedirectsChecks = r.bibliogramNormalRedirectsChecks ?? [...redirects.bibliogram.normal]; - bibliogramNormalCustomRedirects = r.bibliogramNormalCustomRedirects ?? []; + bibliogramNormalRedirectsChecks = r.bibliogramNormalRedirectsChecks; + bibliogramNormalCustomRedirects = r.bibliogramNormalCustomRedirects; - bibliogramTorRedirectsChecks = r.bibliogramTorRedirectsChecks ?? [...redirects.bibliogram.tor]; - bibliogramTorCustomRedirects = r.bibliogramTorCustomRedirects ?? []; + bibliogramTorRedirectsChecks = r.bibliogramTorRedirectsChecks; + bibliogramTorCustomRedirects = r.bibliogramTorCustomRedirects; - protocol = r.instagramProtocol ?? "normal"; + protocol = r.instagramProtocol; - resolve(); - } - ) - }) + resolve(); + } + ) }) } export default { getRedirects, - getCustomRedirects, setRedirects, - getDisable, - setDisable, - reverse, - getProtocol, - setProtocol, - isBibliogram, initBibliogramCookies, - getBibliogramNormalRedirectsChecks, - setBibliogramNormalRedirectsChecks, - getBibliogramTorRedirectsChecks, - setBibliogramTorRedirectsChecks, - - getBibliogramNormalCustomRedirects, - setBibliogramNormalCustomRedirects, - getBibliogramTorCustomRedirects, - setBibliogramTorCustomRedirects, - redirect, init, + initDefaults, switchInstance, }; diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js index cae152e9..ebb13ffa 100644 --- a/src/assets/javascripts/helpers/reddit.js +++ b/src/assets/javascripts/helpers/reddit.js @@ -393,6 +393,7 @@ function switchInstance(url) { } async function initDefaults() { + console.log('init redditDefault') return new Promise(async resolve => { fetch('/instances/data.json').then(response => response.text()).then(async data => { let dataJson = JSON.parse(data); diff --git a/src/assets/javascripts/helpers/youtube/invidious.js b/src/assets/javascripts/helpers/youtube/invidious.js new file mode 100644 index 00000000..a8e215a2 --- /dev/null +++ b/src/assets/javascripts/helpers/youtube/invidious.js @@ -0,0 +1,133 @@ +"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/options.js b/src/assets/javascripts/helpers/youtube/options.js deleted file mode 100644 index a5aa413d..00000000 --- a/src/assets/javascripts/helpers/youtube/options.js +++ /dev/null @@ -1,223 +0,0 @@ -"use strict"; - -window.browser = window.browser || window.chrome; - -export let youtubeListen; -export const getYoutubeListen = () => youtubeListen; - -export let volume; -export const getVolume = () => volume; -export function setVolume(val) { - volume = val; - browser.storage.local.set({ youtubeVolume: volume }) - console.log("youtubeVolume: ", volume) -} - -export let youtubeAutoplay; -export const getAutoplay = () => youtubeAutoplay; -export function setAutoplay(val) { - youtubeAutoplay = val; - browser.storage.local.set({ youtubeAutoplay }) - console.log("youtubeAutoplay: ", youtubeAutoplay) -} - -export let invidiousQuality; -export const getInvidiousQuality = () => invidiousQuality; - -export let invidiousAlwaysProxy; -export const getInvidiousAlwaysProxy = () => invidiousAlwaysProxy; - -export let invidiousPlayerStyle; -export const getInvidiousPlayerStyle = () => invidiousPlayerStyle; - -export let invidiousVideoLoop; -export const getInvidiousVideoLoop = () => invidiousVideoLoop; - -export let invidiousContinueAutoplay; -export const getInvidiousContinueAutoplay = () => invidiousContinueAutoplay; - -export let invidiousContinue; -export const getInvidiousContinue = () => invidiousContinue; - -export let invidiousSpeed; -export const getInvidiousSpeed = () => invidiousSpeed; - -export let invidiousQualityDash; -export const getInvidiousQualityDash = () => invidiousQualityDash; - -export let invidiousComments; -export const getInvidiousComments = () => invidiousComments; - -export let invidiousCaptions; -export const getInvidiousCaptions = () => invidiousCaptions; - -export let invidiousRelatedVideos; -export const getInvidiousRelatedVideos = () => invidiousRelatedVideos; - -export let invidiousAnnotations; -export const getInvidiousAnnotations = () => invidiousAnnotations; - -export let invidiousExtendDesc; -export const getInvidiousExtendDesc = () => invidiousExtendDesc; - -export let invidiousVrMode; -export const getInvidiousVrMode = () => invidiousVrMode; - -export let invidiousSavePlayerPos; -export const getInvidiousSavePlayerPos = () => invidiousSavePlayerPos; - -export let invidiousRegion; -export const getInvidiousRegion = () => invidiousRegion; - -export let invidiousDarkMode; -export const getInvidiousDarkMode = () => invidiousDarkMode; - -export let invidiousThinMode; -export const getInvidiousThinMode = () => invidiousThinMode; - -export let invidiousDefaultHome; -export const getInvidiousDefaultHome = () => invidiousDefaultHome; - -export let invidiousFeedMenuList; -export const getInvidiousFeedMenuList = () => invidiousFeedMenuList; - -export let pipedBufferGoal; -export const getPipedBufferGoal = () => pipedBufferGoal; - -export let pipedComments; -export const getPipedComments = () => pipedComments; - -export let pipedDisableLBRY; -export const getPipedDisableLBRY = () => pipedDisableLBRY; - -export let pipedEnabledCodecs; -export const getPipedEnabledCodecs = () => pipedEnabledCodecs; - -export let pipedHomepage; -export const getPipedHomepage = () => pipedHomepage; - -export let pipedMinimizeDescription; -export const getPipedMinimizeDescription = () => pipedMinimizeDescription; - -export let pipedProxyLBRY; -export const getPipedProxyLBRY = () => pipedProxyLBRY; - -export let pipedQuality; -export const getPipedQuality = () => pipedQuality; - -export let pipedRegion; -export const getPipedRegion = () => pipedRegion; - -export let pipedSelectedSkip; -export const getPipedSelectedSkip = () => pipedSelectedSkip; - -export let pipedSponsorblock; -export const getPipedSponsorblock = () => pipedSponsorblock; - -export let pipedDdlTheme; -export const getPipedDdlTheme = () => pipedDdlTheme; - -export let pipedWatchHistory; -export const getPipedWatchHistory = () => pipedWatchHistory; - -export let pipedMaterialSkipToLastPoint; -export const getPipedMaterialSkipToLastPoint = () => pipedMaterialSkipToLastPoint; - -export async function initOptions() { - return new Promise( - resolve => { - browser.storage.local.get( - [ - "youtubeListen", - "youtubeVolume", - "youtubeAutoplay", - - "invidiousQuality", - "invidiousAlwaysProxy", - "invidiousQuality", - "invidiousPlayerStyle", - "invidiousVideoLoop", - "invidiousContinueAutoplay", - "invidiousContinue", - "invidiousSpeed", - "invidiousQualityDash", - "invidiousComments", - "invidiousCaptions", - "invidiousRelatedVideos", - "invidiousAnnotations", - "invidiousExtendDesc", - "invidiousVrMode", - "invidiousSavePlayerPos", - "invidiousRegion", - "invidiousDarkMode", - "invidiousThinMode", - "invidiousDefaultHome", - "invidiousFeedMenuList", - - "pipedBufferGoal", - "pipedComments", - "pipedDisableLBRY", - "pipedEnabledCodecs", - "pipedHomepage", - "pipedMinimizeDescription", - "pipedProxyLBRY", - "pipedQuality", - "pipedRegion", - "pipedSelectedSkip", - "pipedSponsorblock", - "pipedDdlTheme", - "pipedWatchHistory", - - "pipedMaterialSkipToLastPoint", - ], - r => { - - youtubeListen = r.youtubeListen ?? false; - volume = r.youtubeVolume ?? 100; - youtubeAutoplay = r.youtubeAutoplay ?? false; - - invidiousVideoLoop = r.invidiousVideoLoop ?? false; - invidiousAlwaysProxy = r.invidiousAlwaysProxy ?? false; - invidiousPlayerStyle = r.invidiousPlayerStyle ?? 'invidious'; - invidiousQuality = r.invidiousQuality ?? 'hd720'; - invidiousContinueAutoplay = r.invidiousContinueAutoplay ?? true; - invidiousContinue = r.invidiousContinue ?? false; - invidiousSpeed = r.invidiousSpeed ?? '1.0'; - invidiousQualityDash = r.invidiousQualityDash ?? 'auto'; - invidiousComments = r.invidiousComments ?? ['youtube', '']; - invidiousCaptions = r.invidiousCaptions ?? ['', '', '']; - invidiousRelatedVideos = r.invidiousRelatedVideos ?? true; - invidiousAnnotations = r.invidiousAnnotations ?? false; - invidiousExtendDesc = r.invidiousExtendDesc ?? false; - invidiousVrMode = r.invidiousVrMode ?? true; - invidiousSavePlayerPos = r.invidiousSavePlayerPos ?? false; - - invidiousRegion = r.invidiousRegion ?? 'US'; - invidiousDarkMode = r.invidiousDarkMode ?? ''; - invidiousThinMode = r.invidiousThinMode ?? false; - invidiousDefaultHome = r.invidiousDefaultHome ?? 'Popular'; - invidiousFeedMenuList = r.invidiousFeedMenuList ?? ['Popular', 'Trending']; - - pipedBufferGoal = r.pipedBufferGoal ?? 300; - pipedComments = r.pipedComments ?? true; - pipedDisableLBRY = r.pipedDisableLBRY ?? false; - pipedEnabledCodecs = r.pipedEnabledCodecs ?? ["av1", "vp9", "avc"]; - pipedHomepage = r.pipedHomepage ?? "trending"; - pipedMinimizeDescription = r.pipedMinimizeDescription ?? false; - pipedProxyLBRY = r.pipedProxyLBRY ?? false; - pipedQuality = r.pipedQuality ?? 0; - pipedRegion = r.pipedRegion ?? "US"; - - pipedSelectedSkip = r.pipedSelectedSkip ?? ["sponsor", "interaction", "selfpromo", "music_offtopic"]; - pipedSponsorblock = r.pipedSponsorblock ?? true; - pipedDdlTheme = r.pipedDdlTheme ?? 'auto'; - pipedWatchHistory = r.pipedWatchHistory ?? false; - - pipedMaterialSkipToLastPoint = r.pipedMaterialSkipToLastPoint ?? true; - - resolve(); - } - ) - } - ) -} \ 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 3f9572dc..c6a5707a 100644 --- a/src/assets/javascripts/helpers/youtube/piped-preferences.js +++ b/src/assets/javascripts/helpers/youtube/piped-preferences.js @@ -2,7 +2,6 @@ window.browser = window.browser || window.chrome; browser.storage.local.get( [ - "theme", "youtubeVolume", "youtubeAutoplay", "youtubeListen", @@ -22,40 +21,21 @@ browser.storage.local.get( "pipedWatchHistory", ], r => { - let theme = r.theme ?? "dark"; - let youtubeAutoplay = r.youtubeAutoplay ?? false; - let youtubeVolume = r.youtubeVolume ?? 100; - let youtubeListen = r.youtubeListen ?? false; - - let pipedBufferGoal = r.pipedBufferGoal ?? 300; - let pipedComments = r.pipedComments ?? true; - let pipedDisableLBRY = r.pipedDisableLBRY ?? false; - let pipedEnabledCodecs = r.pipedEnabledCodecs ?? ["av1", "vp9", "avc"]; - let pipedHomepage = r.pipedHomepage ?? "trending"; - let pipedMinimizeDescription = r.pipedMinimizeDescription ?? false; - let pipedProxyLBRY = r.pipedProxyLBRY ?? false; - let pipedQuality = r.pipedQuality ?? 0; - let pipedRegion = r.pipedRegion ?? "US"; - let pipedSelectedSkip = r.pipedSelectedSkip ?? ["sponsor", "interaction", "selfpromo", "music_offtopic"]; - let pipedSponsorblock = r.pipedSponsorblock ?? true; - let pipedDdlTheme = r.pipedDdlTheme ?? 'auto'; - let pipedWatchHistory = r.pipedWatchHistory ?? false; - - localStorage.setItem("bufferGoal", pipedBufferGoal.toString()); - localStorage.setItem("comments", pipedComments); - localStorage.setItem("disableLBRY", pipedDisableLBRY); - localStorage.setItem("enabledCodecs", pipedEnabledCodecs); - localStorage.setItem("homepage", pipedHomepage); - localStorage.setItem("listen", youtubeListen); - localStorage.setItem("minimizeDescription", pipedMinimizeDescription); - localStorage.setItem("playerAutoPlay", youtubeAutoplay); - localStorage.setItem("proxyLBRY", pipedProxyLBRY); - localStorage.setItem("quality", pipedQuality); - localStorage.setItem("region", pipedRegion); - localStorage.setItem("selectedSkip", pipedSelectedSkip); - localStorage.setItem("sponsorblock", pipedSponsorblock); - localStorage.setItem("theme", pipedDdlTheme); - localStorage.setItem("volume", youtubeVolume / 100); - localStorage.setItem("watchHistory", pipedWatchHistory); + 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); } ) \ No newline at end of file diff --git a/src/assets/javascripts/helpers/youtube/piped.js b/src/assets/javascripts/helpers/youtube/piped.js new file mode 100644 index 00000000..10bec749 --- /dev/null +++ b/src/assets/javascripts/helpers/youtube/piped.js @@ -0,0 +1,37 @@ +async function initDefaults() { + 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, + }) +} + +function initPipedLocalStorage(tabId) { + if (!disable && frontend == 'piped' && enableCustomSettings) + browser.tabs.executeScript( + tabId, + { + file: "/assets/javascripts/helpers/youtube/piped-preferences.js", + runAt: "document_start" + } + ); + } + +export default { + initDefaults, + initPipedLocalStorage +} \ No newline at end of file diff --git a/src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js b/src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js index 312271fe..c669c47e 100644 --- a/src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js +++ b/src/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js @@ -15,33 +15,22 @@ browser.storage.local.get( "pipedMaterialSkipToLastPoint", ], r => { - let theme = r.theme ?? "dark"; - let youtubeAutoplay = r.youtubeAutoplay ?? false; - let youtubeVolume = r.youtubeVolume ?? 100; - let youtubeListen = r.youtubeListen ?? false; - - let pipedDisableLBRY = r.pipedDisableLBRY ?? false; - let pipedProxyLBRY = r.pipedProxyLBRY ?? false; - let pipedSelectedSkip = r.pipedSelectedSkip ?? []; - let pipedSponsorblock = r.pipedSponsorblock ?? true; - - let pipedMaterialSkipToLastPoint = r.pipedMaterialSkipToLastPoint ?? true; - let prefs = {}; - if (localStorage.getItem("PREFERENCES")) prefs = JSON.parse(localStorage.getItem("PREFERENCES")); + if (localStorage.getItem("PREFERENCES")) + prefs = JSON.parse(localStorage.getItem("PREFERENCES")); - if (theme == 'dark') prefs.darkMode = true; - if (theme == 'light') prefs.darkMode = false; + if (r.theme == 'dark') prefs.darkMode = true; + if (r.theme == 'light') prefs.darkMode = false; - prefs.volume = youtubeVolume / 100; - prefs.playerAutoplay = youtubeAutoplay; + prefs.volume = r.youtubeVolume / 100; + prefs.playerAutoplay = r.youtubeAutoplay; - prefs.listen = youtubeListen; - prefs.disableLBRY = pipedDisableLBRY; - prefs.proxyLBRY = pipedProxyLBRY; - prefs.sponsorblock = pipedSponsorblock; - prefs.skipToLastPoint = pipedMaterialSkipToLastPoint; - prefs.selectedSkip = pipedSelectedSkip; + prefs.listen = r.youtubeListen; + prefs.disableLBRY = r.pipedDisableLBRY; + prefs.proxyLBRY = r.pipedProxyLBRY; + prefs.sponsorblock = r.pipedSponsorblock; + prefs.skipToLastPoint = r.pipedMaterialSkipToLastPoint; + prefs.selectedSkip = r.pipedSelectedSkip; localStorage.setItem("PREFERENCES", JSON.stringify(prefs)); } diff --git a/src/assets/javascripts/helpers/youtube/pipedMaterial.js b/src/assets/javascripts/helpers/youtube/pipedMaterial.js new file mode 100644 index 00000000..5e5a577d --- /dev/null +++ b/src/assets/javascripts/helpers/youtube/pipedMaterial.js @@ -0,0 +1,31 @@ +async function initDefaults() { + await browser.storage.local.set({ + theme: "dark", + youtubeAutoplay: false, + youtubeVolume: 100, + youtubeListen: false, + + pipedDisableLBRY: false, + pipedProxyLBRY: false, + pipedSelectedSkip: [], + pipedSponsorblock: true, + + pipedMaterialSkipToLastPoint: true, + }) +} + +function initPipedMaterialLocalStorage(tabId) { + if (!disable && frontend == 'pipedMaterial' && enableCustomSettings) + browser.tabs.executeScript( + tabId, + { + file: "/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js", + runAt: "document_start" + } + ); +} + +export default { + initDefaults, + initPipedMaterialLocalStorage, +} \ 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 c318e97c..9cdc60ad 100644 --- a/src/assets/javascripts/helpers/youtube/youtube.js +++ b/src/assets/javascripts/helpers/youtube/youtube.js @@ -3,46 +3,9 @@ window.browser = window.browser || window.chrome; import commonHelper from '../common.js' -import { - youtubeListen, getYoutubeListen, - invidiousQuality, getInvidiousQuality, - invidiousAlwaysProxy, getInvidiousAlwaysProxy, - invidiousPlayerStyle, getInvidiousPlayerStyle, - invidiousVideoLoop, getInvidiousVideoLoop, - invidiousContinueAutoplay, getInvidiousContinueAutoplay, - invidiousContinue, getInvidiousContinue, - invidiousSpeed, getInvidiousSpeed, - invidiousQualityDash, getInvidiousQualityDash, - invidiousComments, getInvidiousComments, - invidiousCaptions, getInvidiousCaptions, - invidiousRelatedVideos, getInvidiousRelatedVideos, - invidiousAnnotations, getInvidiousAnnotations, - invidiousExtendDesc, getInvidiousExtendDesc, - invidiousVrMode, getInvidiousVrMode, - invidiousSavePlayerPos, getInvidiousSavePlayerPos, - invidiousRegion, getInvidiousRegion, - invidiousDarkMode, getInvidiousDarkMode, - invidiousThinMode, getInvidiousThinMode, - invidiousDefaultHome, getInvidiousDefaultHome, - invidiousFeedMenuList, getInvidiousFeedMenuList, - getPipedBufferGoal, - getPipedComments, - getPipedDisableLBRY, - getPipedEnabledCodecs, - getPipedHomepage, - getPipedMinimizeDescription, - getPipedProxyLBRY, - getPipedQuality, - getPipedRegion, - getPipedSelectedSkip, - getPipedSponsorblock, - getPipedDdlTheme, - getPipedWatchHistory, - volume, getVolume, setVolume, - youtubeAutoplay, getAutoplay, setAutoplay, - getPipedMaterialSkipToLastPoint, - initOptions -} from './options.js'; +import invidious from './invidious.js' +import piped from './piped.js'; +import pipedMaterial from './pipedMaterial.js'; const targets = [ /^https?:\/{2}(www\.|music\.|m\.|)youtube\.com(\/.*|$)/, @@ -89,164 +52,29 @@ let redirects = { const getRedirects = () => redirects; -function getCustomRedirects() { - return { - "invidious": { - "normal": [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects], - "tor": [...invidiousTorRedirectsChecks, ...invidiousTorCustomRedirects] - }, - "piped": { - "normal": [...pipedNormalRedirectsChecks, ...pipedNormalCustomRedirects], - "tor": [...pipedTorRedirectsChecks, ...pipedTorCustomRedirects] - } - }; -}; - -async function setYoutubeSettings(val) { - return new Promise( - resolve => { - browser.storage.local.set(val).then(resolve); - } - ) - -} - -function setInvidiousRedirects(val) { - redirects.invidious = val; - browser.storage.local.set({ youtubeRedirects: redirects }) - console.log("invidiousRedirects: ", val) -} - let invidiousNormalRedirectsChecks; -const getInvidiousNormalRedirectsChecks = () => invidiousNormalRedirectsChecks; -function setInvidiousNormalRedirectsChecks(val) { - invidiousNormalRedirectsChecks = val; - browser.storage.local.set({ invidiousNormalRedirectsChecks }) - console.log("invidiousNormalRedirectsChecks: ", val) -} - let invidiousNormalCustomRedirects = []; -const getInvidiousNormalCustomRedirects = () => invidiousNormalCustomRedirects; -function setInvidiousNormalCustomRedirects(val) { - invidiousNormalCustomRedirects = val; - browser.storage.local.set({ invidiousNormalCustomRedirects }) - console.log("invidiousNormalCustomRedirects: ", val) -} - let invidiousTorRedirectsChecks; -const getInvidiousTorRedirectsChecks = () => invidiousTorRedirectsChecks; -function setInvidiousTorRedirectsChecks(val) { - invidiousTorRedirectsChecks = val; - browser.storage.local.set({ invidiousTorRedirectsChecks }) - console.log("invidiousTorRedirectsChecks: ", val) -} - let invidiousTorCustomRedirects = []; -const getInvidiousTorCustomRedirects = () => invidiousTorCustomRedirects; -function setInvidiousTorCustomRedirects(val) { - invidiousTorCustomRedirects = val; - browser.storage.local.set({ invidiousTorCustomRedirects }) - console.log("invidiousTorCustomRedirects: ", val) -} let pipedNormalRedirectsChecks; -const getPipedNormalRedirectsChecks = () => pipedNormalRedirectsChecks; -function setPipedNormalRedirectsChecks(val) { - pipedNormalRedirectsChecks = val; - browser.storage.local.set({ pipedNormalRedirectsChecks }) - console.log("pipedNormalRedirectsChecks: ", val) -} - let pipedNormalCustomRedirects = []; -const getPipedNormalCustomRedirects = () => pipedNormalCustomRedirects; -function setPipedNormalCustomRedirects(val) { - pipedNormalCustomRedirects = val; - browser.storage.local.set({ pipedNormalCustomRedirects }) - console.log("pipedNormalCustomRedirects: ", val) -} - let pipedTorRedirectsChecks; -const getPipedTorRedirectsChecks = () => pipedTorRedirectsChecks; -function setPipedTorRedirectsChecks(val) { - pipedTorRedirectsChecks = val; - browser.storage.local.set({ pipedTorRedirectsChecks }) - console.log("pipedTorRedirectsChecks: ", val) -} - let pipedTorCustomRedirects = []; -const getPipedTorCustomRedirects = () => pipedTorCustomRedirects; -function setPipedTorCustomRedirects(val) { - pipedTorCustomRedirects = val; - browser.storage.local.set({ pipedTorCustomRedirects }) - console.log("pipedTorCustomRedirects: ", val) -} - -function setPipedRedirects(val) { - redirects.piped = val; - browser.storage.local.set({ youtubeRedirects: redirects }) - console.log("pipedRedirects: ", val) -} let pipedMaterialNormalRedirectsChecks; -const getPipedMaterialNormalRedirectsChecks = () => pipedMaterialNormalRedirectsChecks; -function setPipedMaterialNormalRedirectsChecks(val) { - pipedMaterialNormalRedirectsChecks = val; - browser.storage.local.set({ pipedMaterialNormalRedirectsChecks }) - console.log("pipedMaterialNormalRedirectsChecks: ", val) -} - let pipedMaterialNormalCustomRedirects = []; -const getPipedMaterialNormalCustomRedirects = () => pipedMaterialNormalCustomRedirects; -function setPipedMaterialNormalCustomRedirects(val) { - pipedMaterialNormalCustomRedirects = val; - browser.storage.local.set({ pipedMaterialNormalCustomRedirects }) - console.log("pipedMaterialNormalCustomRedirects: ", val) -} - let pipedMaterialTorRedirectsChecks; -const getPipedMaterialTorRedirectsChecks = () => pipedMaterialTorRedirectsChecks; -function setPipedMaterialTorRedirectsChecks(val) { - pipedMaterialTorRedirectsChecks = val; - browser.storage.local.set({ pipedMaterialTorRedirectsChecks }) - console.log("pipedMaterialTorRedirectsChecks: ", val) -} - let pipedMaterialTorCustomRedirects = []; -const getPipedMaterialTorCustomRedirects = () => pipedMaterialTorCustomRedirects; -function setPipedMaterialTorCustomRedirects(val) { - pipedMaterialTorCustomRedirects = val; - browser.storage.local.set({ pipedMaterialTorCustomRedirects }) - console.log("pipedMaterialTorCustomRedirects: ", val) -} - -function setPipedMaterialRedirects(val) { - redirects.pipedMaterial = val; - browser.storage.local.set({ youtubeRedirects: redirects }) - console.log("pipedMaterialRedirects: ", val) -} let disable; -const getDisable = () => disable; -function setDisable(val) { - disable = val; - browser.storage.local.set({ disableYoutube: disable }) - console.log("disableYoutube: ", disable) -} - -let enableCustomSettings; -const getEnableCustomSettings = () => enableCustomSettings; let protocol; -const getProtocol = () => protocol; let OnlyEmbeddedVideo; -const getOnlyEmbeddedVideo = () => OnlyEmbeddedVideo; let frontend; -const getFrontend = () => frontend; let youtubeEmbedFrontend; -const getYoutubeEmbedFrontend = () => youtubeEmbedFrontend; let bypassWatchOnYoutube; -const getBypassWatchOnYoutube = () => bypassWatchOnYoutube; - let alwaysUsePreferred; + function redirect(url, details, initiator) { if (disable) return null; @@ -373,7 +201,6 @@ function redirect(url, details, initiator) { function reverse(url) { let protocolHost = commonHelper.protocolHost(url); - if (![ ...redirects.invidious.normal, ...redirects.invidious.tor, @@ -428,13 +255,11 @@ function switchInstance(url) { if (protocol == 'normal') instancesList = [...pipedMaterialNormalRedirectsChecks, ...pipedMaterialNormalCustomRedirects]; else if (protocol == 'tor') instancesList = [...pipedMaterialTorRedirectsChecks, ...pipedMaterialTorCustomRedirects]; } - else return null; - console.log("instancesList", instancesList); let index = instancesList.indexOf(protocolHost); if (index > -1) instancesList.splice(index, 1); - if (instancesList.length === 0) return null; + if (instancesList.length == 0) return null; let randomInstance = commonHelper.getRandomInstance(instancesList); return `${randomInstance}${url.pathname}${url.search}`; } @@ -481,272 +306,147 @@ function isPipedorInvidious(url, type, frontend) { ].includes(protocolHost); } -function initPipedLocalStorage(tabId) { - if (!disable && frontend == 'piped' && enableCustomSettings) - browser.tabs.executeScript( - tabId, - { - file: "/assets/javascripts/helpers/youtube/piped-preferences.js", - runAt: "document_start" - } - ); -} +async function initDefaults() { + console.log('youtube initDefaults') + return new Promise(async resolve => { + fetch('/instances/data.json').then(response => response.text()).then(async data => { + let dataJson = JSON.parse(data); + redirects.invidious = dataJson.invidious; + await browser.storage.local.set({ + disableYoutube: false, + enableYoutubeCustomSettings: false, + OnlyEmbeddedVideo: 'both', + + youtubeRedirects: { + 'invidious': dataJson.invidious, + 'piped': redirects.piped, + 'pipedMaterial': redirects.pipedMaterial + }, -function initPipedMaterialLocalStorage(tabId) { - if (!disable && frontend == 'pipedMaterial' && enableCustomSettings) - browser.tabs.executeScript( - tabId, - { - file: "/assets/javascripts/helpers/youtube/pipedMaterial-preferences.js", - runAt: "document_start" - } - ); -} + youtubeFrontend: 'invidious', -function initInvidiousCookies() { - console.log('initInvidiousCookies()'); - if (!disable && frontend == 'invidious' && enableCustomSettings) { - let checkedInstances; - if (protocol == 'normal') checkedInstances = [...invidiousNormalRedirectsChecks, ...invidiousNormalCustomRedirects]; - else if (protocol == 'tor') checkedInstances = [...invidiousTorRedirectsChecks, ...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 = invidiousAlwaysProxy; - prefs.video_loop = invidiousVideoLoop; - prefs.continue_autoplay = invidiousContinueAutoplay; - prefs.continue = invidiousContinue; - prefs.listen = youtubeListen; - prefs.speed = parseFloat(invidiousSpeed); - prefs.quality = invidiousQuality; - prefs.quality_dash = invidiousQualityDash; - - prefs.comments = invidiousComments; - prefs.captions = invidiousCaptions; - - prefs.related_videos = invidiousRelatedVideos; - prefs.annotations = invidiousAnnotations - prefs.extend_desc = invidiousExtendDesc; - prefs.vr_mode = invidiousVrMode; - prefs.save_player_pos = invidiousSavePlayerPos; - - prefs.volume = parseInt(volume); - prefs.player_style = invidiousPlayerStyle; - prefs.autoplay = youtubeAutoplay; - - prefs.region = invidiousRegion; - prefs.dark_mode = invidiousDarkMode; - prefs.thin_mode = invidiousThinMode; - prefs.default_home = invidiousDefaultHome; - prefs.feed_menu = invidiousFeedMenuList; - - browser.cookies.set({ - url: instanceUrl, - name: "PREFS", - value: encodeURIComponent(JSON.stringify(prefs)) - }) - } - ) - } -} + invidiousNormalRedirectsChecks: [...redirects.invidious.normal], + invidiousNormalCustomRedirects: [], -let theme; -async function init() { - await initOptions(); - return new Promise( - resolve => { - fetch('/instances/data.json').then(response => response.text()).then(data => { - let dataJson = JSON.parse(data); - browser.storage.local.get( - [ - "theme", - "disableYoutube", - "enableYoutubeCustomSettings", - "OnlyEmbeddedVideo", - "youtubeRedirects", - "youtubeFrontend", + invidiousTorRedirectsChecks: [...redirects.invidious.tor], + invidiousTorCustomRedirects: [], - "invidiousNormalRedirectsChecks", - "invidiousNormalCustomRedirects", + pipedNormalRedirectsChecks: [...redirects.piped.normal], + pipedNormalCustomRedirects: [], - "invidiousTorRedirectsChecks", - "invidiousTorCustomRedirects", + pipedTorRedirectsChecks: [...redirects.piped.tor], + pipedTorCustomRedirects: [], - "pipedNormalRedirectsChecks", - "pipedNormalCustomRedirects", + pipedMaterialNormalRedirectsChecks: [...redirects.pipedMaterial.normal], + pipedMaterialNormalCustomRedirects: [], - "pipedMaterialNormalRedirectsChecks", - "pipedMaterialNormalCustomRedirects", + pipedMaterialTorRedirectsChecks: [...redirects.pipedMaterial.tor], + pipedMaterialTorCustomRedirects: [], - "pipedMaterialTorRedirectsChecks", - "pipedMaterialTorCustomRedirects", + alwaysUsePreferred: false, + youtubeEmbedFrontend: 'invidious', + youtubeProtocol: 'normal', + bypassWatchOnYoutube: true, + }) + + await invidious.initDefaults(); + await piped.initDefaults(); + await pipedMaterial.initDefaults(); + resolve(); + } + ) + }) +} + +async function init() { + return new Promise( + resolve => { + browser.storage.local.get( + [ + "disableYoutube", + "OnlyEmbeddedVideo", + "youtubeRedirects", + "youtubeFrontend", - "pipedTorRedirectsChecks", - "pipedTorCustomRedirects", - "alwaysUsePreferred", - "youtubeEmbedFrontend", + "invidiousNormalRedirectsChecks", + "invidiousNormalCustomRedirects", - "youtubeProtocol", + "invidiousTorRedirectsChecks", + "invidiousTorCustomRedirects", - "bypassWatchOnYoutube" - ], - r => { - redirects.invidious = dataJson.invidious; - if (r.youtubeRedirects) redirects = r.youtubeRedirects; + "pipedNormalRedirectsChecks", + "pipedNormalCustomRedirects", - disable = r.disableYoutube ?? false; - enableCustomSettings = r.enableYoutubeCustomSettings ?? false; - protocol = r.youtubeProtocol ?? 'normal'; - frontend = r.youtubeFrontend ?? 'invidious'; - youtubeEmbedFrontend = r.youtubeEmbedFrontend ?? 'invidious'; + "pipedTorRedirectsChecks", + "pipedTorCustomRedirects", - theme = r.theme ?? 'dark'; + "pipedMaterialNormalRedirectsChecks", + "pipedMaterialNormalCustomRedirects", - OnlyEmbeddedVideo = r.OnlyEmbeddedVideo ?? 'both'; + "pipedMaterialTorRedirectsChecks", + "pipedMaterialTorCustomRedirects", - invidiousNormalRedirectsChecks = r.invidiousNormalRedirectsChecks ?? [...redirects.invidious.normal]; - invidiousNormalCustomRedirects = r.invidiousNormalCustomRedirects ?? []; + "alwaysUsePreferred", + "youtubeEmbedFrontend", + "youtubeProtocol", + "bypassWatchOnYoutube", + ], + r => { - invidiousTorRedirectsChecks = r.invidiousTorRedirectsChecks ?? [...redirects.invidious.tor]; - invidiousTorCustomRedirects = r.invidiousTorCustomRedirects ?? []; + console.log('inited r.youtubeRedirects', r.youtubeRedirects); + redirects = r.youtubeRedirects; - pipedNormalRedirectsChecks = r.pipedNormalRedirectsChecks ?? [...redirects.piped.normal]; - pipedNormalCustomRedirects = r.pipedNormalCustomRedirects ?? []; + disable = r.disableYoutube; + protocol = r.youtubeProtocol; + frontend = r.youtubeFrontend; - pipedTorRedirectsChecks = r.pipedTorRedirectsChecks ?? [...redirects.piped.tor]; - pipedTorCustomRedirects = r.pipedTorCustomRedirects ?? []; + invidiousNormalRedirectsChecks = r.invidiousNormalRedirectsChecks; + invidiousNormalCustomRedirects = r.invidiousNormalCustomRedirects; - pipedMaterialNormalRedirectsChecks = r.pipedMaterialNormalRedirectsChecks ?? [...redirects.pipedMaterial.normal]; - pipedMaterialNormalCustomRedirects = r.pipedMaterialNormalCustomRedirects ?? []; + invidiousTorRedirectsChecks = r.invidiousTorRedirectsChecks; + invidiousTorCustomRedirects = r.invidiousTorCustomRedirects; - pipedMaterialTorRedirectsChecks = r.pipedMaterialTorRedirectsChecks ?? [...redirects.pipedMaterial.tor]; - pipedMaterialTorCustomRedirects = r.pipedMaterialTorCustomRedirects ?? []; + pipedNormalRedirectsChecks = r.pipedNormalRedirectsChecks; + pipedNormalCustomRedirects = r.pipedNormalCustomRedirects; - alwaysUsePreferred = r.alwaysUsePreferred ?? false; + pipedTorRedirectsChecks = r.pipedTorRedirectsChecks; + pipedTorCustomRedirects = r.pipedTorCustomRedirects; - bypassWatchOnYoutube = r.bypassWatchOnYoutube ?? true; + pipedMaterialNormalRedirectsChecks = r.pipedMaterialNormalRedirectsChecks; + pipedMaterialNormalCustomRedirects = r.pipedMaterialNormalCustomRedirects; - initInvidiousCookies(); + pipedMaterialTorRedirectsChecks = r.pipedMaterialTorRedirectsChecks; + pipedMaterialTorCustomRedirects = r.pipedMaterialTorCustomRedirects; - resolve(); + youtubeEmbedFrontend = r.youtubeEmbedFrontend; + OnlyEmbeddedVideo = r.OnlyEmbeddedVideo; + alwaysUsePreferred = r.alwaysUsePreferred; + bypassWatchOnYoutube = r.bypassWatchOnYoutube; - }); - }); + resolve(); + }); }) } +let + initPipedLocalStorage = piped.initPipedLocalStorage, + initPipedMaterialLocalStorage = pipedMaterial.initPipedMaterialLocalStorage, + initInvidiousCookies = invidious.initInvidiousCookies; + export default { - setYoutubeSettings, - getBypassWatchOnYoutube, initPipedLocalStorage, initPipedMaterialLocalStorage, - getFrontend, - getYoutubeEmbedFrontend, + initInvidiousCookies, getRedirects, - getCustomRedirects, - setInvidiousRedirects, - setPipedRedirects, + redirect, + reverse, + switchInstance, - isPipedorInvidious, - initInvidiousCookies, - getInvidiousAlwaysProxy, - getInvidiousQuality, - getInvidiousPlayerStyle, - getInvidiousVideoLoop, - getInvidiousRegion, - getInvidiousDarkMode, - getInvidiousThinMode, - getInvidiousDefaultHome, - getInvidiousFeedMenuList, - - getDisable, - setDisable, - reverse, + isPipedorInvidious, - getEnableCustomSettings, - getProtocol, - getOnlyEmbeddedVideo, - setVolume, - getVolume, - setAutoplay, - getAutoplay, - getInvidiousContinueAutoplay, - getInvidiousContinue, - getYoutubeListen, - getInvidiousSpeed, - getInvidiousQualityDash, - getInvidiousComments, - getInvidiousCaptions, - getInvidiousRelatedVideos, - getInvidiousAnnotations, - getInvidiousExtendDesc, - getInvidiousVrMode, - getInvidiousSavePlayerPos, - getPipedBufferGoal, - getPipedComments, - getPipedDisableLBRY, - getPipedEnabledCodecs, - getPipedHomepage, - getPipedMinimizeDescription, - getPipedProxyLBRY, - getPipedQuality, - getPipedRegion, - getPipedSelectedSkip, - getPipedSponsorblock, - getPipedDdlTheme, - getPipedWatchHistory, - getPipedMaterialSkipToLastPoint, - - getInvidiousNormalRedirectsChecks, - setInvidiousNormalRedirectsChecks, - - getInvidiousNormalCustomRedirects, - setInvidiousNormalCustomRedirects, - - getPipedNormalRedirectsChecks, - setPipedNormalRedirectsChecks, - - getPipedNormalCustomRedirects, - setPipedNormalCustomRedirects, - - getInvidiousTorRedirectsChecks, - setInvidiousTorRedirectsChecks, - - getInvidiousTorCustomRedirects, - setInvidiousTorCustomRedirects, - - getPipedTorRedirectsChecks, - setPipedTorRedirectsChecks, - - getPipedTorCustomRedirects, - setPipedTorCustomRedirects, - - getPipedMaterialNormalRedirectsChecks, - setPipedMaterialNormalRedirectsChecks, - - getPipedMaterialNormalCustomRedirects, - setPipedMaterialNormalCustomRedirects, - - getPipedMaterialTorRedirectsChecks, - setPipedMaterialTorRedirectsChecks, - - getPipedMaterialTorCustomRedirects, - setPipedMaterialTorCustomRedirects, - - setPipedMaterialRedirects, + initDefaults, init, }; |