diff options
-rw-r--r-- | pug/options/reddit/reddit.pug | 128 | ||||
-rw-r--r-- | script.sh | 2 | ||||
-rw-r--r-- | src/assets/javascripts/helpers/common.js | 39 | ||||
-rw-r--r-- | src/assets/javascripts/helpers/reddit.js | 295 | ||||
-rw-r--r-- | src/pages/background/background.js | 9 | ||||
-rw-r--r-- | src/pages/options/general/general.pug (renamed from pug/options/general/general.pug) | 0 | ||||
-rw-r--r-- | src/pages/options/imgur/imgur.pug (renamed from pug/options/imgur/imgur.pug) | 0 | ||||
-rw-r--r-- | src/pages/options/instagram/instagram.pug (renamed from pug/options/instagram/instagram.pug) | 0 | ||||
-rw-r--r-- | src/pages/options/lbry/lbry.pug (renamed from pug/options/lbry/lbry.pug) | 0 | ||||
-rw-r--r-- | src/pages/options/maps/maps.pug (renamed from pug/options/maps/maps.pug) | 0 | ||||
-rw-r--r-- | src/pages/options/medium/medium.pug (renamed from pug/options/medium/medium.pug) | 0 | ||||
-rw-r--r-- | src/pages/options/peertube/peertube.pug (renamed from pug/options/peertube/peertube.pug) | 0 | ||||
-rw-r--r-- | src/pages/options/reddit/reddit.html | 94 | ||||
-rw-r--r-- | src/pages/options/reddit/reddit.js | 68 | ||||
-rw-r--r-- | src/pages/options/reddit/reddit.pug | 65 | ||||
-rw-r--r-- | src/pages/options/search/search.pug (renamed from pug/options/search/search.pug) | 0 | ||||
-rw-r--r-- | src/pages/options/sendTargets/sendTargets.pug (renamed from pug/options/sendTargets/sendTargets.pug) | 0 | ||||
-rw-r--r-- | src/pages/options/tiktok/tiktok.pug (renamed from pug/options/tiktok/tiktok.pug) | 0 | ||||
-rw-r--r-- | src/pages/options/translate/translate.pug (renamed from pug/options/translate/translate.pug) | 0 | ||||
-rw-r--r-- | src/pages/options/twitter/twitter.pug (renamed from pug/options/twitter/twitter.pug) | 0 | ||||
-rw-r--r-- | src/pages/options/wikipedia/wikipedia.pug (renamed from pug/options/wikipedia/wikipedia.pug) | 0 | ||||
-rw-r--r-- | src/pages/options/youtube/youtube.pug (renamed from pug/options/youtube/youtube.pug) | 0 | ||||
-rw-r--r-- | src/pages/options/youtubeMusic/youtubeMusic.pug (renamed from pug/options/youtubeMusic/youtubeMusic.pug) | 0 | ||||
-rw-r--r-- | src/pages/popup/popup.js | 37 | ||||
-rw-r--r-- | src/pages/stylesheets/styles.css | 11 | ||||
-rw-r--r-- | src/pages/widgets/captions_options.pug (renamed from pug/widgets/captions_options.pug) | 0 | ||||
-rw-r--r-- | src/pages/widgets/from-to.pug (renamed from pug/widgets/from-to.pug) | 0 | ||||
-rw-r--r-- | src/pages/widgets/head.pug (renamed from pug/widgets/head.pug) | 0 | ||||
-rw-r--r-- | src/pages/widgets/instances.pug (renamed from pug/widgets/instances.pug) | 0 | ||||
-rw-r--r-- | src/pages/widgets/latency.pug (renamed from pug/widgets/latency.pug) | 0 | ||||
-rw-r--r-- | src/pages/widgets/links.pug (renamed from pug/widgets/links.pug) | 0 |
31 files changed, 244 insertions, 504 deletions
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 = [ `<div> @@ -182,7 +171,10 @@ async function processDefaultCustomInstances( let latencyLimit = (instancesLatency[x] == 5000 ? '5000ms+' : instancesLatency[x] + 'ms') let latency = x in instancesLatency ? '<span style="color:' + latencyColor + ';">' + latencyLimit + '</span>' : ''; - return `<div><x><a href="${x}" target="_blank">${x}</a>${cloudflare} ${latency}</x><input type="checkbox" class="${x}"/></div>`; + return `<div> + <x><a href="${x}" target="_blank">${x}</a>${cloudflare} ${latency}</x> + <input type="checkbox" class="${x}"/> + </div>`; } ), ].join('\n<hr>\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; - -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' }) +function initLibredditCookies(targetUrl) { + browser.storage.local.get( + [ + "redditProtocol", + "libredditNormalRedirectsChecks", + "libredditNormalCustomRedirects", + "libredditTorRedirectsChecks", + "libredditTorCustomRedirects", + ], + r => { + let checkedInstances; + if (r.redditProtocol == 'normal') checkedInstances = [...r.libredditNormalRedirectsChecks, ...r.libredditNormalCustomRedirects]; + else if (r.redditProtocol == 'tor') checkedInstances = [...r.libredditTorRedirectsChecks, ...r.libredditTorCustomRedirects]; + + for (const instance of checkedInstances) { + commonHelper.copyCookie(targetUrl, instance, "theme"); + commonHelper.copyCookie(targetUrl, instance, "front_page"); + commonHelper.copyCookie(targetUrl, instance, "layout"); + commonHelper.copyCookie(targetUrl, instance, "wide"); + commonHelper.copyCookie(targetUrl, instance, "post_sort"); + commonHelper.copyCookie(targetUrl, instance, "comment_sort"); + commonHelper.copyCookie(targetUrl, instance, "show_nsfw"); + commonHelper.copyCookie(targetUrl, instance, "autoplay_videos"); + commonHelper.copyCookie(targetUrl, instance, "use_hls"); + commonHelper.copyCookie(targetUrl, instance, "hide_hls_notification"); + } } - } + ) } + function 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); - - let isTeddit = [ - ...redirects.teddit.normal, - ...redirects.teddit.tor - ].includes(protocolHost); - - let isLibreddit = [ - ...redirects.libreddit.normal, - ...redirects.libreddit.tor - ].includes(protocolHost); - - let redditList = [ - ...redirects.libreddit.normal, - ...redirects.libreddit.tor, - - ...libredditNormalCustomRedirects, - ...libredditTorCustomRedirects, - - ...redirects.teddit.normal, - ...redirects.teddit.tor, - - ...tedditNormalCustomRedirects, - ...tedditTorCustomRedirects, - ] - - if (!redditList.includes(protocolHost)) return null; - - 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_"); - } +async function switchInstance(url) { + return new Promise(resolve => { + browser.storage.local.get( + [ + "redditRedirects", + "redditFrontend", + "redditProtocol", - let index = instancesList.indexOf(protocolHost); - if (index > -1) instancesList.splice(index, 1); - if (instancesList.length === 0) return null; + "libredditNormalRedirectsChecks", + "libredditNormalCustomRedirects", + "libredditTorRedirectsChecks", + "libredditTorCustomRedirects", - let randomInstance = commonHelper.getRandomInstance(instancesList); + "tedditNormalRedirectsChecks", + "tedditNormalCustomRedirects", + "tedditTorRedirectsChecks", + "tedditTorCustomRedirects", + ], + r => { + let protocolHost = commonHelper.protocolHost(url); + let isTeddit = [ + ...r.redditRedirects.teddit.normal, + ...r.redditRedirects.teddit.tor + ].includes(protocolHost); + + let isLibreddit = [ + ...r.redditRedirects.libreddit.normal, + ...r.redditRedirects.libreddit.tor + ].includes(protocolHost); + + let redditList = [ + ...r.redditRedirects.libreddit.normal, + ...r.redditRedirects.libreddit.tor, + + ...r.libredditNormalCustomRedirects, + ...r.libredditTorCustomRedirects, + + ...r.redditRedirects.teddit.normal, + ...r.redditRedirects.teddit.tor, + + ...r.tedditNormalCustomRedirects, + ...r.tedditTorCustomRedirects, + ] + + if (!redditList.includes(protocolHost)) return null; + + console.log('redditFrontend', r.redditFrontend) + let instancesList; + if (r.redditFrontend == 'libreddit') { + if (r.redditProtocol == 'normal') instancesList = [...r.libredditNormalRedirectsChecks, ...r.libredditNormalCustomRedirects]; + 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 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 index b5b46d5f..b5b46d5f 100644 --- a/pug/options/general/general.pug +++ b/src/pages/options/general/general.pug diff --git a/pug/options/imgur/imgur.pug b/src/pages/options/imgur/imgur.pug index f195ca66..f195ca66 100644 --- a/pug/options/imgur/imgur.pug +++ b/src/pages/options/imgur/imgur.pug diff --git a/pug/options/instagram/instagram.pug b/src/pages/options/instagram/instagram.pug index 6e1ef19a..6e1ef19a 100644 --- a/pug/options/instagram/instagram.pug +++ b/src/pages/options/instagram/instagram.pug diff --git a/pug/options/lbry/lbry.pug b/src/pages/options/lbry/lbry.pug index aca0d489..aca0d489 100644 --- a/pug/options/lbry/lbry.pug +++ b/src/pages/options/lbry/lbry.pug diff --git a/pug/options/maps/maps.pug b/src/pages/options/maps/maps.pug index 2da94a43..2da94a43 100644 --- a/pug/options/maps/maps.pug +++ b/src/pages/options/maps/maps.pug diff --git a/pug/options/medium/medium.pug b/src/pages/options/medium/medium.pug index f5b698d2..f5b698d2 100644 --- a/pug/options/medium/medium.pug +++ b/src/pages/options/medium/medium.pug diff --git a/pug/options/peertube/peertube.pug b/src/pages/options/peertube/peertube.pug index d9b25bbc..d9b25bbc 100644 --- a/pug/options/peertube/peertube.pug +++ b/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 @@ <input id="bypass-watch-on-reddit" type="checkbox"> </div> <div id="libreddit"> + <hr> <div class="some-block option-block"> - <h4 data-localise="__MSG_enableCustomSettings__">Enable Custom Settings (will use cookies)</h4> - <input id="enable-libreddit-custom-settings" type="checkbox"> + <h4>Unify cookies across selected instances</h4> </div> - <hr> - <div class="custom-settings"> - <div class="some-block option-block"> - <h2>Appearance</h2> - </div> - <div class="some-block option-block"> - <h4 data-localise="__MSG_theme__">Theme</h4> - <select class="theme"> - <option value="system">System</option> - <option value="light">Light</option> - <option value="dark">Dark</option> - <option value="black">Black</option> - <option value="dracula">Dracula</option> - <option value="nord">Nord</option> - <option value="laserwave">Laserwave</option> - <option value="violet">Violet</option> - <option value="gold">Gold</option> - </select> - </div> - <div class="some-block option-block"> - <h2>Interface</h2> - </div> - <div class="some-block option-block"> - <h4 data-localise="__MSG_frontPage__">Front page</h4> - <select class="front_page"> - <option value="default">Default</option> - <option value="popular">Popular</option> - <option value="all">All</option> - </select> - </div> - <div class="some-block option-block"> - <h4 data-localise="__MSG_frontLayout__">Front Layout</h4> - <select class="layout"> - <option value="card">Card</option> - <option value="clean">Clean</option> - <option value="compact">Compact</option> - </select> - </div> - <div class="some-block option-block"> - <h4 data-localise="__MSG_wideUI__">Wide UI</h4> - <input class="wide" type="checkbox"> - </div> + <form> <div class="some-block option-block"> - <h2>Content</h2> + <input type="url" placeholder="https://libreddit.com"> + <button class="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"></rect> + <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"></path> + </svg> + </button> </div> - <div class="some-block option-block"> - <h4 data-localise="__MSG_defaultSubredditPostSort__">Default subreddit post sort</h4> - <select class="post_sort"> - <option value="hot">Hot</option> - <option value="new">New</option> - <option value="top">Top</option> - <option value="rising">Rising</option> - <option value="controversial">Controversial</option> - </select> - </div> - <div class="some-block option-block"> - <h4 data-localise="__MSG_defaultCommentSort__">Default comment sort</h4> - <select class="comment_sort"> - <option value="confidence">Confidence</option> - <option value="top">Top</option> - <option value="new">New</option> - <option value="controversial">Controversial</option> - <option value="old">Old</option> - </select> - </div> - <div class="some-block option-block"> - <h4 data-localise="__MSG_showNsfwPosts__">Show NSFW posts</h4> - <input class="show_nsfw" type="checkbox"> - </div> - <div class="some-block option-block"> - <h4 data-localise="__MSG_autoplayVideos__">Autoplay videos</h4> - <input class="autoplay_videos" type="checkbox"> - </div> - <div class="some-block option-block"> - <h4 data-localise="__MSG_useHlsForVideos__">Use HLS for videos</h4> - <input class="use_hls" type="checkbox"> - </div> - <div class="some-block option-block"> - <h4 data-localise="__MSG_hideNotificationAboutPossibleHlsUsage__">Hide notification about possible HLS usage</h4> - <input class="hide_hls_notification" type="checkbox"> - </div> - </div> + </form> + <hr> <div class="normal"> <div class="some-block option-block"> <h4 data-localise="__MSG_defaultInstances__">Default Instances</h4> 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 index 78825611..78825611 100644 --- a/pug/options/search/search.pug +++ b/src/pages/options/search/search.pug diff --git a/pug/options/sendTargets/sendTargets.pug b/src/pages/options/sendTargets/sendTargets.pug index 3017fa87..3017fa87 100644 --- a/pug/options/sendTargets/sendTargets.pug +++ b/src/pages/options/sendTargets/sendTargets.pug diff --git a/pug/options/tiktok/tiktok.pug b/src/pages/options/tiktok/tiktok.pug index 31ae18df..31ae18df 100644 --- a/pug/options/tiktok/tiktok.pug +++ b/src/pages/options/tiktok/tiktok.pug diff --git a/pug/options/translate/translate.pug b/src/pages/options/translate/translate.pug index f6a192c4..f6a192c4 100644 --- a/pug/options/translate/translate.pug +++ b/src/pages/options/translate/translate.pug diff --git a/pug/options/twitter/twitter.pug b/src/pages/options/twitter/twitter.pug index 230aefd1..230aefd1 100644 --- a/pug/options/twitter/twitter.pug +++ b/src/pages/options/twitter/twitter.pug diff --git a/pug/options/wikipedia/wikipedia.pug b/src/pages/options/wikipedia/wikipedia.pug index 54ca8730..54ca8730 100644 --- a/pug/options/wikipedia/wikipedia.pug +++ b/src/pages/options/wikipedia/wikipedia.pug diff --git a/pug/options/youtube/youtube.pug b/src/pages/options/youtube/youtube.pug index be88aac8..be88aac8 100644 --- a/pug/options/youtube/youtube.pug +++ b/src/pages/options/youtube/youtube.pug diff --git a/pug/options/youtubeMusic/youtubeMusic.pug b/src/pages/options/youtubeMusic/youtubeMusic.pug index 10d2deef..10d2deef 100644 --- a/pug/options/youtubeMusic/youtubeMusic.pug +++ b/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 index 51d18d62..51d18d62 100644 --- a/pug/widgets/captions_options.pug +++ b/src/pages/widgets/captions_options.pug diff --git a/pug/widgets/from-to.pug b/src/pages/widgets/from-to.pug index 9140e094..9140e094 100644 --- a/pug/widgets/from-to.pug +++ b/src/pages/widgets/from-to.pug diff --git a/pug/widgets/head.pug b/src/pages/widgets/head.pug index 53de42d3..53de42d3 100644 --- a/pug/widgets/head.pug +++ b/src/pages/widgets/head.pug diff --git a/pug/widgets/instances.pug b/src/pages/widgets/instances.pug index 950bd46b..950bd46b 100644 --- a/pug/widgets/instances.pug +++ b/src/pages/widgets/instances.pug diff --git a/pug/widgets/latency.pug b/src/pages/widgets/latency.pug index 0069ca74..0069ca74 100644 --- a/pug/widgets/latency.pug +++ b/src/pages/widgets/latency.pug diff --git a/pug/widgets/links.pug b/src/pages/widgets/links.pug index 8daf48ba..8daf48ba 100644 --- a/pug/widgets/links.pug +++ b/src/pages/widgets/links.pug |