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 | |
parent | Update README.md (diff) | |
download | libredirect-a78d6cdd04d491fcc773a4530d7887eee2ba4a59.zip |
Restructuring and simplifying code #229
Diffstat (limited to 'src')
19 files changed, 939 insertions, 1452 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, }; diff --git a/src/pages/background/background.js b/src/pages/background/background.js index 88e64890..ae5f9f95 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -22,14 +22,25 @@ import youtubeMusicHelper from "../../assets/javascripts/helpers/youtubeMusic.js window.browser = window.browser || window.chrome; + + browser.runtime.onInstalled.addListener(async details => { if (details.reason == 'install') { + await instagramHelper.initDefaults(); await redditHelper.initDefaults(); + await youtubeHelper.initDefaults(); await tiktokHelper.initDefaults(); + await imgurHelper.initDefaults(); await wholeInit(); + browser.storage.local.set({ initDefaults: true }) + initListener(); } }); +function initListener() { + browser.storage.onChanged.addListener(wholeInit); +} + async function wholeInit() { await youtubeHelper.init(); await youtubeMusicHelper.init(); @@ -51,9 +62,15 @@ async function wholeInit() { await spotifyHelper.init(); await generalHelper.init(); } -await wholeInit(); -browser.storage.onChanged.addListener(wholeInit); +await browser.storage.local.get( + 'initDefaults', + async r => { + if (r.initDefaults == true) { + await wholeInit(); + initListener(); + } + }) let incognitoInit = false; browser.tabs.onCreated.addListener( @@ -79,7 +96,7 @@ browser.webRequest.onBeforeRequest.addListener( else if (details.initiator) initiator = new URL(details.initiator); - var newUrl; + let newUrl; if (!newUrl) newUrl = youtubeHelper.redirect(url, details, initiator) if (youtubeMusicHelper.isYoutubeMusic(url, initiator)) newUrl = youtubeMusicHelper.redirect(url, details.type) @@ -94,7 +111,7 @@ browser.webRequest.onBeforeRequest.addListener( if (!newUrl) newUrl = mediumHelper.redirect(url, details.type, initiator); - if (imgurHelper.isImgur(url, initiator)) newUrl = imgurHelper.redirect(url, details.type); + if (!newUrl) newUrl = imgurHelper.redirect(url, details.type, initiator); if (!newUrl) newUrl = tiktokHelper.redirect(url, details.type, initiator); @@ -126,11 +143,11 @@ browser.webRequest.onBeforeRequest.addListener( if (BYPASSTABs.includes(details.tabId)) newUrl = null; if (newUrl) { - if (newUrl == 'CANCEL') { + if (newUrl === 'CANCEL') { console.log(`Canceled ${url}`); return { cancel: true }; } - else if (newUrl == 'BYPASSTAB') { + else if (newUrl === 'BYPASSTAB') { console.log(`Bybassed ${details.tabId} ${url}`); if (!BYPASSTABs.includes(details.tabId)) BYPASSTABs.push(details.tabId); return null; diff --git a/src/pages/options/imgur/imgur.js b/src/pages/options/imgur/imgur.js index 11ebcebc..8d4428cf 100644 --- a/src/pages/options/imgur/imgur.js +++ b/src/pages/options/imgur/imgur.js @@ -2,18 +2,15 @@ import imgurHelper from "../../../assets/javascripts/helpers/imgur.js"; import commonHelper from "../../../assets/javascripts/helpers/common.js"; let disableImgurElement = document.getElementById("disable-imgur"); -disableImgurElement.addEventListener("change", - (event) => imgurHelper.setDisable(!event.target.checked) -); - let protocolElement = document.getElementById("protocol") -protocolElement.addEventListener("change", - event => { - let protocol = event.target.options[protocolElement.selectedIndex].value - imgurHelper.setProtocol(protocol); - changeProtocolSettings(protocol); - } -); + +document.addEventListener("change", async () => { + await browser.storage.local.set({ + disableImgur: !disableImgurElement.checked, + imgurProtocol: protocolElement.value, + }); + init(); +}) function changeProtocolSettings(protocol) { let normalDiv = document.getElementsByClassName("normal")[0]; @@ -36,50 +33,45 @@ function changeProtocolSettings(protocol) { } } -imgurHelper.init().then(() => { - disableImgurElement.checked = !imgurHelper.getDisable(); +function init() { + imgurHelper.init().then(() => { + browser.storage.local.get( + [ + "disableImgur", + "imgurProtocol", + ], + r => { + disableImgurElement.checked = !r.disableImgur; + protocol.value = r.imgurProtocol; + changeProtocolSettings(r.imgurProtocol); + } + ); - let protocol = imgurHelper.getProtocol(); - console.log('protocol', protocol); - protocolElement.value = protocol; - changeProtocolSettings(protocol); - browser.storage.local.get("rimgoLatency").then(r => { commonHelper.processDefaultCustomInstances( 'rimgo', 'normal', imgurHelper, - document, - imgurHelper.getRimgoNormalRedirectsChecks, - imgurHelper.setRimgoNormalRedirectsChecks, - imgurHelper.getRimgoNormalCustomRedirects, - imgurHelper.setRimgoNormalCustomRedirects, - r.rimgoLatency + document ); - }); - commonHelper.processDefaultCustomInstances( - 'rimgo', - 'tor', - imgurHelper, - document, - imgurHelper.getRimgoTorRedirectsChecks, - imgurHelper.setRimgoTorRedirectsChecks, - imgurHelper.getRimgoTorCustomRedirects, - imgurHelper.setRimgoTorCustomRedirects - ); + commonHelper.processDefaultCustomInstances( + 'rimgo', + 'tor', + imgurHelper, + document + ); + + commonHelper.processDefaultCustomInstances( + 'rimgo', + 'i2p', + imgurHelper, + document + ); + }); +} +init(); - commonHelper.processDefaultCustomInstances( - 'rimgo', - 'i2p', - imgurHelper, - document, - imgurHelper.getRimgoI2pRedirectsChecks, - imgurHelper.setRimgoI2pRedirectsChecks, - imgurHelper.getRimgoI2pCustomRedirects, - imgurHelper.setRimgoI2pCustomRedirects - ); -}); let latencyElement = document.getElementById("latency"); let latencyLabel = document.getElementById("latency-label"); diff --git a/src/pages/options/instagram/instagram.js b/src/pages/options/instagram/instagram.js index 867a5ddc..7dcd5607 100644 --- a/src/pages/options/instagram/instagram.js +++ b/src/pages/options/instagram/instagram.js @@ -2,18 +2,15 @@ import instagramHelper from "../../../assets/javascripts/helpers/instagram.js"; import commonHelper from "../../../assets/javascripts/helpers/common.js"; let disableInstagramElement = document.getElementById("disable-bibliogram"); -disableInstagramElement.addEventListener("change", - (event) => instagramHelper.setDisable(!event.target.checked) -); +let protocolElement = document.getElementById("protocol"); -let protocolElement = document.getElementById("protocol") -protocolElement.addEventListener("change", - (event) => { - let protocol = event.target.options[protocolElement.selectedIndex].value - instagramHelper.setProtocol(protocol); - changeProtocolSettings(protocol); - } -); +document.addEventListener("change", async () => { + await browser.storage.local.set({ + disableInstagram: disableInstagramElement.checked, + instagramProtocol: protocolElement.value, + }) + changeProtocolSettings(protocolElement.value); +}) function changeProtocolSettings(protocol) { let normalDiv = document.getElementsByClassName("normal")[0]; @@ -28,41 +25,23 @@ function changeProtocolSettings(protocol) { } } -instagramHelper.init().then(() => { - disableInstagramElement.checked = !instagramHelper.getDisable(); +browser.storage.local.get( + [ + "disableInstagram", + "instagramProtocol" + ], + r => { - let protocol = instagramHelper.getProtocol(); - protocolElement.value = protocol; - changeProtocolSettings(protocol); + disableInstagramElement.checked = !r.disableInstagram; + let protocol = r.instagramProtocol; + protocolElement.value = protocol; + changeProtocolSettings(protocol); - browser.storage.local.get("bibliogramLatency").then(r => { - commonHelper.processDefaultCustomInstances( - 'bibliogram', - 'normal', - instagramHelper, - document, - instagramHelper.getBibliogramNormalRedirectsChecks, - instagramHelper.setBibliogramNormalRedirectsChecks, - instagramHelper.getBibliogramNormalCustomRedirects, - instagramHelper.setBibliogramNormalCustomRedirects, - r.bibliogramLatency, - ) + commonHelper.processDefaultCustomInstances('bibliogram', 'normal', instagramHelper, document) + commonHelper.processDefaultCustomInstances('bibliogram', 'tor', instagramHelper, document) }) - commonHelper.processDefaultCustomInstances( - 'bibliogram', - 'tor', - instagramHelper, - document, - instagramHelper.getBibliogramTorRedirectsChecks, - instagramHelper.setBibliogramTorRedirectsChecks, - instagramHelper.getBibliogramTorCustomRedirects, - instagramHelper.setBibliogramTorCustomRedirects - ) -}) - - let latencyElement = document.getElementById("latency"); let latencyLabel = document.getElementById("latency-label"); latencyElement.addEventListener("click", @@ -76,17 +55,7 @@ latencyElement.addEventListener("click", commonHelper.testLatency(latencyLabel, redirects.bibliogram.normal).then(r => { browser.storage.local.set({ bibliogramLatency: r }); latencyLabel.innerHTML = oldHtml; - commonHelper.processDefaultCustomInstances( - 'bibliogram', - 'normal', - instagramHelper, - document, - instagramHelper.getBibliogramNormalRedirectsChecks, - instagramHelper.setBibliogramNormalRedirectsChecks, - instagramHelper.getBibliogramNormalCustomRedirects, - instagramHelper.setBibliogramNormalCustomRedirects, - r, - ); + commonHelper.processDefaultCustomInstances('bibliogram', 'normal', instagramHelper, document); latencyElement.removeEventListener("click", reloadWindow); }); } diff --git a/src/pages/options/reddit/reddit.js b/src/pages/options/reddit/reddit.js index 91160ecf..47bd1856 100644 --- a/src/pages/options/reddit/reddit.js +++ b/src/pages/options/reddit/reddit.js @@ -45,7 +45,6 @@ document.addEventListener("change", async () => { init(); }) - window.onblur = () => { redditHelper.initLibredditCookies(); redditHelper.initTedditCookies(); @@ -93,100 +92,53 @@ function changeFrontendsSettings(frontend) { } } function init() { - redditHelper.init().then(() => { - browser.storage.local.get( - [ - "disableReddit", - "bypassWatchOnReddit", - "redditProtocol", - "redditFrontend", - - "enableLibredditCustomSettings", - - "redditTheme", - "redditFrontPage", - "redditLayout", - "redditWide", - "redditPostSort", - "redditCommentSort", - "redditShowNsfw", - "redditAutoplayVideos", - "redditUseHls", - "redditHideHlsNotification", - ], - r => { - disableRedditElement.checked = !r.disableReddit - bypassWatchOnRedditElement.checked = r.bypassWatchOnReddit - protocolElement.value = r.redditProtocol - redditFrontendElement.value = r.redditFrontend - enableLibredditSettingsElement.checked = r.enableLibredditCustomSettings - changeFrontendsSettings(r.redditFrontend); - changeProtocolSettings(r.redditProtocol); - - theme.value = r.redditTheme; - front_page.value = r.redditFrontPage; - layout.value = r.redditLayout; - wide.checked = r.redditWide; - post_sort.value = r.redditPostSort; - comment_sort.value = r.redditCommentSort; - show_nsfw.checked = r.redditShowNsfw; - autoplay_videos.checked = r.redditAutoplayVideos; - use_hls.checked = r.redditUseHls; - hide_hls_notification.checked = r.redditHideHlsNotification; - } - ) - - browser.storage.local.get("libredditLatency").then(r => { - commonHelper.processDefaultCustomInstances( - 'libreddit', - 'normal', - redditHelper, - document, - redditHelper.getLibredditNormalRedirectsChecks, - redditHelper.setLibredditNormalRedirectsChecks, - redditHelper.getLibredditNormalCustomRedirects, - redditHelper.setLibredditNormalCustomRedirects, - r.libredditLatency, - ) - }) - - commonHelper.processDefaultCustomInstances( - 'libreddit', - 'tor', - redditHelper, - document, - redditHelper.getLibredditTorRedirectsChecks, - redditHelper.setLibredditTorRedirectsChecks, - redditHelper.getLibredditTorCustomRedirects, - redditHelper.setLibredditTorCustomRedirects - ) - - browser.storage.local.get("tedditLatency").then(r => { - commonHelper.processDefaultCustomInstances( - 'teddit', - 'normal', - redditHelper, - document, - redditHelper.getTedditNormalRedirectsChecks, - redditHelper.setTedditNormalRedirectsChecks, - redditHelper.getTedditNormalCustomRedirects, - redditHelper.setTedditNormalCustomRedirects, - r.tedditLatency, - ); - }) - - commonHelper.processDefaultCustomInstances( - 'teddit', - 'tor', - redditHelper, - document, - redditHelper.getTedditTorRedirectsChecks, - redditHelper.setTedditTorRedirectsChecks, - redditHelper.getTedditTorCustomRedirects, - redditHelper.setTedditTorCustomRedirects - ); - - }) + browser.storage.local.get( + [ + "disableReddit", + "bypassWatchOnReddit", + "redditProtocol", + "redditFrontend", + + "enableLibredditCustomSettings", + + "redditTheme", + "redditFrontPage", + "redditLayout", + "redditWide", + "redditPostSort", + "redditCommentSort", + "redditShowNsfw", + "redditAutoplayVideos", + "redditUseHls", + "redditHideHlsNotification", + ], + r => { + disableRedditElement.checked = !r.disableReddit + bypassWatchOnRedditElement.checked = r.bypassWatchOnReddit + protocolElement.value = r.redditProtocol + redditFrontendElement.value = r.redditFrontend + enableLibredditSettingsElement.checked = r.enableLibredditCustomSettings + changeFrontendsSettings(r.redditFrontend); + changeProtocolSettings(r.redditProtocol); + + theme.value = r.redditTheme; + front_page.value = r.redditFrontPage; + layout.value = r.redditLayout; + wide.checked = r.redditWide; + post_sort.value = r.redditPostSort; + comment_sort.value = r.redditCommentSort; + show_nsfw.checked = r.redditShowNsfw; + autoplay_videos.checked = r.redditAutoplayVideos; + use_hls.checked = r.redditUseHls; + hide_hls_notification.checked = r.redditHideHlsNotification; + } + ) + + commonHelper.processDefaultCustomInstances('libreddit', 'normal', redditHelper, document) + commonHelper.processDefaultCustomInstances('libreddit', 'tor', redditHelper, document) + + commonHelper.processDefaultCustomInstances('teddit', 'normal', redditHelper, document); + commonHelper.processDefaultCustomInstances('teddit', 'tor', redditHelper, document); } init(); @@ -203,17 +155,7 @@ latencyLibredditElement.addEventListener("click", commonHelper.testLatency(latencyLibredditLabel, redirects.libreddit.normal).then(r => { browser.storage.local.set({ libredditLatency: r }); latencyLibredditLabel.innerHTML = oldHtml; - commonHelper.processDefaultCustomInstances( - 'libreddit', - 'normal', - redditHelper, - document, - redditHelper.getLibredditNormalRedirectsChecks, - redditHelper.setLibredditNormalRedirectsChecks, - redditHelper.getLibredditNormalCustomRedirects, - redditHelper.setLibredditNormalCustomRedirects, - r, - ); + commonHelper.processDefaultCustomInstances('libreddit', 'normal', redditHelper, document); latencyLibredditElement.removeEventListener("click", reloadWindow); }); } @@ -232,17 +174,7 @@ latencyTedditElement.addEventListener("click", commonHelper.testLatency(latencyTedditLabel, redirects.teddit.normal).then(r => { browser.storage.local.set({ tedditLatency: r }); latencyTedditLabel.innerHTML = oldHtml; - commonHelper.processDefaultCustomInstances( - 'teddit', - 'normal', - redditHelper, - document, - redditHelper.getTedditNormalRedirectsChecks, - redditHelper.setTedditNormalRedirectsChecks, - redditHelper.getTedditNormalCustomRedirects, - redditHelper.setTedditNormalCustomRedirects, - r, - ); + commonHelper.processDefaultCustomInstances('teddit', 'normal', redditHelper, document); latencyTedditElement.removeEventListener("click", reloadWindow); }); } diff --git a/src/pages/options/youtube/invidious.js b/src/pages/options/youtube/invidious.js index af94c531..d314607e 100644 --- a/src/pages/options/youtube/invidious.js +++ b/src/pages/options/youtube/invidious.js @@ -34,21 +34,27 @@ let feed_menu1 = invidious.getElementsByClassName("feed_menu[1]")[0]; volume.addEventListener("input", () => volumeValue.textContent = `${volume.value}%`); invidious.addEventListener("change", async _ => { - console.log('changed invidious settings'); - let commentsList = youtubeHelper.getInvidiousComments(); - commentsList[0] = comments0.value; - commentsList[1] = comments1.value; - - let captionsList = youtubeHelper.getInvidiousCaptions(); - captionsList[0] = captions0.value; - captionsList[1] = captions1.value; - captionsList[2] = captions2.value; - - let feedMenuList = youtubeHelper.getInvidiousFeedMenuList(); - feedMenuList[0] = feed_menu0.value; - feedMenuList[1] = feed_menu1.value; - - await youtubeHelper.setYoutubeSettings({ + browser.storage.local.get( + [ + "invidiousComments", + "invidiousCaptions", + "invidiousFeedMenuList", + ], + async r => { + let commentsList = r.invidiousComments; + commentsList[0] = comments0.value; + commentsList[1] = comments1.value; + + let captionsList = r.invidiousCaptions; + captionsList[0] = captions0.value; + captionsList[1] = captions1.value; + captionsList[2] = captions2.value; + + let feedMenuList = r.invidiousFeedMenuList; + feedMenuList[0] = feed_menu0.value; + feedMenuList[1] = feed_menu1.value; + + await browser.storage.local.set({ invidiousAlwaysProxy: alwaysProxy.checked, youtubeAutoplay: autoplay.checked, invidiousPlayerStyle: playerStyle.value, @@ -73,79 +79,85 @@ invidious.addEventListener("change", async _ => { invidiousThinMode: thin_mode.checked, invidiousDefaultHome: default_home.value, invidiousFeedMenuList: feedMenuList, - }); - init(); + }); + init(); + } + ) }); function init() { - youtubeHelper.init().then(() => { - videoLoop.checked = youtubeHelper.getInvidiousVideoLoop(); - - autoplay.checked = youtubeHelper.getAutoplay(); - - playerStyle.value = youtubeHelper.getInvidiousPlayerStyle(); - - continueAutoplay.checked = youtubeHelper.getInvidiousContinueAutoplay(); - invidiousContinue.checked = youtubeHelper.getInvidiousContinue(); - alwaysProxy.checked = youtubeHelper.getInvidiousAlwaysProxy(); - youtubeListen.checked = youtubeHelper.getYoutubeListen(); - - speed.value = youtubeHelper.getInvidiousSpeed(); - quality.value = youtubeHelper.getInvidiousQuality(); - qualityDash.value = youtubeHelper.getInvidiousQualityDash(); - - volume.value = youtubeHelper.getVolume(); - volumeValue.textContent = `${youtubeHelper.getVolume()}%`; - - comments0.value = youtubeHelper.getInvidiousComments()[0]; - comments1.value = youtubeHelper.getInvidiousComments()[1]; - - captions0.value = youtubeHelper.getInvidiousCaptions()[0]; - captions1.value = youtubeHelper.getInvidiousCaptions()[1]; - captions2.value = youtubeHelper.getInvidiousCaptions()[2]; - - relatedVideo.checked = youtubeHelper.getInvidiousRelatedVideos(); - annotations.checked = youtubeHelper.getInvidiousAnnotations(); - extendDesc.checked = youtubeHelper.getInvidiousExtendDesc(); - vrMode.checked = youtubeHelper.getInvidiousVrMode(); - savePlayerPos.checked = youtubeHelper.getInvidiousSavePlayerPos(); - - region.value = youtubeHelper.getInvidiousRegion(); - darkMode.value = youtubeHelper.getInvidiousDarkMode(); - thin_mode.checked = youtubeHelper.getInvidiousThinMode(); - default_home.value = youtubeHelper.getInvidiousDefaultHome(); - - feed_menu0.value = youtubeHelper.getInvidiousFeedMenuList()[0]; - feed_menu1.value = youtubeHelper.getInvidiousFeedMenuList()[1]; - - browser.storage.local.get("invidiousLatency").then(r => { - commonHelper.processDefaultCustomInstances( - 'invidious', - 'normal', - youtubeHelper, - document, - youtubeHelper.getInvidiousNormalRedirectsChecks, - youtubeHelper.setInvidiousNormalRedirectsChecks, - youtubeHelper.getInvidiousNormalCustomRedirects, - youtubeHelper.setInvidiousNormalCustomRedirects, - r.invidiousLatency - ); - }) - - commonHelper.processDefaultCustomInstances( - 'invidious', - 'tor', - youtubeHelper, - document, - youtubeHelper.getInvidiousTorRedirectsChecks, - youtubeHelper.setInvidiousTorRedirectsChecks, - youtubeHelper.getInvidiousTorCustomRedirects, - youtubeHelper.setInvidiousTorCustomRedirects - ); - }); + 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", + ], + r => { + videoLoop.checked = r.invidiousVideoLoop; + autoplay.checked = r.youtubeAutoplay; + playerStyle.value = r.invidiousPlayerStyle; + + continueAutoplay.checked = r.invidiousContinueAutoplay; + invidiousContinue.checked = r.invidiousContinue; + alwaysProxy.checked = r.invidiousAlwaysProxy; + youtubeListen.checked = r.youtubeListen; + + speed.value = r.invidiousSpeed; + quality.value = r.invidiousQuality; + qualityDash.value = r.invidiousQualityDash; + + volume.value = r.youtubeVolume; + volumeValue.textContent = `${r.youtubeVolume}%`; + + comments0.value = r.invidiousComments[0]; + comments1.value = r.invidiousComments[1]; + + captions0.value = r.invidiousCaptions[0]; + captions1.value = r.invidiousCaptions[1]; + captions2.value = r.invidiousCaptions[2]; + + relatedVideo.checked = r.invidiousRelatedVideos; + annotations.checked = r.invidiousAnnotations; + extendDesc.checked = r.invidiousExtendDesc; + vrMode.checked = r.invidiousVrMode; + savePlayerPos.checked = r.invidiousSavePlayerPos; + + region.value = r.invidiousRegion; + darkMode.value = r.invidiousDarkMode; + thin_mode.checked = r.invidiousThinMode; + default_home.value = r.invidiousDefaultHome; + + feed_menu0.value = r.invidiousFeedMenuList[0]; + feed_menu1.value = r.invidiousFeedMenuList[1]; + + commonHelper.processDefaultCustomInstances('invidious', 'normal', youtubeHelper, document); + commonHelper.processDefaultCustomInstances('invidious', 'tor', youtubeHelper, document); + } + ) } -init() +init(); let latencyInvidiousElement = document.getElementById("latency-invidious"); let latencyInvidiousLabel = document.getElementById("latency-invidious-label"); @@ -160,17 +172,7 @@ latencyInvidiousElement.addEventListener("click", commonHelper.testLatency(latencyInvidiousLabel, redirects.invidious.normal).then(r => { browser.storage.local.set({ invidiousLatency: r }); latencyInvidiousLabel.innerHTML = oldHtml; - commonHelper.processDefaultCustomInstances( - 'invidious', - 'normal', - youtubeHelper, - document, - youtubeHelper.getInvidiousNormalRedirectsChecks, - youtubeHelper.setInvidiousNormalRedirectsChecks, - youtubeHelper.getInvidiousNormalCustomRedirects, - youtubeHelper.setInvidiousNormalCustomRedirects, - r, - ); + commonHelper.processDefaultCustomInstances('invidious', 'normal', youtubeHelper, document); latencyInvidiousElement.removeEventListener("click", reloadWindow); }); } diff --git a/src/pages/options/youtube/piped.js b/src/pages/options/youtube/piped.js index a0bc45a7..6e30b8e6 100644 --- a/src/pages/options/youtube/piped.js +++ b/src/pages/options/youtube/piped.js @@ -44,7 +44,6 @@ function selectSkipModify(value, boolean) { } let selectSkip = []; piped.addEventListener("change", async () => { - console.log("changed piped settings"); let pipedEnabledCodecsResult = []; for (const opt of pipedEnabledCodecs.options) if (opt.selected) pipedEnabledCodecsResult.push(opt.value); @@ -59,7 +58,7 @@ piped.addEventListener("change", async () => { selectSkipModify('poi_highlight', pipedSelectedSkipPoiHighlight.checked); selectSkipModify('filler', pipedSelectedSkipFiller.checked); - await youtubeHelper.setYoutubeSettings({ + await browser.storage.local.set({ pipedQuality: pipedQuality.value, pipedBufferGoal: pipedBufferGoal.value, pipedRegion: pipedRegion.value, @@ -80,89 +79,78 @@ piped.addEventListener("change", async () => { init(); }); -function init() { - youtubeHelper.init().then(() => { - pipedSponsorblock.checked = youtubeHelper.getPipedSponsorblock(); - pipedDdlTheme.value = youtubeHelper.getPipedDdlTheme(); - selectSkip = youtubeHelper.getPipedSelectedSkip(); - pipedSelectedSkipSponsor.checked = selectSkip.includes('sponsor'); - pipedSelectedSkipIntro.checked = selectSkip.includes('intro'); - pipedSelectedSkipOutro.checked = selectSkip.includes('outro'); - pipedSelectedSkipPreview.checked = selectSkip.includes('preview'); - autoplay.checked = youtubeHelper.getAutoplay(); - pipedSelectedSkipInteraction.checked = selectSkip.includes('interaction'); - pipedSelectedSkipSelfpromo.checked = selectSkip.includes('selfpromo'); - pipedSelectedSkipMusicOfftopic.checked = selectSkip.includes('music_offtopic'); - pipedSelectedSkipPoiHighlight.checked = selectSkip.includes('poi_highlight'); - pipedSelectedSkipFiller.checked = selectSkip.includes('filler'); - pipedListen.checked = youtubeHelper.getYoutubeListen(); - pipedQuality.value = youtubeHelper.getPipedQuality(); - pipedBufferGoal.value = youtubeHelper.getPipedBufferGoal(); - pipedRegion.value = youtubeHelper.getPipedRegion(); - pipedHomepage.value = youtubeHelper.getPipedHomepage(); - pipedComments.checked = youtubeHelper.getPipedComments(); - pipedMinimizeDescription.checked = youtubeHelper.getPipedMinimizeDescription(); - pipedWatchHistory.checked = youtubeHelper.getPipedWatchHistory(); - pipedEnabledCodecs.value = youtubeHelper.getPipedEnabledCodecs(); - pipedDisableLBRY.checked = youtubeHelper.getPipedDisableLBRY(); - pipedProxyLBRY.checked = youtubeHelper.getPipedProxyLBRY(); +async function init() { + await browser.storage.local.get( + [ + "youtubeVolume", + "youtubeAutoplay", + "youtubeListen", - volume.value = youtubeHelper.getVolume(); - volumeValue.textContent = `${youtubeHelper.getVolume()}%`; + "pipedBufferGoal", + "pipedComments", + "pipedDisableLBRY", + "pipedEnabledCodecs", + "pipedHomepage", + "pipedMinimizeDescription", + "pipedProxyLBRY", + "pipedQuality", + "pipedRegion", + "pipedSelectedSkip", + "pipedSponsorblock", + "pipedDdlTheme", + "pipedWatchHistory", + ], + r => { + pipedSponsorblock.checked = r.pipedSponsorblock; + pipedDdlTheme.value = r.pipedDdlTheme; + selectSkip = r.pipedSelectedSkip; + pipedSelectedSkipSponsor.checked = selectSkip.includes('sponsor'); + pipedSelectedSkipIntro.checked = selectSkip.includes('intro'); + pipedSelectedSkipOutro.checked = selectSkip.includes('outro'); + pipedSelectedSkipPreview.checked = selectSkip.includes('preview'); + autoplay.checked = r.youtubeAutoplay; + pipedSelectedSkipInteraction.checked = selectSkip.includes('interaction'); + pipedSelectedSkipSelfpromo.checked = selectSkip.includes('selfpromo'); + pipedSelectedSkipMusicOfftopic.checked = selectSkip.includes('music_offtopic'); + pipedSelectedSkipPoiHighlight.checked = selectSkip.includes('poi_highlight'); + pipedSelectedSkipFiller.checked = selectSkip.includes('filler'); + pipedListen.checked = r.youtubeListen; + pipedQuality.value = r.pipedQuality; + pipedBufferGoal.value = r.pipedBufferGoal; + pipedRegion.value = r.pipedRegion; + pipedHomepage.value = r.pipedHomepage; + pipedComments.checked = r.pipedComments; + pipedMinimizeDescription.checked = r.pipedMinimizeDescription; + pipedWatchHistory.checked = r.pipedWatchHistory; + pipedEnabledCodecs.value = r.pipedEnabledCodecs; + pipedDisableLBRY.checked = r.pipedDisableLBRY; + pipedProxyLBRY.checked = r.pipedProxyLBRY; - browser.storage.local.get("pipedLatency").then(r => { - commonHelper.processDefaultCustomInstances( - 'piped', - 'normal', - youtubeHelper, - document, - youtubeHelper.getPipedNormalRedirectsChecks, - youtubeHelper.setPipedNormalRedirectsChecks, - youtubeHelper.getPipedNormalCustomRedirects, - youtubeHelper.setPipedNormalCustomRedirects, - r.pipedLatency, - ); - }); + volume.value = r.youtubeVolume; + volumeValue.textContent = `${r.youtubeVolume}%`; - commonHelper.processDefaultCustomInstances( - 'piped', - 'tor', - youtubeHelper, - document, - youtubeHelper.getPipedTorRedirectsChecks, - youtubeHelper.setPipedTorRedirectsChecks, - youtubeHelper.getPipedTorCustomRedirects, - youtubeHelper.setPipedTorCustomRedirects - ); - }); + commonHelper.processDefaultCustomInstances('piped', 'normal', youtubeHelper, document); + commonHelper.processDefaultCustomInstances('piped', 'tor', youtubeHelper, document); + } + ); } init(); let latencyPipedElement = document.getElementById("latency-piped"); let latencyPipedLabel = document.getElementById("latency-piped-label"); latencyPipedElement.addEventListener("click", - async () => { - let reloadWindow = () => location.reload(); - latencyPipedElement.addEventListener("click", reloadWindow); - await youtubeHelper.init(); - let redirects = youtubeHelper.getRedirects(); - const oldHtml = latencyPipedLabel.innerHTML; - latencyPipedLabel.innerHTML = '...'; - commonHelper.testLatency(latencyPipedLabel, redirects.piped.normal).then(r => { - browser.storage.local.set({ pipedLatency: r }); - latencyPipedLabel.innerHTML = oldHtml; - commonHelper.processDefaultCustomInstances( - 'piped', - 'normal', - youtubeHelper, - document, - youtubeHelper.getPipedNormalRedirectsChecks, - youtubeHelper.setPipedNormalRedirectsChecks, - youtubeHelper.getPipedNormalCustomRedirects, - youtubeHelper.setPipedNormalCustomRedirects, - r, - ); - latencyPipedElement.removeEventListener("click", reloadWindow); - }); - } + async () => { + let reloadWindow = () => location.reload(); + latencyPipedElement.addEventListener("click", reloadWindow); + await youtubeHelper.init(); + let redirects = youtubeHelper.getRedirects(); + const oldHtml = latencyPipedLabel.innerHTML; + latencyPipedLabel.innerHTML = '...'; + commonHelper.testLatency(latencyPipedLabel, redirects.piped.normal).then(r => { + browser.storage.local.set({ pipedLatency: r }); + latencyPipedLabel.innerHTML = oldHtml; + commonHelper.processDefaultCustomInstances('piped', 'normal', youtubeHelper, document); + latencyPipedElement.removeEventListener("click", reloadWindow); + }); + } ); diff --git a/src/pages/options/youtube/pipedMaterial.js b/src/pages/options/youtube/pipedMaterial.js index bc31289a..7c647b18 100644 --- a/src/pages/options/youtube/pipedMaterial.js +++ b/src/pages/options/youtube/pipedMaterial.js @@ -44,7 +44,7 @@ pipedMaterialElement.addEventListener("change", async () => { selectSkipModify('selfpromo', selectedSkipSelfpromoElement.checked); selectSkipModify('music_offtopic', selectedSkipMusicOfftopicElement.checked); - await youtubeHelper.setYoutubeSettings({ + await browser.storage.local.set({ youtubeListen: listenElement.checked, pipedDisableLBRY: disableLBRYElement.checked, pipedProxyLBRY: proxyLBRYElement.checked, @@ -68,77 +68,61 @@ pipedMaterialElement.addEventListener("change", async () => { }); function init() { - youtubeHelper.init().then(() => { - autoplayElement.checked = youtubeHelper.getAutoplay(); - - listenElement.checked = youtubeHelper.getYoutubeListen(); - disableLBRYElement.checked = youtubeHelper.getPipedDisableLBRY(); - proxyLBRYElement.checked = youtubeHelper.getPipedProxyLBRY(); - sponsorblockElement.checked = youtubeHelper.getPipedSponsorblock(); - skipToLastPointElement.checked = youtubeHelper.getPipedMaterialSkipToLastPoint(); - selectedSkipSponsorElement.checked = selectSkip.includes('sponsors'); - selectedSkipIntroElement.checked = selectSkip.includes('intro'); - selectedSkipOutroElement.checked = selectSkip.includes('outro'); - selectedSkipPreviewElement.checked = selectSkip.includes('preview'); - selectedSkipInteractionElement.checked = selectSkip.includes('interaction'); - selectedSkipSelfpromoElement.checked = selectSkip.includes('selfpromo'); - selectedSkipMusicOfftopicElement.checked = selectSkip.includes('music_offtopic'); - - volumeElement.value = youtubeHelper.getVolume(); - volumeValueElement.textContent = `${youtubeHelper.getVolume()}%`; - browser.storage.local.get("pipedMaterialLatency").then(r => { - commonHelper.processDefaultCustomInstances( - 'pipedMaterial', - 'normal', - youtubeHelper, - document, - youtubeHelper.getPipedMaterialNormalRedirectsChecks, - youtubeHelper.setPipedMaterialNormalRedirectsChecks, - youtubeHelper.getPipedMaterialNormalCustomRedirects, - youtubeHelper.setPipedMaterialNormalCustomRedirects, - r.pipedMaterialLatency, - ); - }); + browser.storage.local.get( + [ + "youtubeAutoplay", + "youtubeVolume", + "youtubeListen", - commonHelper.processDefaultCustomInstances( - 'pipedMaterial', - 'tor', - youtubeHelper, - document, - youtubeHelper.getPipedMaterialTorRedirectsChecks, - youtubeHelper.setPipedMaterialTorRedirectsChecks, - youtubeHelper.getPipedMaterialTorCustomRedirects, - youtubeHelper.setPipedMaterialTorCustomRedirects - ); - }); + "pipedDisableLBRY", + "pipedProxyLBRY", + "pipedSelectedSkip", + "pipedSponsorblock", + + "pipedMaterialSkipToLastPoint", + ], + r => { + autoplayElement.checked = r.youtubeAutoplay; + + listenElement.checked = r.youtubeListen; + disableLBRYElement.checked = r.pipedDisableLBRY; + proxyLBRYElement.checked = r.pipedProxyLBRY; + sponsorblockElement.checked = r.pipedSponsorblock; + skipToLastPointElement.checked = r.pipedMaterialSkipToLastPoint; + + selectSkip = r.pipedSelectedSkip; + selectedSkipSponsorElement.checked = selectSkip.includes('sponsors'); + selectedSkipIntroElement.checked = selectSkip.includes('intro'); + selectedSkipOutroElement.checked = selectSkip.includes('outro'); + selectedSkipPreviewElement.checked = selectSkip.includes('preview'); + selectedSkipInteractionElement.checked = selectSkip.includes('interaction'); + selectedSkipSelfpromoElement.checked = selectSkip.includes('selfpromo'); + selectedSkipMusicOfftopicElement.checked = selectSkip.includes('music_offtopic'); + + volumeElement.value = r.youtubeVolume; + volumeValueElement.textContent = `${r.youtubeVolume}%`; + + commonHelper.processDefaultCustomInstances('pipedMaterial', 'normal', youtubeHelper, document); + commonHelper.processDefaultCustomInstances('pipedMaterial', 'tor', youtubeHelper, document); + }); } init(); let latencyPipedMaterialElement = document.getElementById("latency-pipedMaterial"); let latencyPipedMaterialLabel = document.getElementById("latency-pipedMaterial-label"); latencyPipedMaterialElement.addEventListener("click", - async () => { - let reloadWindow = () => location.reload(); - latencyPipedMaterialElement.addEventListener("click", reloadWindow); - await youtubeHelper.init(); - let redirects = youtubeHelper.getRedirects(); - const oldHtml = latencyPipedMaterialLabel.innerHTML; - latencyPipedMaterialLabel.innerHTML = '...'; - commonHelper.testLatency(latencyPipedMaterialLabel, redirects.pipedMaterial.normal).then(r => { - browser.storage.local.set({ pipedMaterialLatency: r }); - latencyPipedMaterialLabel.innerHTML = oldHtml; - commonHelper.processDefaultCustomInstances( - 'pipedMaterial', - 'normal', - youtubeHelper, - document, - youtubeHelper.getPipedMaterialNormalRedirectsChecks, - youtubeHelper.setPipedMaterialNormalRedirectsChecks, - youtubeHelper.getPipedMaterialNormalCustomRedirects, - youtubeHelper.setPipedMaterialNormalCustomRedirects, - r, - ); - latencyPipedMaterialElement.removeEventListener("click", reloadWindow); - }); - } + async () => { + let reloadWindow = () => location.reload(); + latencyPipedMaterialElement.addEventListener("click", reloadWindow); + await youtubeHelper.init(); + let redirects = youtubeHelper.getRedirects(); + const oldHtml = latencyPipedMaterialLabel.innerHTML; + latencyPipedMaterialLabel.innerHTML = '...'; + commonHelper.testLatency(latencyPipedMaterialLabel, redirects.pipedMaterial.normal).then(r => { + browser.storage.local.set({ pipedMaterialLatency: r }); + latencyPipedMaterialLabel.innerHTML = oldHtml; + commonHelper.processDefaultCustomInstances('pipedMaterial', 'normal', youtubeHelper, document); + latencyPipedMaterialElement.removeEventListener("click", reloadWindow); + }); + } ); \ No newline at end of file diff --git a/src/pages/options/youtube/youtube.js b/src/pages/options/youtube/youtube.js index 5f915251..71ae4777 100644 --- a/src/pages/options/youtube/youtube.js +++ b/src/pages/options/youtube/youtube.js @@ -95,9 +95,8 @@ function changeProtocolSettings(protocol) { } } - -document.addEventListener("change", () => { - youtubeHelper.setYoutubeSettings({ +document.addEventListener("change", async () => { + await browser.storage.local.set({ disableYoutube: !disableYoutubeElement.checked, youtubeFrontend: youtubeFrontendElement.value, youtubeEmbedFrontend: youtubeEmbedFrontendElement.value, @@ -111,24 +110,43 @@ document.addEventListener("change", () => { changeFrontendsSettings(); }) -youtubeHelper.init().then(() => { - disableYoutubeElement.checked = !youtubeHelper.getDisable(); - enableYoutubeCustomSettingsElement.checked = youtubeHelper.getEnableCustomSettings(); - - OnlyEmbeddedVideoElement.value = youtubeHelper.getOnlyEmbeddedVideo(); - bypassWatchOnYoutubeElement.checked = youtubeHelper.getBypassWatchOnYoutube(); - - let frontend = youtubeHelper.getFrontend(); - youtubeFrontendElement.value = frontend; - changeFrontendsSettings(); +browser.storage.local.get( + [ + "disableYoutube", + "enableYoutubeCustomSettings", + "OnlyEmbeddedVideo", + "youtubeRedirects", + "youtubeFrontend", + + "alwaysUsePreferred", + "youtubeEmbedFrontend", + "youtubeProtocol", + "bypassWatchOnYoutube", + ], + r => { + disableYoutubeElement.checked = !r.disableYoutube; + enableYoutubeCustomSettingsElement.checked = r.enableYoutubeCustomSettings; + + OnlyEmbeddedVideoElement.value = r.OnlyEmbeddedVideo; + bypassWatchOnYoutubeElement.checked = r.bypassWatchOnYoutube; + + let frontend = r.youtubeFrontend; + youtubeFrontendElement.value = frontend; + changeFrontendsSettings(); + + let protocol = r.youtubeProtocol; + protocolElement.value = protocol; + changeProtocolSettings(protocol); + + let youtubeEmbedFrontend = r.youtubeEmbedFrontend; + youtubeEmbedFrontendElement.value = youtubeEmbedFrontend + if (frontend == "freetube" || frontend == "yatte") { + changeYoutubeEmbedFrontendsSettings(youtubeEmbedFrontend) + }; + } +); - let protocol = youtubeHelper.getProtocol(); - protocolElement.value = protocol; - changeProtocolSettings(protocol); - let youtubeEmbedFrontend = youtubeHelper.getYoutubeEmbedFrontend() - youtubeEmbedFrontendElement.value = youtubeEmbedFrontend - if (frontend == "freetube" || frontend == "yatte") { - changeYoutubeEmbedFrontendsSettings(youtubeEmbedFrontend) - }; -}); +window.onblur = () => { + youtubeHelper.initInvidiousCookies(); +} \ No newline at end of file |