From 42dbb68ee00d41ac270df1a93acf29c4d17c8db1 Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Thu, 12 May 2022 04:22:12 +0300 Subject: [PATCH] Reorganized pug files. Added Unify settings to libreddit #234 --- pug/options/reddit/reddit.pug | 128 -------- script.sh | 2 +- src/assets/javascripts/helpers/common.js | 39 +-- src/assets/javascripts/helpers/reddit.js | 277 +++++++----------- src/pages/background/background.js | 9 - .../pages}/options/general/general.pug | 0 {pug => src/pages}/options/imgur/imgur.pug | 0 .../pages}/options/instagram/instagram.pug | 0 {pug => src/pages}/options/lbry/lbry.pug | 0 {pug => src/pages}/options/maps/maps.pug | 0 {pug => src/pages}/options/medium/medium.pug | 0 .../pages}/options/peertube/peertube.pug | 0 src/pages/options/reddit/reddit.html | 98 +------ src/pages/options/reddit/reddit.js | 68 +---- src/pages/options/reddit/reddit.pug | 65 ++++ {pug => src/pages}/options/search/search.pug | 0 .../options/sendTargets/sendTargets.pug | 0 {pug => src/pages}/options/tiktok/tiktok.pug | 0 .../pages}/options/translate/translate.pug | 0 .../pages}/options/twitter/twitter.pug | 0 .../pages}/options/wikipedia/wikipedia.pug | 0 .../pages}/options/youtube/youtube.pug | 0 .../options/youtubeMusic/youtubeMusic.pug | 0 src/pages/popup/popup.js | 37 +-- src/pages/stylesheets/styles.css | 11 + .../pages}/widgets/captions_options.pug | 0 {pug => src/pages}/widgets/from-to.pug | 0 {pug => src/pages}/widgets/head.pug | 0 {pug => src/pages}/widgets/instances.pug | 0 {pug => src/pages}/widgets/latency.pug | 0 {pug => src/pages}/widgets/links.pug | 0 31 files changed, 237 insertions(+), 497 deletions(-) delete mode 100644 pug/options/reddit/reddit.pug rename {pug => src/pages}/options/general/general.pug (100%) rename {pug => src/pages}/options/imgur/imgur.pug (100%) rename {pug => src/pages}/options/instagram/instagram.pug (100%) rename {pug => src/pages}/options/lbry/lbry.pug (100%) rename {pug => src/pages}/options/maps/maps.pug (100%) rename {pug => src/pages}/options/medium/medium.pug (100%) rename {pug => src/pages}/options/peertube/peertube.pug (100%) create mode 100644 src/pages/options/reddit/reddit.pug rename {pug => src/pages}/options/search/search.pug (100%) rename {pug => src/pages}/options/sendTargets/sendTargets.pug (100%) rename {pug => src/pages}/options/tiktok/tiktok.pug (100%) rename {pug => src/pages}/options/translate/translate.pug (100%) rename {pug => src/pages}/options/twitter/twitter.pug (100%) rename {pug => src/pages}/options/wikipedia/wikipedia.pug (100%) rename {pug => src/pages}/options/youtube/youtube.pug (100%) rename {pug => src/pages}/options/youtubeMusic/youtubeMusic.pug (100%) rename {pug => src/pages}/widgets/captions_options.pug (100%) rename {pug => src/pages}/widgets/from-to.pug (100%) rename {pug => src/pages}/widgets/head.pug (100%) rename {pug => src/pages}/widgets/instances.pug (100%) rename {pug => src/pages}/widgets/latency.pug (100%) rename {pug => src/pages}/widgets/links.pug (100%) diff --git a/pug/options/reddit/reddit.pug b/pug/options/reddit/reddit.pug deleted file mode 100644 index 1b51ccae..00000000 --- a/pug/options/reddit/reddit.pug +++ /dev/null @@ -1,128 +0,0 @@ -doctype html -html(lang="en") - include ../../widgets/head.pug - title General -script(type="module" src="../../../assets/javascripts/localise.js") -body.option(dir="auto") - include ../../widgets/links.pug - +links('reddit') - - section.option-block - .some-block.option-block - h4(data-localise="__MSG_enable__") Enable - input#disable-reddit(type="checkbox") - - .some-block.option-block - h4#frontend(data-localise="__MSG_frontend__") Frontend - select#reddit-frontend - option(value="libreddit") Libreddit - option(value="teddit") Teddit - - .some-block.option-block - h4(data-localise="__MSG_protocol__") Protocol - select#protocol - option(value="normal" data-localise="__MSG_normal__") Normal - option(value="tor" data-localise="__MSG_tor__") Tor - - .some-block.option-block - h4(data-localise="__MSG_bypassReddit__") Bypass "Open in Reddit" - input#bypass-watch-on-reddit(type="checkbox") - - #libreddit - .some-block.option-block - h4(data-localise="__MSG_enableCustomSettings__") Enable Custom Settings (will use cookies) - input#enable-libreddit-custom-settings(type="checkbox") - hr - .custom-settings - .some-block.option-block - h2 Appearance - .some-block.option-block - h4(data-localise="__MSG_theme__") Theme - select.theme - option(value="system" ) System - option(value="light" ) Light - option(value="dark" ) Dark - option(value="black" ) Black - option(value="dracula" ) Dracula - option(value="nord" ) Nord - option(value="laserwave" ) Laserwave - option(value="violet" ) Violet - option(value="gold" ) Gold - - .some-block.option-block - h2 Interface - .some-block.option-block - h4(data-localise="__MSG_frontPage__") Front page - select.front_page - option(value="default") Default - option(value="popular") Popular - option(value="all") All - - .some-block.option-block - h4(data-localise="__MSG_frontLayout__") Front Layout - select.layout - option(value="card") Card - option(value="clean") Clean - option(value="compact") Compact - - .some-block.option-block - h4(data-localise="__MSG_wideUI__") Wide UI - input.wide(type="checkbox") - - .some-block.option-block - h2 Content - .some-block.option-block - h4(data-localise="__MSG_defaultSubredditPostSort__") Default subreddit post sort - select.post_sort - option(value="hot") Hot - option(value="new") New - option(value="top") Top - option(value="rising") Rising - option(value="controversial") Controversial - - .some-block.option-block - h4(data-localise="__MSG_defaultCommentSort__") Default comment sort - select.comment_sort - option(value="confidence") Confidence - option(value="top") Top - option(value="new") New - option(value="controversial") Controversial - option(value="old") Old - - .some-block.option-block - h4(data-localise="__MSG_showNsfwPosts__") Show NSFW posts - input.show_nsfw(type="checkbox") - - .some-block.option-block - h4(data-localise="__MSG_autoplayVideos__") Autoplay videos - input.autoplay_videos(type="checkbox") - - .some-block.option-block - h4(data-localise="__MSG_useHlsForVideos__") Use HLS for videos - input.use_hls(type="checkbox") - - .some-block.option-block - h4(data-localise="__MSG_hideNotificationAboutPossibleHlsUsage__") Hide notification about possible HLS usage - input.hide_hls_notification(type="checkbox") - - .normal - include ../../widgets/instances.pug - +instances('https://libreddit.com') - include ../../widgets/latency.pug - +latency('libreddit') - .tor - include ../../widgets/instances.pug - +instances('https://libreddit.onion') - - #teddit - hr - .normal - include ../../widgets/instances.pug - +instances('https://teddit.com') - +latency('teddit') - .tor - include ../../widgets/instances.pug - +instances('https://teddit.onion') - - script(type="module" src="../init.js") - script(type="module" src="./reddit.js") \ No newline at end of file diff --git a/script.sh b/script.sh index 10746503..6856920c 100644 --- a/script.sh +++ b/script.sh @@ -1 +1 @@ -pug ./pug/options/ -o ./src/pages/options/ -P -w \ No newline at end of file +pug ./src/pages/options/ -P -w \ No newline at end of file diff --git a/src/assets/javascripts/helpers/common.js b/src/assets/javascripts/helpers/common.js index 7b3a20a5..f0da54c9 100644 --- a/src/assets/javascripts/helpers/common.js +++ b/src/assets/javascripts/helpers/common.js @@ -128,7 +128,6 @@ async function processDefaultCustomInstances( async function getFromStorage() { return new Promise(async resolve => { - browser.storage.local.get( [ redirectsChecks, @@ -158,16 +157,6 @@ async function processDefaultCustomInstances( if (nameDefaultRedirects.length == 0) isTrue = false; nameProtocolElement.getElementsByClassName('toogle-all')[0].checked = isTrue; } - - async function setRedirectsChecks(val) { - await browser.storage.local.set({ [redirectsChecks]: val }); - } - - async function setCustom(val) { - await browser.storage.local.set({ [customRedirects]: val }); - } - - nameCheckListElement.innerHTML = [ `
@@ -182,7 +171,10 @@ async function processDefaultCustomInstances( let latencyLimit = (instancesLatency[x] == 5000 ? '5000ms+' : instancesLatency[x] + 'ms') let latency = x in instancesLatency ? '' + latencyLimit + '' : ''; - return `
${x}${cloudflare} ${latency}
`; + return `
+ ${x}${cloudflare} ${latency} + +
`; } ), ].join('\n
\n'); @@ -196,7 +188,7 @@ async function processDefaultCustomInstances( else nameDefaultRedirects = []; - await setRedirectsChecks(nameDefaultRedirects); + await browser.storage.local.set({ [redirectsChecks]: nameDefaultRedirects }); calcNameCheckBoxes(); }); @@ -209,7 +201,7 @@ async function processDefaultCustomInstances( let index = nameDefaultRedirects.indexOf(element.className); if (index > -1) nameDefaultRedirects.splice(index, 1); } - await setRedirectsChecks(nameDefaultRedirects); + await browser.storage.local.set({ [redirectsChecks]: nameDefaultRedirects }); calcNameCheckBoxes(); }); } @@ -229,16 +221,16 @@ async function processDefaultCustomInstances( ).join('\n'); for (const item of nameCustomInstances) { - nameProtocolElement.getElementsByClassName(`clear-${item}`)[0].addEventListener("click", () => { + nameProtocolElement.getElementsByClassName(`clear-${item}`)[0].addEventListener("click", async () => { let index = nameCustomInstances.indexOf(item); if (index > -1) nameCustomInstances.splice(index, 1); - setCustom(nameCustomInstances); + await browser.storage.local.set({ [customRedirects]: nameCustomInstances }); calcNameCustomInstances(); }); } } calcNameCustomInstances(); - nameProtocolElement.getElementsByClassName('custom-instance-form')[0].addEventListener("submit", event => { + nameProtocolElement.getElementsByClassName('custom-instance-form')[0].addEventListener("submit", async event => { event.preventDefault(); let nameCustomInstanceInput = nameProtocolElement.getElementsByClassName('custom-instance')[0]; let url = new URL(nameCustomInstanceInput.value); @@ -246,7 +238,7 @@ async function processDefaultCustomInstances( if (nameCustomInstanceInput.validity.valid && !redirects[name][protocol].includes(protocolHostVar)) { if (!nameCustomInstances.includes(protocolHostVar)) { nameCustomInstances.push(protocolHostVar) - setCustom(nameCustomInstances); + await browser.storage.local.set({ [customRedirects]: nameCustomInstances }); nameCustomInstanceInput.value = ''; } calcNameCustomInstances(); @@ -298,6 +290,16 @@ async function testLatency(element, instances) { resolve(myList); }) } + +function copyCookie(targetUrl, url, name) { + browser.cookies.get( + { url: protocolHost(targetUrl), name: name }, + r => { + if (r) browser.cookies.set({ url: url, name: name, value: r.value }) + } + ) +} + export default { getRandomInstance, updateInstances, @@ -305,4 +307,5 @@ export default { processDefaultCustomInstances, isRtl, testLatency, + copyCookie } diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js index 7c123797..04ac2a4b 100644 --- a/src/assets/javascripts/helpers/reddit.js +++ b/src/assets/javascripts/helpers/reddit.js @@ -39,14 +39,14 @@ function setLibredditRedirects(val) { var index = libredditNormalRedirectsChecks.indexOf(item); if (index !== -1) libredditNormalRedirectsChecks.splice(index, 1); } - setLibredditNormalRedirectsChecks(libredditNormalRedirectsChecks); + browser.storage.local.set({ libredditNormalRedirectsChecks }) for (const item of libredditTorRedirectsChecks) if (!redirects.libreddit.normal.includes(item)) { var index = libredditTorRedirectsChecks.indexOf(item); if (index !== -1) libredditTorRedirectsChecks.splice(index, 1); } - setLibredditTorRedirectsChecks(libredditTorRedirectsChecks); + browser.storage.local.set({ libredditTorRedirectsChecks }) } function setTedditRedirects(val) { @@ -58,79 +58,25 @@ function setTedditRedirects(val) { var index = tedditNormalRedirectsChecks.indexOf(item); if (index !== -1) tedditNormalRedirectsChecks.splice(index, 1); } - setTedditNormalRedirectsChecks(tedditNormalRedirectsChecks); + browser.storage.local.set({ tedditNormalRedirectsChecks }) for (const item of tedditTorRedirectsChecks) if (!redirects.teddit.normal.includes(item)) { var index = tedditTorRedirectsChecks.indexOf(item); if (index !== -1) tedditTorRedirectsChecks.splice(index, 1); } - setTedditTorRedirectsChecks(tedditTorRedirectsChecks); + browser.storage.local.set({ tedditTorRedirectsChecks }) } let libredditNormalRedirectsChecks; -const getLibredditNormalRedirectsChecks = () => libredditNormalRedirectsChecks; -function setLibredditNormalRedirectsChecks(val) { - libredditNormalRedirectsChecks = val; - browser.storage.local.set({ libredditNormalRedirectsChecks }) - console.log("libredditNormalRedirectsChecks: ", val) -} - let libredditTorRedirectsChecks; -const getLibredditTorRedirectsChecks = () => libredditTorRedirectsChecks; -function setLibredditTorRedirectsChecks(val) { - libredditTorRedirectsChecks = val; - browser.storage.local.set({ libredditTorRedirectsChecks }) - console.log("libredditTorRedirectsChecks: ", val) -} - let libredditNormalCustomRedirects = []; -const getLibredditNormalCustomRedirects = () => libredditNormalCustomRedirects; -function setLibredditNormalCustomRedirects(val) { - libredditNormalCustomRedirects = val; - browser.storage.local.set({ libredditNormalCustomRedirects }) - console.log("libredditNormalCustomRedirects: ", val) -} - let libredditTorCustomRedirects = []; -const getLibredditTorCustomRedirects = () => libredditTorCustomRedirects; -function setLibredditTorCustomRedirects(val) { - libredditTorCustomRedirects = val; - browser.storage.local.set({ libredditTorCustomRedirects }) - console.log("libredditTorCustomRedirects: ", val) -} let tedditNormalRedirectsChecks; -const getTedditNormalRedirectsChecks = () => tedditNormalRedirectsChecks; -function setTedditNormalRedirectsChecks(val) { - tedditNormalRedirectsChecks = val; - browser.storage.local.set({ tedditNormalRedirectsChecks }) - console.log("tedditNormalRedirectsChecks: ", val) -} - let tedditTorRedirectsChecks; -const getTedditTorRedirectsChecks = () => tedditTorRedirectsChecks; -function setTedditTorRedirectsChecks(val) { - tedditTorRedirectsChecks = val; - browser.storage.local.set({ tedditTorRedirectsChecks }) - console.log("tedditTorRedirectsChecks: ", val) -} - let tedditNormalCustomRedirects = []; -const getTedditNormalCustomRedirects = () => tedditNormalCustomRedirects; -function setTedditNormalCustomRedirects(val) { - tedditNormalCustomRedirects = val; - browser.storage.local.set({ tedditNormalCustomRedirects }) - console.log("tedditNormalCustomRedirects: ", val) -} - let tedditTorCustomRedirects = []; -const getTedditTorCustomRedirects = () => tedditTorCustomRedirects; -function setTedditTorCustomRedirects(val) { - tedditTorCustomRedirects = val; - browser.storage.local.set({ tedditTorCustomRedirects }) - console.log("tedditTorCustomRedirects: ", val) -} const bypassPaths = /\/(gallery\/poll\/rpan\/settings\/topics)/; @@ -145,54 +91,49 @@ let frontend; let protocol; let bypassWatchOnReddit; -let enableCustom; +function initLibredditCookies(targetUrl) { + browser.storage.local.get( + [ + "redditProtocol", + "libredditNormalRedirectsChecks", + "libredditNormalCustomRedirects", + "libredditTorRedirectsChecks", + "libredditTorCustomRedirects", + ], + r => { + let checkedInstances; + if (r.redditProtocol == 'normal') checkedInstances = [...r.libredditNormalRedirectsChecks, ...r.libredditNormalCustomRedirects]; + else if (r.redditProtocol == 'tor') checkedInstances = [...r.libredditTorRedirectsChecks, ...r.libredditTorCustomRedirects]; -let theme; -let front_page; -let layout; -let wide; -let post_sort; -let comment_sort; -let show_nsfw; -let autoplay_videos; -let use_hls; -let hide_hls_notification; - -function initLibredditCookies() { - if (enableCustom) { - let checkedInstances; - if (protocol == 'normal') checkedInstances = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]; - else if (protocol == 'tor') checkedInstances = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]; - - for (const instance of checkedInstances) { - browser.cookies.set({ url: instance, name: "theme", value: theme }) - browser.cookies.set({ url: instance, name: "front_page", value: front_page }) - browser.cookies.set({ url: instance, name: "layout", value: layout }) - browser.cookies.set({ url: instance, name: "wide", value: wide ? 'on' : 'off' }) - browser.cookies.set({ url: instance, name: "post_sort", value: post_sort }) - browser.cookies.set({ url: instance, name: "comment_sort", value: comment_sort }) - browser.cookies.set({ url: instance, name: "show_nsfw", value: show_nsfw ? 'on' : 'off' }) - browser.cookies.set({ url: instance, name: "autoplay_videos", value: autoplay_videos ? 'on' : 'off' }) - browser.cookies.set({ url: instance, name: "use_hls", value: use_hls ? 'on' : 'off' }) - browser.cookies.set({ url: instance, name: "hide_hls_notification", value: hide_hls_notification ? 'on' : 'off' }) + for (const instance of checkedInstances) { + commonHelper.copyCookie(targetUrl, instance, "theme"); + commonHelper.copyCookie(targetUrl, instance, "front_page"); + commonHelper.copyCookie(targetUrl, instance, "layout"); + commonHelper.copyCookie(targetUrl, instance, "wide"); + commonHelper.copyCookie(targetUrl, instance, "post_sort"); + commonHelper.copyCookie(targetUrl, instance, "comment_sort"); + commonHelper.copyCookie(targetUrl, instance, "show_nsfw"); + commonHelper.copyCookie(targetUrl, instance, "autoplay_videos"); + commonHelper.copyCookie(targetUrl, instance, "use_hls"); + commonHelper.copyCookie(targetUrl, instance, "hide_hls_notification"); + } } - } + ) } + function initTedditCookies() { - if (enableCustom) { - let checkedInstances = [ - ...tedditNormalRedirectsChecks, - ...tedditNormalCustomRedirects, - ...tedditTorRedirectsChecks, - ...tedditTorCustomRedirects - ] - for (const instanceUrl of checkedInstances) - browser.cookies.set({ - url: instanceUrl, - name: "theme", - value: theme == 'dark' ? 'dark' : 'white' - }) - } + let checkedInstances = [ + ...tedditNormalRedirectsChecks, + ...tedditNormalCustomRedirects, + ...tedditTorRedirectsChecks, + ...tedditTorCustomRedirects + ] + for (const instanceUrl of checkedInstances) + browser.cookies.set({ + url: instanceUrl, + name: "theme", + value: theme == 'dark' ? 'dark' : 'white' + }) } let alwaysUsePreferred; @@ -336,54 +277,76 @@ function reverse(url) { return `https://reddit.com${url.pathname}${url.search}`; } -function switchInstance(url) { - let protocolHost = commonHelper.protocolHost(url); +async function switchInstance(url) { + return new Promise(resolve => { + browser.storage.local.get( + [ + "redditRedirects", + "redditFrontend", + "redditProtocol", - let isTeddit = [ - ...redirects.teddit.normal, - ...redirects.teddit.tor - ].includes(protocolHost); + "libredditNormalRedirectsChecks", + "libredditNormalCustomRedirects", + "libredditTorRedirectsChecks", + "libredditTorCustomRedirects", - let isLibreddit = [ - ...redirects.libreddit.normal, - ...redirects.libreddit.tor - ].includes(protocolHost); + "tedditNormalRedirectsChecks", + "tedditNormalCustomRedirects", + "tedditTorRedirectsChecks", + "tedditTorCustomRedirects", + ], + r => { + let protocolHost = commonHelper.protocolHost(url); + let isTeddit = [ + ...r.redditRedirects.teddit.normal, + ...r.redditRedirects.teddit.tor + ].includes(protocolHost); - let redditList = [ - ...redirects.libreddit.normal, - ...redirects.libreddit.tor, + let isLibreddit = [ + ...r.redditRedirects.libreddit.normal, + ...r.redditRedirects.libreddit.tor + ].includes(protocolHost); - ...libredditNormalCustomRedirects, - ...libredditTorCustomRedirects, + let redditList = [ + ...r.redditRedirects.libreddit.normal, + ...r.redditRedirects.libreddit.tor, - ...redirects.teddit.normal, - ...redirects.teddit.tor, + ...r.libredditNormalCustomRedirects, + ...r.libredditTorCustomRedirects, - ...tedditNormalCustomRedirects, - ...tedditTorCustomRedirects, - ] + ...r.redditRedirects.teddit.normal, + ...r.redditRedirects.teddit.tor, - if (!redditList.includes(protocolHost)) return null; + ...r.tedditNormalCustomRedirects, + ...r.tedditTorCustomRedirects, + ] - let instancesList; - if (frontend == 'libreddit') { - if (protocol == 'normal') instancesList = [...libredditNormalRedirectsChecks, ...libredditNormalCustomRedirects]; - else if (protocol == 'tor') instancesList = [...libredditTorRedirectsChecks, ...libredditTorCustomRedirects]; - if (isTeddit) url.pathname = url.pathname.replace("/pics/w:null_", "/img/"); - } - else if (frontend == 'teddit') { - if (protocol == 'normal') instancesList = [...tedditNormalRedirectsChecks, ...tedditNormalCustomRedirects]; - else if (protocol == 'tor') instancesList = [...tedditTorRedirectsChecks, ...tedditTorCustomRedirects]; - if (isLibreddit) url.pathname = url.pathname.replace("/img/", "/pics/w:null_"); - } + if (!redditList.includes(protocolHost)) return null; - let index = instancesList.indexOf(protocolHost); - if (index > -1) instancesList.splice(index, 1); - if (instancesList.length === 0) return null; + console.log('redditFrontend', r.redditFrontend) + let instancesList; + if (r.redditFrontend == 'libreddit') { + if (r.redditProtocol == 'normal') instancesList = [...r.libredditNormalRedirectsChecks, ...r.libredditNormalCustomRedirects]; + else if (r.redditProtocol == 'tor') instancesList = [...r.libredditTorRedirectsChecks, ...r.libredditTorCustomRedirects]; + if (isTeddit) url.pathname = url.pathname.replace("/pics/w:null_", "/img/"); + } + else if (r.redditFrontend == 'teddit') { + if (r.redditProtocol == 'normal') instancesList = [...r.tedditNormalRedirectsChecks, ...r.tedditNormalCustomRedirects]; + else if (r.redditProtocol == 'tor') instancesList = [...r.tedditTorRedirectsChecks, ...r.tedditTorCustomRedirects]; + if (isLibreddit) url.pathname = url.pathname.replace("/img/", "/pics/w:null_"); + } - let randomInstance = commonHelper.getRandomInstance(instancesList); + let index = instancesList.indexOf(protocolHost); + if (index > -1) instancesList.splice(index, 1); + if (instancesList.length === 0) return; + + let randomInstance = commonHelper.getRandomInstance(instancesList); + + resolve(`${randomInstance}${url.pathname}${url.search}`) + } + ) + }) - return `${randomInstance}${url.pathname}${url.search}`; } async function initDefaults() { @@ -396,7 +359,7 @@ async function initDefaults() { tedditNormalRedirectsChecks = [...redirects.teddit.normal] for (const instance of r.cloudflareList) { let i; - + i = libredditNormalRedirectsChecks.indexOf(instance); if (i > -1) libredditNormalRedirectsChecks.splice(i, 1); @@ -459,7 +422,6 @@ async function init() { "tedditTorRedirectsChecks", "tedditTorCustomRedirects", - "redditProtocol", "bypassWatchOnReddit", @@ -499,19 +461,6 @@ async function init() { tedditTorRedirectsChecks = r.tedditTorRedirectsChecks; tedditTorCustomRedirects = r.tedditTorCustomRedirects; - enableCustom = r.enableLibredditCustomSettings; - - theme = r.redditTheme; - front_page = r.redditFrontPage; - layout = r.redditLayout; - wide = r.redditWide; - post_sort = r.redditPostSort; - comment_sort = r.redditCommentSort; - show_nsfw = r.redditShowNsfw; - autoplay_videos = r.redditAutoplayVideos; - use_hls = r.redditUseHls; - hide_hls_notification = r.redditHideHlsNotification; - resolve(); } ); @@ -531,26 +480,6 @@ export default { initLibredditCookies, initTedditCookies, - getLibredditNormalRedirectsChecks, - setLibredditNormalRedirectsChecks, - getLibredditTorRedirectsChecks, - setLibredditTorRedirectsChecks, - - getLibredditNormalCustomRedirects, - setLibredditNormalCustomRedirects, - getLibredditTorCustomRedirects, - setLibredditTorCustomRedirects, - - getTedditNormalRedirectsChecks, - setTedditNormalRedirectsChecks, - getTedditTorRedirectsChecks, - setTedditTorRedirectsChecks, - - getTedditNormalCustomRedirects, - setTedditNormalCustomRedirects, - getTedditTorCustomRedirects, - setTedditTorCustomRedirects, - initLibredditCookies, redirect, diff --git a/src/pages/background/background.js b/src/pages/background/background.js index 31412117..7bf960c9 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -173,23 +173,14 @@ async function redirectOfflineInstance(url, tabId) { newUrl = youtubeHelper.switchInstance(url); if (!newUrl) newUrl = twitterHelper.switchInstance(url); - if (!newUrl) newUrl = instagramHelper.switchInstance(url); - if (!newUrl) newUrl = redditHelper.switchInstance(url); - if (!newUrl) newUrl = searchHelper.switchInstance(url); - if (!newUrl) newUrl = translateHelper.switchInstance(url); - if (!newUrl) newUrl = mediumHelper.switchInstance(url); - if (!newUrl) newUrl = imgurHelper.switchInstance(url); - if (!newUrl) newUrl = wikipediaHelper.switchInstance(url); - if (!newUrl) newUrl = peertubeHelper.switchInstance(url); - if (!newUrl) newUrl = lbryHelper.switchInstance(url); if (newUrl) { diff --git a/pug/options/general/general.pug b/src/pages/options/general/general.pug similarity index 100% rename from pug/options/general/general.pug rename to src/pages/options/general/general.pug diff --git a/pug/options/imgur/imgur.pug b/src/pages/options/imgur/imgur.pug similarity index 100% rename from pug/options/imgur/imgur.pug rename to src/pages/options/imgur/imgur.pug diff --git a/pug/options/instagram/instagram.pug b/src/pages/options/instagram/instagram.pug similarity index 100% rename from pug/options/instagram/instagram.pug rename to src/pages/options/instagram/instagram.pug diff --git a/pug/options/lbry/lbry.pug b/src/pages/options/lbry/lbry.pug similarity index 100% rename from pug/options/lbry/lbry.pug rename to src/pages/options/lbry/lbry.pug diff --git a/pug/options/maps/maps.pug b/src/pages/options/maps/maps.pug similarity index 100% rename from pug/options/maps/maps.pug rename to src/pages/options/maps/maps.pug diff --git a/pug/options/medium/medium.pug b/src/pages/options/medium/medium.pug similarity index 100% rename from pug/options/medium/medium.pug rename to src/pages/options/medium/medium.pug diff --git a/pug/options/peertube/peertube.pug b/src/pages/options/peertube/peertube.pug similarity index 100% rename from pug/options/peertube/peertube.pug rename to src/pages/options/peertube/peertube.pug diff --git a/src/pages/options/reddit/reddit.html b/src/pages/options/reddit/reddit.html index 6fa9090d..e3fc40d9 100644 --- a/src/pages/options/reddit/reddit.html +++ b/src/pages/options/reddit/reddit.html @@ -78,92 +78,22 @@
-
-

Enable Custom Settings (will use cookies)

- -

-
-
-

Appearance

-
-
-

Theme

- -
-
-

Interface

-
-
-

Front page

- -
-
-

Front Layout

- -
-
-

Wide UI

- -
-
-

Content

-
-
-

Default subreddit post sort

- -
-
-

Default comment sort

- -
-
-

Show NSFW posts

- -
-
-

Autoplay videos

- -
-
-

Use HLS for videos

- -
-
-

Hide notification about possible HLS usage

- -
+
+

Unify cookies across selected instances

+
+
+ + +
+
+

Default Instances

diff --git a/src/pages/options/reddit/reddit.js b/src/pages/options/reddit/reddit.js index 475f8b61..65ad284c 100644 --- a/src/pages/options/reddit/reddit.js +++ b/src/pages/options/reddit/reddit.js @@ -3,49 +3,31 @@ import commonHelper from "../../../assets/javascripts/helpers/common.js"; let libredditDivElement = document.getElementById("libreddit") let tedditDivElement = document.getElementById("teddit") -let enableLibredditSettingsElement = document.getElementById("enable-libreddit-custom-settings"); -let customSettingsDivElement = document.getElementsByClassName("custom-settings"); let disableRedditElement = document.getElementById("disable-reddit"); let redditFrontendElement = document.getElementById("reddit-frontend"); let protocolElement = document.getElementById("protocol") let bypassWatchOnRedditElement = document.getElementById("bypass-watch-on-reddit") -let theme = document.getElementById('libreddit').getElementsByClassName('theme')[0]; -let front_page = document.getElementById('libreddit').getElementsByClassName('front_page')[0]; -let layout = document.getElementById('libreddit').getElementsByClassName('layout')[0]; -let wide = document.getElementById('libreddit').getElementsByClassName('wide')[0]; -let post_sort = document.getElementById('libreddit').getElementsByClassName('post_sort')[0]; -let comment_sort = document.getElementById('libreddit').getElementsByClassName('comment_sort')[0]; -let show_nsfw = document.getElementById('libreddit').getElementsByClassName('show_nsfw')[0]; -let autoplay_videos = document.getElementById('libreddit').getElementsByClassName('autoplay_videos')[0]; -let use_hls = document.getElementById('libreddit').getElementsByClassName('use_hls')[0]; -let hide_hls_notification = document.getElementById('libreddit').getElementsByClassName('hide_hls_notification')[0]; - document.addEventListener("change", async () => { await browser.storage.local.set({ disableReddit: !disableRedditElement.checked, bypassWatchOnReddit: bypassWatchOnRedditElement.checked, redditProtocol: protocolElement.value, redditFrontend: redditFrontendElement.value, - - enableLibredditCustomSettings: enableLibredditSettingsElement.checked, - - redditTheme: theme.value, - redditFrontPage: front_page.value, - redditLayout: layout.value, - redditWide: wide.checked, - redditPostSort: post_sort.value, - redditCommentSort: comment_sort.value, - redditShowNsfw: show_nsfw.checked, - redditAutoplayVideos: autoplay_videos.checked, - redditUseHls: use_hls.checked, - redditHideHlsNotification: hide_hls_notification.checked, }); changeFrontendsSettings(redditFrontendElement.value); changeProtocolSettings(protocolElement.value); }) +const libredditForm = libredditDivElement.getElementsByTagName('form')[0]; +const libredditCookies = libredditForm.getElementsByTagName('input')[0]; +libredditForm.addEventListener('submit', async event => { + event.preventDefault(); + const url = new URL(libredditCookies.value); + redditHelper.initLibredditCookies(url); +}) + function changeProtocolSettings(protocol) { let normalLibredditDiv = libredditDivElement.getElementsByClassName("normal")[0]; let torLibredditDiv = libredditDivElement.getElementsByClassName("tor")[0]; @@ -64,10 +46,6 @@ function changeProtocolSettings(protocol) { torTedditDiv.style.display = 'block'; torLibredditDiv.style.display = 'block'; } - if (enableLibredditSettingsElement.checked) - for (const item of customSettingsDivElement) item.style.display = 'block'; - else - for (const item of customSettingsDivElement) item.style.display = 'none'; } function changeFrontendsSettings(frontend) { let frontendElement = document.getElementById("frontend"); @@ -96,37 +74,14 @@ browser.storage.local.get( "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; } ) @@ -172,9 +127,4 @@ latencyTedditElement.addEventListener("click", latencyTedditElement.removeEventListener("click", reloadWindow); }); } -); - -window.onblur = () => { - redditHelper.initLibredditCookies(); - redditHelper.initTedditCookies(); -} \ No newline at end of file +); \ No newline at end of file diff --git a/src/pages/options/reddit/reddit.pug b/src/pages/options/reddit/reddit.pug new file mode 100644 index 00000000..7262a7f4 --- /dev/null +++ b/src/pages/options/reddit/reddit.pug @@ -0,0 +1,65 @@ +doctype html +html(lang="en") + include ../../widgets/head.pug + title General +script(type="module" src="../../../assets/javascripts/localise.js") +body.option(dir="auto") + include ../../widgets/links.pug + +links('reddit') + + section.option-block + .some-block.option-block + h4(data-localise="__MSG_enable__") Enable + input#disable-reddit(type="checkbox") + + .some-block.option-block + h4#frontend(data-localise="__MSG_frontend__") Frontend + select#reddit-frontend + option(value="libreddit") Libreddit + option(value="teddit") Teddit + + .some-block.option-block + h4(data-localise="__MSG_protocol__") Protocol + select#protocol + option(value="normal" data-localise="__MSG_normal__") Normal + option(value="tor" data-localise="__MSG_tor__") Tor + + .some-block.option-block + h4(data-localise="__MSG_bypassReddit__") Bypass "Open in Reddit" + input#bypass-watch-on-reddit(type="checkbox") + + #libreddit + hr + .some-block.option-block + h4 Unify cookies across selected instances + form + .some-block.option-block + input(type="url" placeholder="https://libreddit.com") + button.add(type="submit") + svg(xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24px" viewBox="0 0 24 24" width="24px" fill="currentColor") + rect(fill="none" height="24" width="24") + path(d="M18,2H9C7.9,2,7,2.9,7,4v12c0,1.1,0.9,2,2,2h9c1.1,0,2-0.9,2-2V4C20,2.9,19.1,2,18,2z M18,16H9V4h9V16z M3,15v-2h2v2H3z M3,9.5h2v2H3V9.5z M10,20h2v2h-2V20z M3,18.5v-2h2v2H3z M5,22c-1.1,0-2-0.9-2-2h2V22z M8.5,22h-2v-2h2V22z M13.5,22L13.5,22l0-2h2 v0C15.5,21.1,14.6,22,13.5,22z M5,6L5,6l0,2H3v0C3,6.9,3.9,6,5,6z") + + hr + + .normal + include ../../widgets/instances.pug + +instances('https://libreddit.com') + include ../../widgets/latency.pug + +latency('libreddit') + .tor + include ../../widgets/instances.pug + +instances('https://libreddit.onion') + + #teddit + hr + .normal + include ../../widgets/instances.pug + +instances('https://teddit.com') + +latency('teddit') + .tor + include ../../widgets/instances.pug + +instances('https://teddit.onion') + + script(type="module" src="../init.js") + script(type="module" src="./reddit.js") \ No newline at end of file diff --git a/pug/options/search/search.pug b/src/pages/options/search/search.pug similarity index 100% rename from pug/options/search/search.pug rename to src/pages/options/search/search.pug diff --git a/pug/options/sendTargets/sendTargets.pug b/src/pages/options/sendTargets/sendTargets.pug similarity index 100% rename from pug/options/sendTargets/sendTargets.pug rename to src/pages/options/sendTargets/sendTargets.pug diff --git a/pug/options/tiktok/tiktok.pug b/src/pages/options/tiktok/tiktok.pug similarity index 100% rename from pug/options/tiktok/tiktok.pug rename to src/pages/options/tiktok/tiktok.pug diff --git a/pug/options/translate/translate.pug b/src/pages/options/translate/translate.pug similarity index 100% rename from pug/options/translate/translate.pug rename to src/pages/options/translate/translate.pug diff --git a/pug/options/twitter/twitter.pug b/src/pages/options/twitter/twitter.pug similarity index 100% rename from pug/options/twitter/twitter.pug rename to src/pages/options/twitter/twitter.pug diff --git a/pug/options/wikipedia/wikipedia.pug b/src/pages/options/wikipedia/wikipedia.pug similarity index 100% rename from pug/options/wikipedia/wikipedia.pug rename to src/pages/options/wikipedia/wikipedia.pug diff --git a/pug/options/youtube/youtube.pug b/src/pages/options/youtube/youtube.pug similarity index 100% rename from pug/options/youtube/youtube.pug rename to src/pages/options/youtube/youtube.pug diff --git a/pug/options/youtubeMusic/youtubeMusic.pug b/src/pages/options/youtubeMusic/youtubeMusic.pug similarity index 100% rename from pug/options/youtubeMusic/youtubeMusic.pug rename to src/pages/options/youtubeMusic/youtubeMusic.pug diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js index f6dab091..e3f52baf 100644 --- a/src/pages/popup/popup.js +++ b/src/pages/popup/popup.js @@ -104,7 +104,7 @@ document.getElementById("more-options").addEventListener("click", ); function switchInstance() { - browser.tabs.query({ active: true, currentWindow: true }, function (tabs) { + browser.tabs.query({ active: true, currentWindow: true }, async tabs => { let currTab = tabs[0]; if (currTab) { let url = currTab.url; @@ -113,29 +113,18 @@ function switchInstance() { catch (_) { return false; } let newUrl; - newUrl = youtubeHelper.switchInstance(tabUrl); - - if (!newUrl) newUrl = twitterHelper.switchInstance(tabUrl); - - if (!newUrl) newUrl = instagramHelper.switchInstance(tabUrl); - - if (!newUrl) newUrl = redditHelper.switchInstance(tabUrl); - - if (!newUrl) newUrl = searchHelper.switchInstance(tabUrl); - - if (!newUrl) newUrl = translateHelper.switchInstance(tabUrl); - - if (!newUrl) newUrl = mediumHelper.switchInstance(tabUrl); - - if (!newUrl) newUrl = sendTargetsHelper.switchInstance(tabUrl); - - if (!newUrl) newUrl = peertubeHelper.switchInstance(tabUrl); - - if (!newUrl) newUrl = lbryHelper.switchInstance(tabUrl); - - if (!newUrl) newUrl = imgurHelper.switchInstance(tabUrl); - - if (!newUrl) newUrl = wikipediaHelper.switchInstance(tabUrl); + // newUrl = youtubeHelper.switchInstance(tabUrl); + // if (!newUrl) newUrl = twitterHelper.switchInstance(tabUrl); + // if (!newUrl) newUrl = instagramHelper.switchInstance(tabUrl); + if (!newUrl) newUrl = await redditHelper.switchInstance(tabUrl); + // if (!newUrl) newUrl = searchHelper.switchInstance(tabUrl); + // if (!newUrl) newUrl = translateHelper.switchInstance(tabUrl); + // if (!newUrl) newUrl = mediumHelper.switchInstance(tabUrl); + // if (!newUrl) newUrl = sendTargetsHelper.switchInstance(tabUrl); + // if (!newUrl) newUrl = peertubeHelper.switchInstance(tabUrl); + // if (!newUrl) newUrl = lbryHelper.switchInstance(tabUrl); + // if (!newUrl) newUrl = imgurHelper.switchInstance(tabUrl); + // if (!newUrl) newUrl = wikipediaHelper.switchInstance(tabUrl); if (newUrl) { browser.tabs.update({ url: newUrl }); diff --git a/src/pages/stylesheets/styles.css b/src/pages/stylesheets/styles.css index 8b2718cd..c1c2a53f 100644 --- a/src/pages/stylesheets/styles.css +++ b/src/pages/stylesheets/styles.css @@ -444,4 +444,15 @@ section.general div { #customize-popup { width: 250px; +} + +button { + background-color:transparent; + color: var(--text); + border: none; + padding: 10px 5px; + text-decoration: none; + display: inline-block; + cursor: pointer; + border-radius: 5px; } \ No newline at end of file diff --git a/pug/widgets/captions_options.pug b/src/pages/widgets/captions_options.pug similarity index 100% rename from pug/widgets/captions_options.pug rename to src/pages/widgets/captions_options.pug diff --git a/pug/widgets/from-to.pug b/src/pages/widgets/from-to.pug similarity index 100% rename from pug/widgets/from-to.pug rename to src/pages/widgets/from-to.pug diff --git a/pug/widgets/head.pug b/src/pages/widgets/head.pug similarity index 100% rename from pug/widgets/head.pug rename to src/pages/widgets/head.pug diff --git a/pug/widgets/instances.pug b/src/pages/widgets/instances.pug similarity index 100% rename from pug/widgets/instances.pug rename to src/pages/widgets/instances.pug diff --git a/pug/widgets/latency.pug b/src/pages/widgets/latency.pug similarity index 100% rename from pug/widgets/latency.pug rename to src/pages/widgets/latency.pug diff --git a/pug/widgets/links.pug b/src/pages/widgets/links.pug similarity index 100% rename from pug/widgets/links.pug rename to src/pages/widgets/links.pug