From a9f95b3d1de44edf205508233a3526246842bbf3 Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Fri, 4 Feb 2022 18:48:24 +0300 Subject: Cleaning and refining settings --- src/assets/javascripts/helpers/common.js | 2 +- src/assets/javascripts/helpers/instagram.js | 11 +- src/assets/javascripts/helpers/medium.js | 4 +- src/assets/javascripts/helpers/reddit.js | 8 + src/assets/javascripts/helpers/rimgo.js | 14 + src/assets/javascripts/helpers/search.js | 53 ++- src/assets/javascripts/helpers/translate.js | 5 + src/assets/javascripts/helpers/twitter.js | 54 +++- src/assets/javascripts/helpers/wikipedia.js | 8 +- src/assets/javascripts/helpers/youtube.js | 354 --------------------- .../helpers/youtube/invidious-cookies.js | 38 +++ src/assets/javascripts/helpers/youtube/youtube.js | 325 +++++++++++++++++++ src/manifest.json | 2 +- src/pages/background/background.js | 9 +- src/pages/options/general.html | 106 ------ src/pages/options/general.js | 99 ------ src/pages/options/general/general.html | 106 ++++++ src/pages/options/general/general.js | 99 ++++++ src/pages/options/instagram.html | 54 ---- src/pages/options/instagram.js | 11 - src/pages/options/instagram/instagram.html | 54 ++++ src/pages/options/instagram/instagram.js | 10 + src/pages/options/maps.html | 44 --- src/pages/options/maps.js | 11 - src/pages/options/maps/maps.html | 44 +++ src/pages/options/maps/maps.js | 10 + src/pages/options/medium.html | 53 --- src/pages/options/medium.js | 11 - src/pages/options/medium/medium.html | 53 +++ src/pages/options/medium/medium.js | 10 + src/pages/options/reddit.html | 72 ----- src/pages/options/reddit.js | 17 - src/pages/options/reddit/reddit.html | 72 +++++ src/pages/options/reddit/reddit.js | 16 + src/pages/options/search.html | 73 ----- src/pages/options/search.js | 17 - src/pages/options/search/search.html | 73 +++++ src/pages/options/search/search.js | 16 + src/pages/options/shared.js | 1 - src/pages/options/translate.html | 51 --- src/pages/options/translate.js | 18 -- src/pages/options/translate/translate.html | 51 +++ src/pages/options/translate/translate.js | 16 + src/pages/options/twitter.html | 61 ---- src/pages/options/twitter.js | 17 - src/pages/options/twitter/twitter.html | 61 ++++ src/pages/options/twitter/twitter.js | 16 + src/pages/options/wikipedia.html | 52 --- src/pages/options/wikipedia.js | 11 - src/pages/options/wikipedia/wikipedia.html | 52 +++ src/pages/options/wikipedia/wikipedia.js | 10 + src/pages/options/youtube.html | 130 -------- src/pages/options/youtube.js | 106 ------ src/pages/options/youtube/youtube.html | 126 ++++++++ src/pages/options/youtube/youtube.js | 107 +++++++ src/pages/popup/popup.js | 2 +- 56 files changed, 1490 insertions(+), 1416 deletions(-) create mode 100644 src/assets/javascripts/helpers/rimgo.js delete mode 100644 src/assets/javascripts/helpers/youtube.js create mode 100644 src/assets/javascripts/helpers/youtube/invidious-cookies.js create mode 100644 src/assets/javascripts/helpers/youtube/youtube.js delete mode 100644 src/pages/options/general.html delete mode 100644 src/pages/options/general.js create mode 100644 src/pages/options/general/general.html create mode 100644 src/pages/options/general/general.js delete mode 100644 src/pages/options/instagram.html delete mode 100644 src/pages/options/instagram.js create mode 100644 src/pages/options/instagram/instagram.html create mode 100644 src/pages/options/instagram/instagram.js delete mode 100644 src/pages/options/maps.html delete mode 100644 src/pages/options/maps.js create mode 100644 src/pages/options/maps/maps.html create mode 100644 src/pages/options/maps/maps.js delete mode 100644 src/pages/options/medium.html delete mode 100644 src/pages/options/medium.js create mode 100644 src/pages/options/medium/medium.html create mode 100644 src/pages/options/medium/medium.js delete mode 100644 src/pages/options/reddit.html delete mode 100644 src/pages/options/reddit.js create mode 100644 src/pages/options/reddit/reddit.html create mode 100644 src/pages/options/reddit/reddit.js delete mode 100644 src/pages/options/search.html delete mode 100644 src/pages/options/search.js create mode 100644 src/pages/options/search/search.html create mode 100644 src/pages/options/search/search.js delete mode 100644 src/pages/options/translate.html delete mode 100644 src/pages/options/translate.js create mode 100644 src/pages/options/translate/translate.html create mode 100644 src/pages/options/translate/translate.js delete mode 100644 src/pages/options/twitter.html delete mode 100644 src/pages/options/twitter.js create mode 100644 src/pages/options/twitter/twitter.html create mode 100644 src/pages/options/twitter/twitter.js delete mode 100644 src/pages/options/wikipedia.html delete mode 100644 src/pages/options/wikipedia.js create mode 100644 src/pages/options/wikipedia/wikipedia.html create mode 100644 src/pages/options/wikipedia/wikipedia.js delete mode 100644 src/pages/options/youtube.html delete mode 100644 src/pages/options/youtube.js create mode 100644 src/pages/options/youtube/youtube.html create mode 100644 src/pages/options/youtube/youtube.js (limited to 'src') diff --git a/src/assets/javascripts/helpers/common.js b/src/assets/javascripts/helpers/common.js index 22ee252d..d7b65881 100644 --- a/src/assets/javascripts/helpers/common.js +++ b/src/assets/javascripts/helpers/common.js @@ -1,5 +1,5 @@ import twitterHelper from "./twitter.js"; -import youtubeHelper from "./youtube.js"; +import youtubeHelper from "./youtube/youtube.js"; import instagramHelper from "./instagram.js"; import mediumHelper from "./medium.js"; import redditHelper from "./reddit.js"; diff --git a/src/assets/javascripts/helpers/instagram.js b/src/assets/javascripts/helpers/instagram.js index 71dfdc5b..666b9f71 100644 --- a/src/assets/javascripts/helpers/instagram.js +++ b/src/assets/javascripts/helpers/instagram.js @@ -11,12 +11,13 @@ let redirects = { "https://bibliogram.art", "https://bibliogram.snopyta.org", "https://bibliogram.pussthecat.org", - "https://bibliogram.nixnet.services", - "https://bibliogram.ethibox.fr", - "https://bibliogram.hamster.dance", + "https://bibliogram.1d4.us", "https://insta.trom.tf", - "https://bib.actionsack.com" - ], + "https://bib.riverside.rocks", + "https://bibliogram.esmailelbob.xyz", + "https://bib.actionsack.com", + "https://biblio.alefvanoon.xyz" + ] }; const getRedirects = () => redirects; function setRedirects(val) { diff --git a/src/assets/javascripts/helpers/medium.js b/src/assets/javascripts/helpers/medium.js index cca83250..ce91e99c 100644 --- a/src/assets/javascripts/helpers/medium.js +++ b/src/assets/javascripts/helpers/medium.js @@ -19,7 +19,9 @@ const targets = [ let redirects = { "normal": [ "https://scribe.rip", - "https://scribe.nixnet.services" + "https://scribe.nixnet.services", + "https://scribe.citizen4.eu", + "https://scribe.bus-hit.me" ] }; const getRedirects = () => redirects; diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js index 005636b8..880d1576 100644 --- a/src/assets/javascripts/helpers/reddit.js +++ b/src/assets/javascripts/helpers/reddit.js @@ -45,6 +45,14 @@ let redirects = { "https://teddit.adminforge.de", "https://teddit.bus-hit.me" ], + "onion": [ + "http://teddit4w6cmzmj5kimhfcavs7yo5s7alszvsi2khqutqtlaanpcftfyd.onion", + "http://snoo.ioensistjs7wd746zluwixvojbbkxhr37lepdvwtdfeav673o64iflqd.onion", + "http://ibarajztopxnuhabfu7fg6gbudynxofbnmvis3ltj6lfx47b6fhrd5qd.onion", + "http://tedditfyn6idalzso5wam5qd3kdtxoljjhbrbbx34q2xkcisvshuytad.onion", + "http://dawtyi5e2cfyfmoht4izmczi42aa2zwh6wi34zwvc6rzf2acpxhrcrad.onion", + "http://qtpvyiaqhmwccxwzsqubd23xhmmrt75tdyw35kp43w4hvamsgl3x27ad.onion" + ] }, "desktop": "https://old.reddit.com", // desktop "mobile": "https://i.reddit.com", // mobile diff --git a/src/assets/javascripts/helpers/rimgo.js b/src/assets/javascripts/helpers/rimgo.js new file mode 100644 index 00000000..829dd230 --- /dev/null +++ b/src/assets/javascripts/helpers/rimgo.js @@ -0,0 +1,14 @@ +let redirects = { + "normal": [ + "https://i.bcow.xyz", + "https://rimgo.bcow.xyz", + "https://rimgo.pussthecat.org", + "https://img.riverside.rocks", + "https://rimgo.totaldarkness.net", + "https://rimgo.bus-hit.me" + ], + "onion": [ + "http://l4d4owboqr6xcmd6lf64gbegel62kbudu3x3jnldz2mx6mhn3bsv3zyd.onion", + "http://jx3dpcwedpzu2mh54obk5gvl64i2ln7pt5mrzd75s4jnndkqwzaim7ad.onion" + ] +} \ No newline at end of file diff --git a/src/assets/javascripts/helpers/search.js b/src/assets/javascripts/helpers/search.js index 3470abb2..84b63f9a 100644 --- a/src/assets/javascripts/helpers/search.js +++ b/src/assets/javascripts/helpers/search.js @@ -6,12 +6,12 @@ const targets = [ /https?:\/\/(((www|maps)\.)?(google\.).*(\/search)|search\.(google\.).*)/ ]; let redirects = { - "searx": { + "searx": { "normal": [ "https://a.searx.space", "https://anon.sx", "https://beezboo.com", - "https://darmarit.org", + "https://darmarit.org/searx", "https://dynabyte.ca", "https://engo.mint.lgbt", "https://jsearch.pw", @@ -37,6 +37,7 @@ let redirects = { "https://search.jigsaw-security.com", "https://search.jpope.org", "https://search.mdosch.de", + "https://search.neet.works", "https://search.ononoki.org", "https://search.snopyta.org", "https://search.st8.at", @@ -50,7 +51,6 @@ let redirects = { "https://searx.dresden.network", "https://searx.esmailelbob.xyz", "https://searx.everdot.org", - "https://searx.feneas.org", "https://searx.fmac.xyz", "https://searx.fossencdi.org", "https://searx.gnous.eu", @@ -106,50 +106,49 @@ let redirects = { "https://swag.pw", "https://sx.catgirl.cloud", "https://sx.fedi.tech", - "https://timdor.noip.me", + "https://timdor.noip.me/searx", "https://trovu.komun.org", "https://www.gruble.de", - "https://www.perfectpixel.de", + "https://www.perfectpixel.de/searx", "https://www.searxs.eu", "https://www.webrats.xyz", "https://xeek.com", - "searx.roflcopter.fr" + "https://searx.roflcopter.fr" ], "onion": [ - "https://3afisqjw2rxm6z7mmstyt5rx75qfqrgxnkzftknbp2vhipr2nrmrjdyd.onion", - "https://searxbgetrkiwxhdwi6svpgh7eotopqyxhbqiokrwzg7dcte44t36kyd.onion", - "https://suche.xyzco456vwisukfg.onion", - "https://w5rl6wsd7mzj4bdkbuqvzidet5osdsm5jhg2f7nvfidakfq5exda5wid.onion", - "https://4n53nafyi77iplnbrpmxnp3x4exbswwxigujaxy3b37fvr7bvlopxeyd.onion", - "https://z34ambyi6makk6ta7ksog2sljly2ctt2sa3apekb7wkllk72sxecdtad.onion", - "https://search.4bkxscubgtxwvhpe.onion", - "https://juy4e6eicawzdrz7.onion", - "https://z5vawdol25vrmorm4yydmohsd4u6rdoj2sylvoi3e3nqvxkvpqul7bqd.onion", - "https://zbuc3bbzbfdqqo2x46repx2ddajbha6fpsjeeptjhhhhzji3zopxdqyd.onion", - "https://f4qfqajszpx5b7itzxt6mb7kj4ktpgbdq7lq6xaiqyqx6a7de3epptad.onion", - "https://searx.cwuzdtzlubq5uual.onion", - "https://rq2w52kyrif3xpfihkgjnhqm3a5aqhoikpv72z3drpjglfzc2wr5z4yd.onion", - "https://searx3aolosaf3urwnhpynlhuokqsgz47si4pzz5hvb7uuzyjncl2tid.onion", - "https://searx.bsbvtqi5oq2cqzn32zt4cr2f2z2rwots3dq7gmdcnlyqoxko2wx6reqd.onion", + "http://3afisqjw2rxm6z7mmstyt5rx75qfqrgxnkzftknbp2vhipr2nrmrjdyd.onion", + "http://searxbgetrkiwxhdwi6svpgh7eotopqyxhbqiokrwzg7dcte44t36kyd.onion", + "http://suche.xyzco456vwisukfg.onion", + "http://w5rl6wsd7mzj4bdkbuqvzidet5osdsm5jhg2f7nvfidakfq5exda5wid.onion", + "http://4n53nafyi77iplnbrpmxnp3x4exbswwxigujaxy3b37fvr7bvlopxeyd.onion", + "http://z34ambyi6makk6ta7ksog2sljly2ctt2sa3apekb7wkllk72sxecdtad.onion", + "http://search.4bkxscubgtxwvhpe.onion", + "http://juy4e6eicawzdrz7.onion", + "http://z5vawdol25vrmorm4yydmohsd4u6rdoj2sylvoi3e3nqvxkvpqul7bqd.onion", + "http://zbuc3bbzbfdqqo2x46repx2ddajbha6fpsjeeptjhhhhzji3zopxdqyd.onion", + "http://f4qfqajszpx5b7itzxt6mb7kj4ktpgbdq7lq6xaiqyqx6a7de3epptad.onion", + "http://searx.cwuzdtzlubq5uual.onion", + "http://rq2w52kyrif3xpfihkgjnhqm3a5aqhoikpv72z3drpjglfzc2wr5z4yd.onion", + "http://searx3aolosaf3urwnhpynlhuokqsgz47si4pzz5hvb7uuzyjncl2tid.onion", + "http://searx.bsbvtqi5oq2cqzn32zt4cr2f2z2rwots3dq7gmdcnlyqoxko2wx6reqd.onion" ], "i2p": [ - "https://ransack.i2p", - "https://mqamk4cfykdvhw5kjez2gnvse56gmnqxn7vkvvbuor4k4j2lbbnq.b32.i2p", + "http://ransack.i2p", + "http://mqamk4cfykdvhw5kjez2gnvse56gmnqxn7vkvvbuor4k4j2lbbnq.b32.i2p" ] }, - "whoogle": { + "whoogle": { "normal": [ "https://s.alefvanoon.xyz", "https://search.albony.xyz", - "https://search.exonip.de", "https://search.garudalinux.org", "https://search.sethforprivacy.com", "https://whoogle.fossho.st", "https://whooglesearch.net", "https://www.whooglesearch.ml", - "https://whoogle.dcs0.hu", + "https://whoogle.dcs0.hu" ] - } + }, }; const getRedirects = () => redirects; diff --git a/src/assets/javascripts/helpers/translate.js b/src/assets/javascripts/helpers/translate.js index d128bc53..198603e9 100644 --- a/src/assets/javascripts/helpers/translate.js +++ b/src/assets/javascripts/helpers/translate.js @@ -16,6 +16,11 @@ let redirects = { "https://manerakai.asuscomm.com:447", "https://translate.bus-hit.me", "https://simplytranslate.pussthecat.org", + "https://translate.northboot.xyz" + ], + "onion": [ + "http://fyng2tsmzmvxmojzbbwmfnsn2lrcyftf4cw6rk5j2v2huliazud3fjid.onion", + "http://xxtbwyb5z5bdvy2f6l2yquu5qilgkjeewno4qfknvb3lkg3nmoklitid.onion" ] }, diff --git a/src/assets/javascripts/helpers/twitter.js b/src/assets/javascripts/helpers/twitter.js index ee5ea287..24d2725e 100644 --- a/src/assets/javascripts/helpers/twitter.js +++ b/src/assets/javascripts/helpers/twitter.js @@ -20,27 +20,63 @@ const targets = [ let redirects = { "normal": [ "https://nitter.net", - "https://nitter.snopyta.org", "https://nitter.42l.fr", - "https://nitter.nixnet.services", "https://nitter.pussthecat.org", - "https://nitter.dark.fail", - "https://nitter.tedomum.net", - "https://nitter.cattube.org", + "https://nitter.nixnet.services", "https://nitter.fdn.fr", "https://nitter.1d4.us", "https://nitter.kavin.rocks", - "https://tweet.lambda.dance", - "https://nitter.cc", - "https://nitter.vxempire.xyz", "https://nitter.unixfox.eu", + "https://nitter.domain.glass", + "https://nitter.eu", + "https://nitter.namazso.eu", + "https://nitter.actionsack.com", + "https://birdsite.xanny.family", + "https://nitter.hu", + "https://twitr.gq", + "https://nitter.moomoo.me", + "https://nittereu.moomoo.me", "https://bird.trom.tf", + "https://nitter.it", + "https://twitter.censors.us", + "https://nitter.grimneko.de", + "https://nitter.alefvanoon.xyz", + "https://n.hyperborea.cloud", + "https://nitter.ca", + "https://twitter.076.ne.jp", + "https://nitter.mstdn.social", + "https://nitter.fly.dev", + "https://notabird.site", + "https://nitter.weiler.rocks", + "https://nitter.silkky.cloud", + "https://nitter.sethforprivacy.com", + "https://nttr.stream", + "https://nitter.cutelab.space", + "https://nitter.nl", + "https://nitter.mint.lgbt", + "https://nitter.tokhmi.xyz", + "https://nitter.bus-hit.me", + "https://fuckthesacklers.network", + "https://nitter.govt.land", + "https://nitter.datatunnel.xyz", + "https://nitter.esmailelbob.xyz" ], "onion": [ "http://3nzoldnxplag42gqjs23xvghtzf6t6yzssrtytnntc6ppc7xxuoneoad.onion", "http://nitter.l4qlywnpwqsluw65ts7md3khrivpirse744un3x7mlskqauz5pyuzgqd.onion", - "http://nitterlgj3n5fgwesu3vxc5h67ruku33nqaoeoocae2mvlzhsu6k7fqd.onion", + "http://nitter7bryz3jv7e3uekphigvmoyoem4al3fynerxkj22dmoxoq553qd.onion", "http://npf37k3mtzwxreiw52ccs5ay4e6qt2fkcs2ndieurdyn2cuzzsfyfvid.onion", + "http://nitter.v6vgyqpa7yefkorazmg5d5fimstmvm2vtbirt6676mt7qmllrcnwycqd.onion", + "http://i23nv6w3juvzlw32xzoxcqzktegd4i4fu3nmnc2ewv4ggiu4ledwklad.onion", + "http://26oq3gioiwcmfojub37nz5gzbkdiqp7fue5kvye7d4txv4ny6fb4wwid.onion", + "http://vfaomgh4jxphpbdfizkm5gbtjahmei234giqj4facbwhrfjtcldauqad.onion", + "http://iwgu3cv7ywf3gssed5iqtavmrlszgsxazkmwwnt4h2kdait75thdyrqd.onion", + "http://erpnncl5nhyji3c32dcfmztujtl3xaddqb457jsbkulq24zqq7ifdgad.onion", + "http://ckzuw5misyahmg7j5t5xwwuj3bwy62jfolxyux4brfflramzsvvd3syd.onion", + "http://jebqj47jgxleaiosfcxfibx2xdahjettuydlxbg64azd4khsxv6kawid.onion", + "http://nttr2iupbb6fazdpr2rgbooon2tzbbsvvkagkgkwohhodjzj43stxhad.onion", + "http://nitraeju2mipeziu2wtcrqsxg7h62v5y4eqgwi75uprynkj74gevvuqd.onion", + "http://nitter.lqs5fjmajyp7rvp4qvyubwofzi6d4imua7vs237rkc4m5qogitqwrgyd.onion" ] }; const getRedirects = () => redirects; diff --git a/src/assets/javascripts/helpers/wikipedia.js b/src/assets/javascripts/helpers/wikipedia.js index d3c9ffb5..e730c8b8 100644 --- a/src/assets/javascripts/helpers/wikipedia.js +++ b/src/assets/javascripts/helpers/wikipedia.js @@ -4,7 +4,13 @@ const targets = /wikipedia.org/; let redirects = { "normal": [ - "https://wikiless.org" + "https://wikiless.org", + "https://wikiless.alefvanoon.xyz", + "https://wikiless.sethforprivacy.com", + "https://wiki.604kph.xyz" + ], + "onion": [ + "http://dj2tbh2nqfxyfmvq33cjmhuw7nb6am7thzd3zsjvizeqf374fixbrxyd.onion" ] }; const getRedirects = () => redirects; diff --git a/src/assets/javascripts/helpers/youtube.js b/src/assets/javascripts/helpers/youtube.js deleted file mode 100644 index 30f7a4b5..00000000 --- a/src/assets/javascripts/helpers/youtube.js +++ /dev/null @@ -1,354 +0,0 @@ -"use strict"; - -import commonHelper from './common.js' - -window.browser = window.browser || window.chrome; - -const targets = [ - "m.youtube.com", - "youtube.com", - "img.youtube.com", - "www.youtube.com", - "youtube-nocookie.com", - "www.youtube-nocookie.com", - "youtu.be", - "s.ytimg.com", - "music.youtube.com", -]; -/* - Please remember to also update the manifest.json file - (content_scripts > matches, 'persist-invidious-prefs.js') - when updating this list: - */ -let redirects = { - "invidious": { - "normal": [ - "https://invidious.snopyta.org", - "https://invidious.xyz", - "https://invidious.kavin.rocks", - "https://tube.connect.cafe", - "https://invidious.zapashcanon.fr", - "https://invidiou.site", - "https://vid.mint.lgbt", - "https://invidious.site", - "https://yewtu.be", - "https://invidious.tube", - "https://invidious.silkky.cloud", - "https://invidious.himiko.cloud", - "https://inv.skyn3t.in", - "https://tube.incognet.io", - "https://invidious.tinfoil-hat.net", - "https://invidious.namazso.eu", - "https://vid.puffyan.us", - "https://dev.viewtube.io", - "https://invidious.048596.xyz", - ], - "onion": [ - "http://fz253lmuao3strwbfbmx46yu7acac2jz27iwtorgmbqlkurlclmancad.onion", - "http://qklhadlycap4cnod.onion", - "http://c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid.onion", - "http://w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd.onion", - ] - }, - "piped": { - "normal": [ - "https://piped.kavin.rocks", - "https://piped.silkky.cloud", - "https://piped.tokhmi.xyz", - "https://piped.mint.lgbt", - ] - } -}; - -const getRedirects = () => redirects; - -function setInvidiousRedirects(val) { - redirects.invidious = val; - browser.storage.sync.set({ youtubeRedirects: redirects }) - console.log("invidiousRedirects: ", val) -} - -function setPipedRedirects(val) { - redirects.piped = val; - browser.storage.sync.set({ youtubeRedirects: redirects }) - console.log("pipedRedirects: ", val) -} - -let disableYoutube; -const getDisableYoutube = () => disableYoutube; -function setDisableYoutube(val) { - disableYoutube = val; - browser.storage.sync.set({ disableYoutube }) - console.log("disableYoutube: ", disableYoutube) -} - -let invidiousInstance; -const getInvidiousInstance = () => invidiousInstance; -function setInvidiousInstance(val) { - invidiousInstance = val; - browser.storage.sync.set({ invidiousInstance }) - console.log("invidiousInstance: ", invidiousInstance) -} - -let invidiousAlwaysProxy; -function setInvidiousAlwaysProxy(val) { - invidiousAlwaysProxy = val; - browser.storage.sync.set({ invidiousAlwaysProxy }) - console.log("invidiousAlwaysProxy: ", invidiousAlwaysProxy); -} -const getInvidiousAlwaysProxy = () => invidiousAlwaysProxy; - -let invidiousOnlyEmbeddedVideo; -function setInvidiousOnlyEmbeddedVideo(val) { - invidiousOnlyEmbeddedVideo = val; - browser.storage.sync.set({ invidiousOnlyEmbeddedVideo }) - console.log("invidiousOnlyEmbeddedVideo: ", invidiousOnlyEmbeddedVideo) -} -const getInvidiousOnlyEmbeddedVideo = () => invidiousOnlyEmbeddedVideo; - -let invidiousVideoQuality; -function setInvidiousVideoQuality(val) { - invidiousVideoQuality = val; - browser.storage.sync.set({ invidiousVideoQuality }) - console.log("invidiousVideoQuality: ", invidiousVideoQuality) -} -const getInvidiousVideoQuality = () => invidiousVideoQuality; - -let invidiousDarkMode; -const getInvidiousDarkMode = () => invidiousDarkMode; -function setInvidiousDarkMode(val) { - invidiousDarkMode = val; - browser.storage.sync.set({ invidiousDarkMode }) - console.log("invidiousDarkMode: ", invidiousDarkMode) -} - -let invidiousVolume; -const getInvidiousVolume = () => invidiousVolume; -function setInvidiousVolume(val) { - invidiousVolume = val; - browser.storage.sync.set({ invidiousVolume }) - console.log("invidiousVolume: ", invidiousVolume) -} - -let invidiousPlayerStyle; -const getInvidiousPlayerStyle = () => invidiousPlayerStyle; -function setInvidiousPlayerStyle(val) { - invidiousPlayerStyle = val; - browser.storage.sync.set({ invidiousPlayerStyle }) - console.log("invidiousPlayerStyle: ", invidiousPlayerStyle) -} - -let invidiousSubtitles; -let getInvidiousSubtitles = () => invidiousSubtitles; -function setInvidiousSubtitles(val) { - invidiousSubtitles = val; - browser.storage.sync.set({ invidiousSubtitles }) - console.log("invidiousSubtitles: ", invidiousSubtitles) -} - -let invidiousAutoplay; -const getInvidiousAutoplay = () => invidiousAutoplay; -function setInvidiousAutoplay(val) { - invidiousAutoplay = val; - browser.storage.sync.set({ invidiousAutoplay }) - console.log("invidiousAutoplay: ", invidiousAutoplay) -} - - -let frontend; -const getFrontend = () => frontend; -function setFrontend(val) { - frontend = val; - browser.storage.sync.set({ youtubeFrontend: val }) - console.log("youtubeFrontend: ", val) -} - -let useFreeTube; -function setUseFreeTube(val) { - useFreeTube = val; - browser.storage.sync.set({ useFreeTube }) - console.log("useFreeTube: ", useFreeTube) -} -const getUseFreeTube = () => useFreeTube; - -let persistInvidiousPrefs; -function setPersistInvidiousPrefs(val) { - persistInvidiousPrefs = val; - browser.storage.sync.set({ persistInvidiousPrefs }) - console.log("persistInvidiousPrefs: ", persistInvidiousPrefs) - if (persistInvidiousPrefs) initInvidiousCookie() -} -const getPersistInvidiousPrefs = () => persistInvidiousPrefs; - -function isYoutube(url) { - return targets.includes(url.host); -} - -function getCookie() { - let ca = document.cookie.split(";"); - for (let i = 0; i < ca.length; i++) { - let c = ca[i]; - while (c.charAt(0) == " ") c = c.substring(1, c.length); - if (c.indexOf("PREFS=") == 0) - return JSON.parse( - decodeURIComponent(c.substring("PREFS=".length, c.length)) - ); - } - return {}; -} - -function initInvidiousCookie() { - const prefs = getCookie(); - prefs.local = invidiousAlwaysProxy; - prefs.quality = invidiousVideoQuality; - prefs.dark_mode = invidiousDarkMode; - document.cookie = `PREFS=${encodeURIComponent(JSON.stringify(prefs))}`; -} - -async function init() { - let result = await browser.storage.sync.get( - [ - "invidiousAlwaysProxy", - "invidiousVideoQuality", - "invidiousDarkMode", - "persistInvidiousPrefs", - "disableYoutube", - "invidiousInstance", - "invidiousAlwaysProxy", - "invidiousOnlyEmbeddedVideo", - "invidiousVideoQuality", - "invidiousDarkMode", - "invidiousVolume", - "invidiousPlayerStyle", - "invidiousSubtitles", - "invidiousAutoplay", - "useFreeTube", - "youtubeRedirects", - "youtubeFrontend", - ]); - disableYoutube = result.disableYoutube ?? false; - invidiousInstance = result.invidiousInstance; - invidiousAlwaysProxy = result.invidiousAlwaysProxy ?? true; - invidiousOnlyEmbeddedVideo = result.invidiousOnlyEmbeddedVideo ?? false; - invidiousVideoQuality = result.invidiousVideoQuality ?? 'medium'; - invidiousDarkMode = result.invidiousDarkMode ?? true; - invidiousVolume = result.invidiousVolume ?? 50; - invidiousPlayerStyle = result.invidiousPlayerStyle ?? 'invidious'; - invidiousSubtitles = result.invidiousSubtitles || ''; - invidiousAutoplay = result.invidiousAutoplay ?? true; - useFreeTube = result.useFreeTube ?? false; - - if (result.youtubeRedirects) - redirects = result.youtubeRedirects - - if (result.persistInvidiousPrefs) initInvidiousCookie(); - - frontend = result.youtubeFrontend ?? 'piped'; -} - -function redirect(url, initiator, type) { - if (disableYoutube) - return null; - - if ( - initiator && - ( - initiator.origin === invidiousInstance || - redirects.invidious.normal.includes(initiator.origin) || - redirects.piped.normal.includes(initiator.origin) || - targets.includes(initiator.host) - ) - ) - return null; - - if (frontend == 'invidious') { - - if (url.pathname.match(/iframe_api/) || url.pathname.match(/www-widgetapi/)) return null; // Don't redirect YouTube Player API. - - if (url.host.split(".")[0] === "studio") return null; // Avoid redirecting `studio.youtube.com` - - if (invidiousOnlyEmbeddedVideo && type !== "sub_frame") return null; - - if (useFreeTube && type === "main_frame") - return `freetube://${url}`; - - // Apply settings - if (invidiousAlwaysProxy) url.searchParams.append("local", true); - - if (invidiousVideoQuality) url.searchParams.append("quality", invidiousVideoQuality); - - if (invidiousDarkMode) url.searchParams.append("dark_mode", invidiousDarkMode); - - if (invidiousVolume) url.searchParams.append("volume", invidiousVolume); - - if (invidiousPlayerStyle) url.searchParams.append("player_style", invidiousPlayerStyle); - - if (invidiousSubtitles) url.searchParams.append("subtitles", invidiousSubtitles); - - if (invidiousAutoplay) url.searchParams.append("autoplay", 1); - - let randomInstance = commonHelper.getRandomInstance(redirects.invidious.normal) - - return `${randomInstance}${url.pathname.replace("/shorts", "")}${url.search}`; - - } else if (frontend == 'piped') { - let randomInstance = commonHelper.getRandomInstance(redirects.piped.normal); - if (url.hostname.endsWith("youtube.com") || url.hostname.endsWith("youtube-nocookie.com")) - return `${randomInstance}${url.pathname}${url.search}`; - - if (url.hostname.endsWith("youtu.be") && url.pathname.length > 1) - return `${randomInstance}/watch?v=${url.pathname.substring(1)}`; - - } -} - - -export default { - getFrontend, - setFrontend, - - getRedirects, - setInvidiousRedirects, - setPipedRedirects, - - redirect, - isYoutube, - - getDisableYoutube, - setDisableYoutube, - - setInvidiousInstance, - getInvidiousInstance, - - setInvidiousAlwaysProxy, - getInvidiousAlwaysProxy, - - setInvidiousOnlyEmbeddedVideo, - getInvidiousOnlyEmbeddedVideo, - - setInvidiousVideoQuality, - getInvidiousVideoQuality, - - setInvidiousDarkMode, - getInvidiousDarkMode, - - setInvidiousVolume, - getInvidiousVolume, - - setInvidiousPlayerStyle, - getInvidiousPlayerStyle, - - setInvidiousSubtitles, - getInvidiousSubtitles, - - setInvidiousAutoplay, - getInvidiousAutoplay, - - getUseFreeTube, - setUseFreeTube, - - getPersistInvidiousPrefs, - setPersistInvidiousPrefs, - - init, -}; diff --git a/src/assets/javascripts/helpers/youtube/invidious-cookies.js b/src/assets/javascripts/helpers/youtube/invidious-cookies.js new file mode 100644 index 00000000..6b77a278 --- /dev/null +++ b/src/assets/javascripts/helpers/youtube/invidious-cookies.js @@ -0,0 +1,38 @@ + +function getCookie() { + let ca = document.cookie.split(";"); + for (let i = 0; i < ca.length; i++) { + let c = ca[i]; + while (c.charAt(0) == " ") c = c.substring(1, c.length); + if (c.indexOf("PREFS=") == 0) + return JSON.parse( + decodeURIComponent(c.substring("PREFS=".length, c.length)) + ); + } + return {}; +} + +browser.storage.sync.get( + [ + "invidiousAlwaysProxy", + "invidiousVideoQuality", + "invidiousDarkMode", + "invidiousOnlyEmbeddedVideo", + "invidiousVolume", + "invidiousPlayerStyle", + "invidiousSubtitles", + "invidiousAutoplay", + ], (result) => { + const prefs = getCookie(); + + prefs.local = result.invidiousAlwaysProxy; + prefs.quality = result.invidiousVideoQuality; + prefs.dark_mode = result.invidiousDarkMode; + prefs.volume = result.invidiousVolume; + prefs.player_style = result.invidiousPlayerStyle; + prefs.subtitles = result.invidiousSubtitles; + prefs.autoplay = result.invidiousAutoplay; + + document.cookie = `PREFS=${encodeURIComponent(JSON.stringify(prefs))}`; + } +) diff --git a/src/assets/javascripts/helpers/youtube/youtube.js b/src/assets/javascripts/helpers/youtube/youtube.js new file mode 100644 index 00000000..547e2614 --- /dev/null +++ b/src/assets/javascripts/helpers/youtube/youtube.js @@ -0,0 +1,325 @@ +"use strict"; + +import commonHelper from '../common.js' + +window.browser = window.browser || window.chrome; + +const targets = [ + "m.youtube.com", + "youtube.com", + "img.youtube.com", + "www.youtube.com", + "youtube-nocookie.com", + "www.youtube-nocookie.com", + "youtu.be", + "s.ytimg.com", + "music.youtube.com", +]; +let redirects = { + "invidious": { + "normal": [ + "https://yewtu.be", + "https://invidious.snopyta.org", + "https://vid.puffyan.us", + "https://invidious.kavin.rocks", + "https://invidio.xamh.de", + "https://inv.riverside.rocks", + "https://invidious-us.kavin.rocks", + "https://invidious.osi.kr", + "https://inv.cthd.icu", + "https://yt.artemislena.eu", + "https://youtube.076.ne.jp", + "https://invidious.namazso.eu" + ], + "onion": [ + "http://c7hqkpkpemu6e7emz5b4vyz7idjgdvgaaa3dyimmeojqbgpea3xqjoid.onion", + "http://w6ijuptxiku4xpnnaetxvnkc5vqcdu7mgns2u77qefoixi63vbvnpnqd.onion", + "http://kbjggqkzv65ivcqj6bumvp337z6264huv5kpkwuv6gu5yjiskvan7fad.onion", + "http://grwp24hodrefzvjjuccrkw3mjq4tzhaaq32amf33dzpmuxe7ilepcmad.onion", + "http://hpniueoejy4opn7bc4ftgazyqjoeqwlvh2uiku2xqku6zpoa4bf5ruid.onion", + "http://osbivz6guyeahrwp2lnwyjk2xos342h4ocsxyqrlaopqjuhwn2djiiyd.onion", + "http://u2cvlit75owumwpy4dj2hsmvkq7nvrclkpht7xgyye2pyoxhpmclkrad.onion" + ] + }, + "piped": { + "normal": [ + "https://piped.kavin.rocks", + "https://piped.silkky.cloud", + "https://piped.tokhmi.xyz", + "https://piped.mint.lgbt", + ] + } +}; + +const getRedirects = () => redirects; + +function setInvidiousRedirects(val) { + redirects.invidious = val; + browser.storage.sync.set({ youtubeRedirects: redirects }) + console.log("invidiousRedirects: ", val) +} + +function setPipedRedirects(val) { + redirects.piped = val; + browser.storage.sync.set({ youtubeRedirects: redirects }) + console.log("pipedRedirects: ", val) +} + +let disableYoutube; +const getDisableYoutube = () => disableYoutube; +function setDisableYoutube(val) { + disableYoutube = val; + browser.storage.sync.set({ disableYoutube }) + console.log("disableYoutube: ", disableYoutube) +} + +let invidiousInstance; +const getInvidiousInstance = () => invidiousInstance; +function setInvidiousInstance(val) { + invidiousInstance = val; + browser.storage.sync.set({ invidiousInstance }) + console.log("invidiousInstance: ", invidiousInstance) +} + +let invidiousAlwaysProxy; +function setInvidiousAlwaysProxy(val) { + invidiousAlwaysProxy = val; + browser.storage.sync.set({ invidiousAlwaysProxy }) + console.log("invidiousAlwaysProxy: ", invidiousAlwaysProxy); +} +const getInvidiousAlwaysProxy = () => invidiousAlwaysProxy; + +let invidiousOnlyEmbeddedVideo; +function setInvidiousOnlyEmbeddedVideo(val) { + invidiousOnlyEmbeddedVideo = val; + browser.storage.sync.set({ invidiousOnlyEmbeddedVideo }) + console.log("invidiousOnlyEmbeddedVideo: ", invidiousOnlyEmbeddedVideo) +} +const getInvidiousOnlyEmbeddedVideo = () => invidiousOnlyEmbeddedVideo; + +let invidiousVideoQuality; +function setInvidiousVideoQuality(val) { + invidiousVideoQuality = val; + browser.storage.sync.set({ invidiousVideoQuality }) + console.log("invidiousVideoQuality: ", invidiousVideoQuality) +} +const getInvidiousVideoQuality = () => invidiousVideoQuality; + +let invidiousDarkMode; +const getInvidiousDarkMode = () => invidiousDarkMode; +function setInvidiousDarkMode(val) { + invidiousDarkMode = val; + browser.storage.sync.set({ invidiousDarkMode }) + console.log("invidiousDarkMode: ", invidiousDarkMode) +} + +let invidiousVolume; +const getInvidiousVolume = () => invidiousVolume; +function setInvidiousVolume(val) { + invidiousVolume = val; + browser.storage.sync.set({ invidiousVolume }) + console.log("invidiousVolume: ", invidiousVolume) +} + +let invidiousPlayerStyle; +const getInvidiousPlayerStyle = () => invidiousPlayerStyle; +function setInvidiousPlayerStyle(val) { + invidiousPlayerStyle = val; + browser.storage.sync.set({ invidiousPlayerStyle }) + console.log("invidiousPlayerStyle: ", invidiousPlayerStyle) +} + +let invidiousSubtitles; +let getInvidiousSubtitles = () => invidiousSubtitles; +function setInvidiousSubtitles(val) { + invidiousSubtitles = val; + browser.storage.sync.set({ invidiousSubtitles }) + console.log("invidiousSubtitles: ", invidiousSubtitles) +} + +let invidiousAutoplay; +const getInvidiousAutoplay = () => invidiousAutoplay; +function setInvidiousAutoplay(val) { + invidiousAutoplay = val; + browser.storage.sync.set({ invidiousAutoplay }) + console.log("invidiousAutoplay: ", invidiousAutoplay) +} + + +let frontend; +const getFrontend = () => frontend; +function setFrontend(val) { + frontend = val; + browser.storage.sync.set({ youtubeFrontend: val }) + console.log("youtubeFrontend: ", val) +} + +let useFreeTube; +function setUseFreeTube(val) { + useFreeTube = val; + browser.storage.sync.set({ useFreeTube }) + console.log("useFreeTube: ", useFreeTube) +} +const getUseFreeTube = () => useFreeTube; + +let persistInvidiousPrefs; +function setPersistInvidiousPrefs(val) { + persistInvidiousPrefs = val; + browser.storage.sync.set({ persistInvidiousPrefs }) + console.log("persistInvidiousPrefs: ", persistInvidiousPrefs) +} +const getPersistInvidiousPrefs = () => persistInvidiousPrefs; + +function isYoutube(url) { + return targets.includes(url.host); +} + +async function init() { + let result = await browser.storage.sync.get( + [ + "invidiousAlwaysProxy", + "invidiousVideoQuality", + "invidiousDarkMode", + "persistInvidiousPrefs", + "disableYoutube", + "invidiousInstance", + "invidiousOnlyEmbeddedVideo", + "invidiousVolume", + "invidiousPlayerStyle", + "invidiousSubtitles", + "invidiousAutoplay", + "useFreeTube", + "youtubeRedirects", + "youtubeFrontend", + ]); + if (result.youtubeRedirects) redirects = result.youtubeRedirects + frontend = result.youtubeFrontend ?? 'piped'; + disableYoutube = result.disableYoutube ?? false; + + invidiousInstance = result.invidiousInstance; + + invidiousAlwaysProxy = result.invidiousAlwaysProxy ?? true; + invidiousOnlyEmbeddedVideo = result.invidiousOnlyEmbeddedVideo ?? false; + invidiousVideoQuality = result.invidiousVideoQuality ?? 'medium'; + invidiousDarkMode = result.invidiousDarkMode ?? true; + invidiousVolume = result.invidiousVolume ?? 50; + invidiousPlayerStyle = result.invidiousPlayerStyle ?? 'invidious'; + invidiousSubtitles = result.invidiousSubtitles || ''; + invidiousAutoplay = result.invidiousAutoplay ?? true; + + persistInvidiousPrefs = result.persistInvidiousPrefs ?? false; + + useFreeTube = result.useFreeTube ?? false; +} + +function invidiousInitCookies(tabId) { + browser.tabs.executeScript( + tabId, { + file: "/assets/javascripts/helpers/youtube/invidious-cookies.js", + runAt: "document_start" + }); +} + +function redirect(url, initiator, type) { + if (disableYoutube) + return null; + + if ( + initiator && + ( + initiator.origin === invidiousInstance || + redirects.invidious.normal.includes(initiator.origin) || + redirects.piped.normal.includes(initiator.origin) || + targets.includes(initiator.host) + ) + ) + return null; + + if (frontend == 'freeTube' && type === "main_frame") + return `freetube://${url}`; + else if (frontend == 'invidious') { + + if (url.pathname.match(/iframe_api/) || url.pathname.match(/www-widgetapi/)) return null; // Don't redirect YouTube Player API. + + if (url.host.split(".")[0] === "studio") { + console.log("no because studio"); + return null; + }; // Avoid redirecting `studio.youtube.com` + + if (invidiousOnlyEmbeddedVideo && type !== "sub_frame") return null; + + url.searchParams.append("local", invidiousAlwaysProxy); + url.searchParams.append("quality", invidiousVideoQuality); + url.searchParams.append("dark_mode", invidiousDarkMode); + url.searchParams.append("volume", invidiousVolume); + url.searchParams.append("player_style", invidiousPlayerStyle); + url.searchParams.append("subtitles", invidiousSubtitles); + url.searchParams.append("autoplay", invidiousAutoplay); + + let randomInstance = commonHelper.getRandomInstance(redirects.invidious.normal) + + return `${randomInstance}${url.pathname.replace("/shorts", "")}${url.search}`; + + } else if (frontend == 'piped') { + let randomInstance = commonHelper.getRandomInstance(redirects.piped.normal); + if (url.hostname.endsWith("youtube.com") || url.hostname.endsWith("youtube-nocookie.com")) + return `${randomInstance}${url.pathname}${url.search}`; + + if (url.hostname.endsWith("youtu.be") && url.pathname.length > 1) + return `${randomInstance}/watch?v=${url.pathname.substring(1)}`; + + } +} + + +export default { + invidiousInitCookies, + + getFrontend, + setFrontend, + + getRedirects, + setInvidiousRedirects, + setPipedRedirects, + + redirect, + isYoutube, + + getDisableYoutube, + setDisableYoutube, + + setInvidiousInstance, + getInvidiousInstance, + + setInvidiousAlwaysProxy, + getInvidiousAlwaysProxy, + + setInvidiousOnlyEmbeddedVideo, + getInvidiousOnlyEmbeddedVideo, + + setInvidiousVideoQuality, + getInvidiousVideoQuality, + + setInvidiousDarkMode, + getInvidiousDarkMode, + + setInvidiousVolume, + getInvidiousVolume, + + setInvidiousPlayerStyle, + getInvidiousPlayerStyle, + + setInvidiousSubtitles, + getInvidiousSubtitles, + + setInvidiousAutoplay, + getInvidiousAutoplay, + + getUseFreeTube, + setUseFreeTube, + + getPersistInvidiousPrefs, + setPersistInvidiousPrefs, + + init, +}; diff --git a/src/manifest.json b/src/manifest.json index ff2cad69..161162e9 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -42,7 +42,7 @@ } }, "options_ui": { - "page": "pages/options/general.html", + "page": "pages/options/general/general.html", "browser_style": false, "open_in_tab": true }, diff --git a/src/pages/background/background.js b/src/pages/background/background.js index caa7444d..30d7ae32 100644 --- a/src/pages/background/background.js +++ b/src/pages/background/background.js @@ -1,6 +1,6 @@ "use strict"; -import youtubeHelper from "../../assets/javascripts/helpers/youtube.js"; +import youtubeHelper from "../../assets/javascripts/helpers/youtube/youtube.js"; import twitterHelper from "../../assets/javascripts/helpers/twitter.js"; import instagramHelper from "../../assets/javascripts/helpers/instagram.js"; import redditHelper from "../../assets/javascripts/helpers/reddit.js"; @@ -75,6 +75,13 @@ browser.tabs.onUpdated.addListener((tabId, changeInfo, _) => { return; } var protocolHost = `${url.protocol}//${url.host}`; + + + if (youtubeHelper.getRedirects().invidious.normal.includes(protocolHost)) { + if (youtubeHelper.getPersistInvidiousPrefs()) + youtubeHelper.invidiousInitCookies(tabId); + } + var mightyList = []; mightyList.push( ...youtubeHelper.getRedirects().invidious.normal, diff --git a/src/pages/options/general.html b/src/pages/options/general.html deleted file mode 100644 index 507e65c3..00000000 --- a/src/pages/options/general.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - LibRedirect Options - - - - - - - -
-
-

Theme

- -
- -
-
-

- Enter a URL or Regular Expression to be excluded from redirects. -

-

- All requests for or initiating from a URL that matches your exception - will be excluded from redirects. -

-

- Note - Supports JavaScript regular expressions, excluding the - enclosing forward slashes. -

-
-
- - - - - - - - - - - -
-

Add Exception

-
- - - - - - - - -
-
- -
- - - - - - - - \ No newline at end of file diff --git a/src/pages/options/general.js b/src/pages/options/general.js deleted file mode 100644 index 1104ba16..00000000 --- a/src/pages/options/general.js +++ /dev/null @@ -1,99 +0,0 @@ -"use strict"; - -import data from "../../assets/javascripts/data.js"; -import commonHelper from "../../assets/javascripts/helpers/common.js"; - -import shared from "./shared.js"; - -const domparser = new DOMParser(); - -let themeElement = document.getElementById("theme"); - -window.browser = window.browser || window.chrome; - -function prependExceptionsItem(item, index) { - const li = document.createElement("li"); - li.appendChild(document.createTextNode(item.toString())); - const button = document.createElement("button"); - li.appendChild(button); - document.getElementById("exceptions-items").prepend(li); - const svg = ` - - - `; - button.appendChild(domparser.parseFromString(svg, "image/svg+xml").documentElement); - button.addEventListener("click", () => { - exceptions.splice(index, 1); - browser.storage.sync.set({ exceptions: exceptions }); - li.remove(); - }); -} - -browser.storage.sync.get( - [ - "exceptions", - "theme", - ], - (result) => { - data.theme = result.theme || ""; - themeElement.value = result.theme || ""; - if (result.theme) document.body.classList.add(result.theme); - data.exceptions = result.exceptions || []; - data.exceptions.forEach(prependExceptionsItem); - shared.autocompletes.forEach((value) => { - }); - } -); - -function addToExceptions() { - const input = document.getElementById("new-exceptions-item"); - const type = document.querySelector('input[name="type"]:checked').value; - if (input.value) { - try { - let value = input.value; - new RegExp(input.value); - if (type === "URL") - value = value.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"); - - exceptions.push(value); - browser.storage.sync.set({ - exceptions: exceptions, - }); - prependExceptionsItem(value, exceptions.indexOf(value)); - input.value = ""; - } catch (error) { - input.setCustomValidity("Invalid RegExp"); - } - } else { - input.setCustomValidity("Invalid RegExp"); - } -} -document.getElementById("add-to-exceptions").addEventListener("click", addToExceptions); - -themeElement.addEventListener("change", (event) => { - const value = event.target.options[theme.selectedIndex].value; - switch (value) { - case "dark-theme": - document.body.classList.add("dark-theme"); - document.body.classList.remove("light-theme"); - break; - case "light-theme": - document.body.classList.add("light-theme"); - document.body.classList.remove("dark-theme"); - break; - default: - document.body.classList.remove("light-theme"); - document.body.classList.remove("dark-theme"); - } - browser.storage.sync.set({ theme: value }); -}); - -document.querySelector("#update-instances").addEventListener("click", () => { - document.querySelector("#update-instances").innerHTML = '...'; - if (commonHelper.updateInstances()) - document.querySelector("#update-instances").innerHTML = 'Done!'; - else - document.querySelector("#update-instances").innerHTML = 'Failed Miserabely'; -}); diff --git a/src/pages/options/general/general.html b/src/pages/options/general/general.html new file mode 100644 index 00000000..8c46c40b --- /dev/null +++ b/src/pages/options/general/general.html @@ -0,0 +1,106 @@ + + + + + + + + LibRedirect Options + + + + + + + +
+
+

Theme

+ +
+ +
+
+

+ Enter a URL or Regular Expression to be excluded from redirects. +

+

+ All requests for or initiating from a URL that matches your exception + will be excluded from redirects. +

+

+ Note - Supports JavaScript regular expressions, excluding the + enclosing forward slashes. +

+
+
+ + + + + + + + + + + +
+

Add Exception

+
+ + + + + + + + +
+
+ +
+ + + + + + + + \ No newline at end of file diff --git a/src/pages/options/general/general.js b/src/pages/options/general/general.js new file mode 100644 index 00000000..4f111469 --- /dev/null +++ b/src/pages/options/general/general.js @@ -0,0 +1,99 @@ +"use strict"; + +import data from "../../../assets/javascripts/data.js"; +import commonHelper from "../../../assets/javascripts/helpers/common.js"; + +import shared from "../shared.js"; + +const domparser = new DOMParser(); + +let themeElement = document.getElementById("theme"); + +window.browser = window.browser || window.chrome; + +function prependExceptionsItem(item, index) { + const li = document.createElement("li"); + li.appendChild(document.createTextNode(item.toString())); + const button = document.createElement("button"); + li.appendChild(button); + document.getElementById("exceptions-items").prepend(li); + const svg = ` + + + `; + button.appendChild(domparser.parseFromString(svg, "image/svg+xml").documentElement); + button.addEventListener("click", () => { + exceptions.splice(index, 1); + browser.storage.sync.set({ exceptions: exceptions }); + li.remove(); + }); +} + +browser.storage.sync.get( + [ + "exceptions", + "theme", + ], + (result) => { + data.theme = result.theme || ""; + themeElement.value = result.theme || ""; + if (result.theme) document.body.classList.add(result.theme); + data.exceptions = result.exceptions || []; + data.exceptions.forEach(prependExceptionsItem); + shared.autocompletes.forEach((value) => { + }); + } +); + +function addToExceptions() { + const input = document.getElementById("new-exceptions-item"); + const type = document.querySelector('input[name="type"]:checked').value; + if (input.value) { + try { + let value = input.value; + new RegExp(input.value); + if (type === "URL") + value = value.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&"); + + exceptions.push(value); + browser.storage.sync.set({ + exceptions: exceptions, + }); + prependExceptionsItem(value, exceptions.indexOf(value)); + input.value = ""; + } catch (error) { + input.setCustomValidity("Invalid RegExp"); + } + } else { + input.setCustomValidity("Invalid RegExp"); + } +} +document.getElementById("add-to-exceptions").addEventListener("click", addToExceptions); + +themeElement.addEventListener("change", (event) => { + const value = event.target.options[theme.selectedIndex].value; + switch (value) { + case "dark-theme": + document.body.classList.add("dark-theme"); + document.body.classList.remove("light-theme"); + break; + case "light-theme": + document.body.classList.add("light-theme"); + document.body.classList.remove("dark-theme"); + break; + default: + document.body.classList.remove("light-theme"); + document.body.classList.remove("dark-theme"); + } + browser.storage.sync.set({ theme: value }); +}); + +document.querySelector("#update-instances").addEventListener("click", () => { + document.querySelector("#update-instances").innerHTML = '...'; + if (commonHelper.updateInstances()) + document.querySelector("#update-instances").innerHTML = 'Done!'; + else + document.querySelector("#update-instances").innerHTML = 'Failed Miserabely'; +}); diff --git a/src/pages/options/instagram.html b/src/pages/options/instagram.html deleted file mode 100644 index 25cfc8f2..00000000 --- a/src/pages/options/instagram.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - -
-
-

Enable

- -
- - - - - -
- - - - - - \ No newline at end of file diff --git a/src/pages/options/instagram.js b/src/pages/options/instagram.js deleted file mode 100644 index b4e57def..00000000 --- a/src/pages/options/instagram.js +++ /dev/null @@ -1,11 +0,0 @@ -import instagramHelper from "../../assets/javascripts/helpers/instagram.js"; - -let disableInstagramElement = document.getElementById("disable-bibliogram"); - -instagramHelper.init().then(() => { - disableInstagramElement.checked = !instagramHelper.getDisableInstagram(); -}) - -disableInstagramElement.addEventListener("change", - (event) => instagramHelper.setDisableInstagram(!event.target.checked) -); \ No newline at end of file diff --git a/src/pages/options/instagram/instagram.html b/src/pages/options/instagram/instagram.html new file mode 100644 index 00000000..dfbbd7f7 --- /dev/null +++ b/src/pages/options/instagram/instagram.html @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + +
+
+

Enable

+ +
+ + + + + +
+ + + + + + \ No newline at end of file diff --git a/src/pages/options/instagram/instagram.js b/src/pages/options/instagram/instagram.js new file mode 100644 index 00000000..c5aad9c2 --- /dev/null +++ b/src/pages/options/instagram/instagram.js @@ -0,0 +1,10 @@ +import instagramHelper from "../../../assets/javascripts/helpers/instagram.js"; + +let disableInstagramElement = document.getElementById("disable-bibliogram"); +disableInstagramElement.addEventListener("change", + (event) => instagramHelper.setDisableInstagram(!event.target.checked) +); + +instagramHelper.init().then(() => { + disableInstagramElement.checked = !instagramHelper.getDisableInstagram(); +}) \ No newline at end of file diff --git a/src/pages/options/maps.html b/src/pages/options/maps.html deleted file mode 100644 index bfcedbaf..00000000 --- a/src/pages/options/maps.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - - - - LibRedirect Options: Twitter - - - - - - -
-
-

Enable

- -
- -
- - - - - - \ No newline at end of file diff --git a/src/pages/options/maps.js b/src/pages/options/maps.js deleted file mode 100644 index 9e5bb2cc..00000000 --- a/src/pages/options/maps.js +++ /dev/null @@ -1,11 +0,0 @@ -import mapsHelper from "../../assets/javascripts/helpers/maps.js"; - -let disableMapsElement = document.getElementById("disable-osm"); - -mapsHelper.init().then(() => { - disableMapsElement.checked = !mapsHelper.getDisableMaps(); -}) - -disableMapsElement.addEventListener("change", - (event) => mapsHelper.setDisableMaps(!event.target.checked) -); \ No newline at end of file diff --git a/src/pages/options/maps/maps.html b/src/pages/options/maps/maps.html new file mode 100644 index 00000000..7702d019 --- /dev/null +++ b/src/pages/options/maps/maps.html @@ -0,0 +1,44 @@ + + + + + + + + + LibRedirect Options: Twitter + + + + + + +
+
+

Enable

+ +
+ +
+ + + + + + \ No newline at end of file diff --git a/src/pages/options/maps/maps.js b/src/pages/options/maps/maps.js new file mode 100644 index 00000000..edb1cca3 --- /dev/null +++ b/src/pages/options/maps/maps.js @@ -0,0 +1,10 @@ +import mapsHelper from "../../../assets/javascripts/helpers/maps.js"; + +let disableMapsElement = document.getElementById("disable-osm"); +disableMapsElement.addEventListener("change", + (event) => mapsHelper.setDisableMaps(!event.target.checked) +); + +mapsHelper.init().then(() => { + disableMapsElement.checked = !mapsHelper.getDisableMaps(); +}) \ No newline at end of file diff --git a/src/pages/options/medium.html b/src/pages/options/medium.html deleted file mode 100644 index fb44b7ee..00000000 --- a/src/pages/options/medium.html +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - LibRedirect Options: Twitter - - - - - -
-
-

Enable

- -
- -
- - - - - - - \ No newline at end of file diff --git a/src/pages/options/medium.js b/src/pages/options/medium.js deleted file mode 100644 index 4f0377f5..00000000 --- a/src/pages/options/medium.js +++ /dev/null @@ -1,11 +0,0 @@ -import mediumHelper from "../../assets/javascripts/helpers/medium.js"; - -let disableMediumElement = document.getElementById("disable-scribe"); - -mediumHelper.init().then(() => { - disableMediumElement.checked = !mediumHelper.getDisableMedium(); -}) - -disableMediumElement.addEventListener("change", - (event) => mediumHelper.setDisableMedium(!event.target.checked) -); diff --git a/src/pages/options/medium/medium.html b/src/pages/options/medium/medium.html new file mode 100644 index 00000000..877d704e --- /dev/null +++ b/src/pages/options/medium/medium.html @@ -0,0 +1,53 @@ + + + + + + + + + LibRedirect Options: Twitter + + + + + +
+
+

Enable

+ +
+ +
+ + + + + + + \ No newline at end of file diff --git a/src/pages/options/medium/medium.js b/src/pages/options/medium/medium.js new file mode 100644 index 00000000..fea66855 --- /dev/null +++ b/src/pages/options/medium/medium.js @@ -0,0 +1,10 @@ +import mediumHelper from "../../../assets/javascripts/helpers/medium.js"; + +let disableMediumElement = document.getElementById("disable-scribe"); +disableMediumElement.addEventListener("change", + (event) => mediumHelper.setDisableMedium(!event.target.checked) +); + +mediumHelper.init().then(() => { + disableMediumElement.checked = !mediumHelper.getDisableMedium(); +}) \ No newline at end of file diff --git a/src/pages/options/reddit.html b/src/pages/options/reddit.html deleted file mode 100644 index 14474285..00000000 --- a/src/pages/options/reddit.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - LibRedirect Options: Twitter - - - - - - -
- -
-

Enable

- -
- - - -
-

Frontend

- -
- - - -
- - - - - - - \ No newline at end of file diff --git a/src/pages/options/reddit.js b/src/pages/options/reddit.js deleted file mode 100644 index 0222c6dd..00000000 --- a/src/pages/options/reddit.js +++ /dev/null @@ -1,17 +0,0 @@ -import redditHelper from "../../assets/javascripts/helpers/reddit.js"; - -let disableRedditElement = document.getElementById("disable-reddit"); -let redditFrontendElement = document.getElementById("reddit-frontend"); - -redditHelper.init().then(() => { - disableRedditElement.checked = !redditHelper.getDisableReddit(); - redditFrontendElement.value = redditHelper.getRedditFrontend(); -}) - -disableRedditElement.addEventListener("change", - (event) => redditHelper.setDisableReddit(!event.target.checked) -); - -redditFrontendElement.addEventListener("change", - (event) => redditHelper.setRedditFrontend(event.target.options[redditFrontendElement.selectedIndex].value) -); \ No newline at end of file diff --git a/src/pages/options/reddit/reddit.html b/src/pages/options/reddit/reddit.html new file mode 100644 index 00000000..b3f9c7c7 --- /dev/null +++ b/src/pages/options/reddit/reddit.html @@ -0,0 +1,72 @@ + + + + + + + + + LibRedirect Options: Twitter + + + + + + +
+ +
+

Enable

+ +
+ + + +
+

Frontend

+ +
+ + + +
+ + + + + + + \ No newline at end of file diff --git a/src/pages/options/reddit/reddit.js b/src/pages/options/reddit/reddit.js new file mode 100644 index 00000000..92bd6e46 --- /dev/null +++ b/src/pages/options/reddit/reddit.js @@ -0,0 +1,16 @@ +import redditHelper from "../../../assets/javascripts/helpers/reddit.js"; + +let disableRedditElement = document.getElementById("disable-reddit"); +disableRedditElement.addEventListener("change", + (event) => redditHelper.setDisableReddit(!event.target.checked) +); + +let redditFrontendElement = document.getElementById("reddit-frontend"); +redditFrontendElement.addEventListener("change", + (event) => redditHelper.setRedditFrontend(event.target.options[redditFrontendElement.selectedIndex].value) +); + +redditHelper.init().then(() => { + disableRedditElement.checked = !redditHelper.getDisableReddit(); + redditFrontendElement.value = redditHelper.getRedditFrontend(); +}) \ No newline at end of file diff --git a/src/pages/options/search.html b/src/pages/options/search.html deleted file mode 100644 index d0510eed..00000000 --- a/src/pages/options/search.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - LibRedirect Options: Twitter - - - - - -
-
-

Enable

- -
- - -
-

Frontend

- -
- - -
- - - - - - - - - \ No newline at end of file diff --git a/src/pages/options/search.js b/src/pages/options/search.js deleted file mode 100644 index 2029392c..00000000 --- a/src/pages/options/search.js +++ /dev/null @@ -1,17 +0,0 @@ -import searchHelper from "../../assets/javascripts/helpers/search.js"; - -let disableSearchElement = document.getElementById("disable-search"); -let searchFrontendElement = document.getElementById("search-frontend"); - -searchHelper.init().then(() => { - disableSearchElement.checked = !searchHelper.getDisableSearch(); - searchFrontendElement.value = searchHelper.getSearchFrontend(); -}); - -searchFrontendElement.addEventListener("change", - (event) => searchHelper.setSearchFrontend(event.target.options[searchFrontendElement.selectedIndex].value) -); - -disableSearchElement.addEventListener("change", - (event) => searchHelper.setDisableSearch(!event.target.checked) -); diff --git a/src/pages/options/search/search.html b/src/pages/options/search/search.html new file mode 100644 index 00000000..863a3472 --- /dev/null +++ b/src/pages/options/search/search.html @@ -0,0 +1,73 @@ + + + + + + + + + LibRedirect Options: Twitter + + + + + +
+
+

Enable

+ +
+ + +
+

Frontend

+ +
+ + +
+ + + + + + + + + \ No newline at end of file diff --git a/src/pages/options/search/search.js b/src/pages/options/search/search.js new file mode 100644 index 00000000..e38480e2 --- /dev/null +++ b/src/pages/options/search/search.js @@ -0,0 +1,16 @@ +import searchHelper from "../../../assets/javascripts/helpers/search.js"; + +let searchFrontendElement = document.getElementById("search-frontend"); +searchFrontendElement.addEventListener("change", + (event) => searchHelper.setSearchFrontend(event.target.options[searchFrontendElement.selectedIndex].value) +); + +let disableSearchElement = document.getElementById("disable-search"); +disableSearchElement.addEventListener("change", + (event) => searchHelper.setDisableSearch(!event.target.checked) +); + +searchHelper.init().then(() => { + disableSearchElement.checked = !searchHelper.getDisableSearch(); + searchFrontendElement.value = searchHelper.getSearchFrontend(); +}); diff --git a/src/pages/options/shared.js b/src/pages/options/shared.js index 62da2504..36f2ef27 100644 --- a/src/pages/options/shared.js +++ b/src/pages/options/shared.js @@ -107,7 +107,6 @@ function autocomplete(input, list) { }); } - export default { autocompletes, parseURL, diff --git a/src/pages/options/translate.html b/src/pages/options/translate.html deleted file mode 100644 index b193130a..00000000 --- a/src/pages/options/translate.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - LibRedirect Options: Twitter - - - - -
-
-

Enable

- -
- - -
-

Frontend

- -
-
- - - - - - - \ No newline at end of file diff --git a/src/pages/options/translate.js b/src/pages/options/translate.js deleted file mode 100644 index 84a12ab0..00000000 --- a/src/pages/options/translate.js +++ /dev/null @@ -1,18 +0,0 @@ -import translateHelper from "../../assets/javascripts/helpers/translate.js"; - -let disableTranslateElement = document.getElementById("disable-simplyTranslate"); -let translateFrontendElement = document.getElementById("translate-frontend"); - - -translateHelper.init().then(() => { - disableTranslateElement.checked = !translateHelper.getDisableTranslate(); - translateFrontendElement.value = translateHelper.getFrontend(); -}); - -disableTranslateElement.addEventListener("change", - (event) => translateHelper.setDisableTranslate(!event.target.checked) -); - -translateFrontendElement.addEventListener("change", - (event) => translateHelper.setFrontend(event.target.options[translateFrontendElement.selectedIndex].value) -); diff --git a/src/pages/options/translate/translate.html b/src/pages/options/translate/translate.html new file mode 100644 index 00000000..3b6d7580 --- /dev/null +++ b/src/pages/options/translate/translate.html @@ -0,0 +1,51 @@ + + + + + + + + + LibRedirect Options: Twitter + + + + +
+
+

Enable

+ +
+ + +
+

Frontend

+ +
+
+ + + + + + + \ No newline at end of file diff --git a/src/pages/options/translate/translate.js b/src/pages/options/translate/translate.js new file mode 100644 index 00000000..480b754e --- /dev/null +++ b/src/pages/options/translate/translate.js @@ -0,0 +1,16 @@ +import translateHelper from "../../../assets/javascripts/helpers/translate.js"; + +let disableTranslateElement = document.getElementById("disable-simplyTranslate"); +disableTranslateElement.addEventListener("change", + (event) => translateHelper.setDisableTranslate(!event.target.checked) +); + +let translateFrontendElement = document.getElementById("translate-frontend"); +translateFrontendElement.addEventListener("change", + (event) => translateHelper.setFrontend(event.target.options[translateFrontendElement.selectedIndex].value) +); + +translateHelper.init().then(() => { + disableTranslateElement.checked = !translateHelper.getDisableTranslate(); + translateFrontendElement.value = translateHelper.getFrontend(); +}); \ No newline at end of file diff --git a/src/pages/options/twitter.html b/src/pages/options/twitter.html deleted file mode 100644 index 555b3f64..00000000 --- a/src/pages/options/twitter.html +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - LibRedirect Options: Twitter - - - - - - -
- -
-

Enable

- -
- - - -
-

Proactively remove Twitter service worker

- -
- -
- - - - - - - \ No newline at end of file diff --git a/src/pages/options/twitter.js b/src/pages/options/twitter.js deleted file mode 100644 index f8fdd8ce..00000000 --- a/src/pages/options/twitter.js +++ /dev/null @@ -1,17 +0,0 @@ -import twitterHelper from "../../assets/javascripts/helpers/twitter.js"; - -let removeTwitterSWElement = document.getElementById("remove-twitter-sw"); -let disableTwitterElement = document.getElementById("disable-nitter"); - -twitterHelper.init().then(() => { - disableTwitterElement.checked = !twitterHelper.getDisableTwitter(); - removeTwitterSWElement.checked = !remove.getRemoveTwitterSW; // Problem -}); - -disableTwitterElement.addEventListener("change", - (event) => twitterHelper.setDisableTwitter(!event.target.checked) -); - -removeTwitterSWElement.addEventListener("change", (event) => { - browser.storage.sync.set({ removeTwitterSW: !event.target.checked }); // Problem -}); diff --git a/src/pages/options/twitter/twitter.html b/src/pages/options/twitter/twitter.html new file mode 100644 index 00000000..b695a8b2 --- /dev/null +++ b/src/pages/options/twitter/twitter.html @@ -0,0 +1,61 @@ + + + + + + + + + LibRedirect Options: Twitter + + + + + + +
+ +
+

Enable

+ +
+ + + +
+

Proactively remove Twitter service worker

+ +
+ +
+ + + + + + + \ No newline at end of file diff --git a/src/pages/options/twitter/twitter.js b/src/pages/options/twitter/twitter.js new file mode 100644 index 00000000..08fabb20 --- /dev/null +++ b/src/pages/options/twitter/twitter.js @@ -0,0 +1,16 @@ +import twitterHelper from "../../../assets/javascripts/helpers/twitter.js"; + +let disableTwitterElement = document.getElementById("disable-nitter"); +disableTwitterElement.addEventListener("change", + (event) => twitterHelper.setDisableTwitter(!event.target.checked) +); + +let removeTwitterSWElement = document.getElementById("remove-twitter-sw"); +removeTwitterSWElement.addEventListener("change", (event) => { + browser.storage.sync.set({ removeTwitterSW: !event.target.checked }); // Problem +}); + +twitterHelper.init().then(() => { + disableTwitterElement.checked = !twitterHelper.getDisableTwitter(); + removeTwitterSWElement.checked = !remove.getRemoveTwitterSW; // Problem +}); \ No newline at end of file diff --git a/src/pages/options/wikipedia.html b/src/pages/options/wikipedia.html deleted file mode 100644 index d3cc5cb2..00000000 --- a/src/pages/options/wikipedia.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - LibRedirect Options: Twitter - - - - - -
-
-

Enable

- -
- -
- - - - - - - \ No newline at end of file diff --git a/src/pages/options/wikipedia.js b/src/pages/options/wikipedia.js deleted file mode 100644 index 95ef6406..00000000 --- a/src/pages/options/wikipedia.js +++ /dev/null @@ -1,11 +0,0 @@ -import wikipediaHelper from "../../assets/javascripts/helpers/wikipedia.js"; - -let disableWikipediaElement = document.getElementById("disable-wikipedia"); - -wikipediaHelper.init().then(() => { - disableWikipediaElement.checked = !wikipediaHelper.getDisableWikipedia(); -}) - -disableWikipediaElement.addEventListener("change", - (event) => wikipediaHelper.setDisableWikipedia(!event.target.checked) -); \ No newline at end of file diff --git a/src/pages/options/wikipedia/wikipedia.html b/src/pages/options/wikipedia/wikipedia.html new file mode 100644 index 00000000..1a4ea8d5 --- /dev/null +++ b/src/pages/options/wikipedia/wikipedia.html @@ -0,0 +1,52 @@ + + + + + + + + + LibRedirect Options: Twitter + + + + + +
+
+

Enable

+ +
+ +
+ + + + + + + \ No newline at end of file diff --git a/src/pages/options/wikipedia/wikipedia.js b/src/pages/options/wikipedia/wikipedia.js new file mode 100644 index 00000000..08a9a6e0 --- /dev/null +++ b/src/pages/options/wikipedia/wikipedia.js @@ -0,0 +1,10 @@ +import wikipediaHelper from "../../../assets/javascripts/helpers/wikipedia.js"; + +let disableWikipediaElement = document.getElementById("disable-wikipedia"); +disableWikipediaElement.addEventListener("change", + (event) => wikipediaHelper.setDisableWikipedia(!event.target.checked) +); + +wikipediaHelper.init().then(() => { + disableWikipediaElement.checked = !wikipediaHelper.getDisableWikipedia(); +}) \ No newline at end of file diff --git a/src/pages/options/youtube.html b/src/pages/options/youtube.html deleted file mode 100644 index c1bd830e..00000000 --- a/src/pages/options/youtube.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - - - - - LibRedirect Options: Twitter - - - - - - -
-
-

Enable

- -
- - - - - -
-

Frontend

- -
- -
- -
-
-

Player Style

- -
- -
-

Dark mode

- -
- -
-

Volume: 50%

- -
- -
-

Use FreeTube over Invidious when possible

- -
- -
-

Always proxy videos through Invidious

- -
- -
-

Only redirect embedded video to Invidious

- -
- -
-

Video Quality

- -
- -
-

Subtitles - language codes

- -
- -
-

Automatically play video on load

- -
- -
-

Persist preferences (as cookie)

- -
-
- -
- -
- - - - - - - \ No newline at end of file diff --git a/src/pages/options/youtube.js b/src/pages/options/youtube.js deleted file mode 100644 index c592b4cc..00000000 --- a/src/pages/options/youtube.js +++ /dev/null @@ -1,106 +0,0 @@ -import youtubeHelper from "../../assets/javascripts/helpers/youtube.js"; -import commonHelper from "../../assets/javascripts/helpers/common.js"; - -let disableYoutubeElement = document.getElementById("disable-invidious"); -let youtubeFrontendElement = document.getElementById("youtube-frontend"); -let invidiousDarkModeElement = document.getElementById("invidious-dark-mode"); -let persistInvidiousPrefsElement = document.getElementById("persist-invidious-prefs"); -let invidiousVolumeElement = document.getElementById("invidious-volume"); -let invidiousPlayerStyleElement = document.getElementById("invidious-player-style"); -let invidiousSubtitlesElement = document.getElementById("invidious-subtitles"); -let invidiousAutoplayElement = document.getElementById("invidious-autoplay"); -let useFreeTubeElement = document.getElementById("use-freetube"); -let invidiousAlwaysProxyElement = document.getElementById("always-proxy"); -let invidiousOnlyEmbeddedVideoElement = document.getElementById("only-embed"); -let invidiousVideoQualityElement = document.getElementById("video-quality"); -let invidiousVolumeValueElement = document.querySelector("#volume-value"); - -let invidiousDivElement = document.getElementById("invidious") -let pipedDivElement = document.getElementById("piped") - -function changeFrontendsSettings(frontend) { - if (frontend == 'piped') { - pipedDivElement.style.display = 'block'; - invidiousDivElement.style.display = 'none'; - } - else if (frontend == 'invidious') { - pipedDivElement.style.display = 'none'; - invidiousDivElement.style.display = 'block'; - } -} - -youtubeHelper.init().then(() => { - disableYoutubeElement.checked = !youtubeHelper.getDisableYoutube(); - invidiousDarkModeElement.checked = youtubeHelper.getInvidiousDarkMode(); - persistInvidiousPrefsElement.checked = youtubeHelper.getPersistInvidiousPrefs(); - invidiousVolumeElement.value = youtubeHelper.getInvidiousVolume(); - invidiousVolumeValueElement.textContent = `${youtubeHelper.getInvidiousVolume()}%`; - invidiousPlayerStyleElement.value = youtubeHelper.getInvidiousPlayerStyle(); - invidiousSubtitlesElement.value = youtubeHelper.getInvidiousSubtitles(); - useFreeTubeElement.checked = youtubeHelper.getUseFreeTube(); - invidiousOnlyEmbeddedVideoElement.checked = youtubeHelper.getInvidiousOnlyEmbeddedVideo(); - invidiousAlwaysProxyElement.checked = youtubeHelper.getInvidiousAlwaysProxy(); - invidiousVideoQualityElement.value = youtubeHelper.getInvidiousVideoQuality(); - invidiousAutoplayElement.checked = youtubeHelper.getInvidiousAutoplay(); - let frontend = youtubeHelper.getFrontend() - youtubeFrontendElement.value = frontend; - changeFrontendsSettings(frontend); -}); - - -disableYoutubeElement.addEventListener("change", - (event) => youtubeHelper.setDisableYoutube(!event.target.checked) -); - -invidiousDarkModeElement.addEventListener("change", - (event) => youtubeHelper.setInvidiousDarkMode(event.target.checked) -); - -persistInvidiousPrefsElement.addEventListener("change", - (event) => youtubeHelper.setPersistInvidiousPrefs(event.target.checked) -); - -invidiousVolumeElement.addEventListener("input", - () => { - youtubeHelper.setInvidiousVolume(invidiousVolumeElement.value); - invidiousVolumeValueElement.textContent = `${invidiousVolumeElement.value}%`; - } -); - -invidiousPlayerStyleElement.addEventListener("change", - (event) => youtubeHelper.setInvidiousPlayerStyle(event.target.options[invidiousPlayerStyleElement.selectedIndex].value) -); - -invidiousSubtitlesElement.addEventListener("input", - commonHelper.debounce(() => { - youtubeHelper.setInvidiousSubtitles(invidiousSubtitlesElement.value) - }, 500) -); - -invidiousAutoplayElement.addEventListener("change", - (event) => youtubeHelper.setInvidiousAutoplay(event.target.checked) -); - -useFreeTubeElement.addEventListener("change", - (event) => youtubeHelper.setUseFreeTube(event.target.checked) -); - -invidiousAlwaysProxyElement.addEventListener("change", - (event) => youtubeHelper.setInvidiousAlwaysProxy(event.target.checked) -); - -invidiousOnlyEmbeddedVideoElement.addEventListener("change", - (event) => youtubeHelper.setInvidiousOnlyEmbeddedVideo(event.target.checked) -); - -invidiousVideoQualityElement.addEventListener("change", - (event) => youtubeHelper.setInvidiousVideoQuality(event.target.options[invidiousVideoQualityElement.selectedIndex].value) -); - -youtubeFrontendElement.addEventListener("change", - (event) => { - let frontend = event.target.options[youtubeFrontendElement.selectedIndex].value - youtubeHelper.setFrontend(frontend); - changeFrontendsSettings(frontend); - } -); \ No newline at end of file diff --git a/src/pages/options/youtube/youtube.html b/src/pages/options/youtube/youtube.html new file mode 100644 index 00000000..15688873 --- /dev/null +++ b/src/pages/options/youtube/youtube.html @@ -0,0 +1,126 @@ + + + + + + + + + LibRedirect Options: Twitter + + + + + + +
+
+

Enable

+ +
+ + + + + +
+

Frontend

+ +
+ +
+ +
+
+

Player Style

+ +
+ +
+

Dark mode

+ +
+ +
+

Volume: 50%

+ +
+ +
+

Always proxy videos through Invidious

+ +
+ +
+

Only redirect embedded video to Invidious

+ +
+ +
+

Video Quality

+ +
+ +
+

Subtitles - language codes

+ +
+ +
+

Automatically play video on load

+ +
+ +
+

Persist preferences (as cookie)

+ +
+
+ +
+ +
+ + + + + + + \ No newline at end of file diff --git a/src/pages/options/youtube/youtube.js b/src/pages/options/youtube/youtube.js new file mode 100644 index 00000000..c1d526da --- /dev/null +++ b/src/pages/options/youtube/youtube.js @@ -0,0 +1,107 @@ +import youtubeHelper from "../../../assets/javascripts/helpers/youtube/youtube.js"; +import commonHelper from "../../../assets/javascripts/helpers/common.js"; + +let disableYoutubeElement = document.getElementById("disable-invidious"); + +let youtubeFrontendElement = document.getElementById("youtube-frontend"); +let invidiousDivElement = document.getElementById("invidious") +let pipedDivElement = document.getElementById("piped") +function changeFrontendsSettings(frontend) { + if (frontend == 'piped') { + pipedDivElement.style.display = 'block'; + invidiousDivElement.style.display = 'none'; + } + else if (frontend == 'invidious') { + pipedDivElement.style.display = 'none'; + invidiousDivElement.style.display = 'block'; + } + else if (frontend == 'freeTube') { + pipedDivElement.style.display = 'none'; + invidiousDivElement.style.display = 'none'; + } +} +youtubeFrontendElement.addEventListener("change", + (event) => { + let frontend = event.target.options[youtubeFrontendElement.selectedIndex].value + youtubeHelper.setFrontend(frontend); + changeFrontendsSettings(frontend); + } +); + +disableYoutubeElement.addEventListener("change", + (event) => youtubeHelper.setDisableYoutube(!event.target.checked) +); + +let invidiousDarkModeElement = document.getElementById("invidious-dark-mode"); +invidiousDarkModeElement.addEventListener("change", + (event) => youtubeHelper.setInvidiousDarkMode(event.target.checked) +); + +let persistInvidiousPrefsElement = document.getElementById("persist-invidious-prefs"); +persistInvidiousPrefsElement.addEventListener("change", + (event) => youtubeHelper.setPersistInvidiousPrefs(event.target.checked) +); + +let invidiousVolumeElement = document.getElementById("invidious-volume"); +let invidiousVolumeValueElement = document.querySelector("#volume-value"); +invidiousVolumeElement.addEventListener("input", + () => { + youtubeHelper.setInvidiousVolume(invidiousVolumeElement.value); + invidiousVolumeValueElement.textContent = `${invidiousVolumeElement.value}%`; + } +); + +let invidiousPlayerStyleElement = document.getElementById("invidious-player-style"); +invidiousPlayerStyleElement.addEventListener("change", + (event) => youtubeHelper.setInvidiousPlayerStyle(event.target.options[invidiousPlayerStyleElement.selectedIndex].value) +); + +let invidiousSubtitlesElement = document.getElementById("invidious-subtitles"); +invidiousSubtitlesElement.addEventListener("input", + commonHelper.debounce(() => { + youtubeHelper.setInvidiousSubtitles(invidiousSubtitlesElement.value) + }, 500) +); + +let invidiousAutoplayElement = document.getElementById("invidious-autoplay"); +invidiousAutoplayElement.addEventListener("change", + (event) => youtubeHelper.setInvidiousAutoplay(event.target.checked) +); + +let invidiousAlwaysProxyElement = document.getElementById("always-proxy"); +invidiousAlwaysProxyElement.addEventListener("change", + (event) => youtubeHelper.setInvidiousAlwaysProxy(event.target.checked) +); + +let invidiousOnlyEmbeddedVideoElement = document.getElementById("only-embed"); +invidiousOnlyEmbeddedVideoElement.addEventListener("change", + (event) => youtubeHelper.setInvidiousOnlyEmbeddedVideo(event.target.checked) +); + +let invidiousVideoQualityElement = document.getElementById("video-quality"); +invidiousVideoQualityElement.addEventListener("change", + (event) => youtubeHelper.setInvidiousVideoQuality(event.target.options[invidiousVideoQualityElement.selectedIndex].value) +); + + +youtubeHelper.init().then(() => { + disableYoutubeElement.checked = !youtubeHelper.getDisableYoutube(); + invidiousDarkModeElement.checked = youtubeHelper.getInvidiousDarkMode(); + persistInvidiousPrefsElement.checked = youtubeHelper.getPersistInvidiousPrefs(); + invidiousVolumeElement.value = youtubeHelper.getInvidiousVolume(); + invidiousVolumeValueElement.textContent = `${youtubeHelper.getInvidiousVolume()}%`; + invidiousPlayerStyleElement.value = youtubeHelper.getInvidiousPlayerStyle(); + invidiousSubtitlesElement.value = youtubeHelper.getInvidiousSubtitles(); + invidiousOnlyEmbeddedVideoElement.checked = youtubeHelper.getInvidiousOnlyEmbeddedVideo(); + invidiousAlwaysProxyElement.checked = youtubeHelper.getInvidiousAlwaysProxy(); + invidiousVideoQualityElement.value = youtubeHelper.getInvidiousVideoQuality(); + invidiousAutoplayElement.checked = youtubeHelper.getInvidiousAutoplay(); + let frontend = youtubeHelper.getFrontend() + youtubeFrontendElement.value = frontend; + changeFrontendsSettings(frontend); +}); + + + + + diff --git a/src/pages/popup/popup.js b/src/pages/popup/popup.js index 5362c79a..bd8a5057 100644 --- a/src/pages/popup/popup.js +++ b/src/pages/popup/popup.js @@ -2,7 +2,7 @@ import commonHelper from "../../assets/javascripts/helpers/common.js"; import data from "../../assets/javascripts/data.js"; -import youtubeHelper from "../../assets/javascripts/helpers/youtube.js"; +import youtubeHelper from "../../assets/javascripts/helpers/youtube/youtube.js"; import twitterHelper from "../../assets/javascripts/helpers/twitter.js"; import instagramHelper from "../../assets/javascripts/helpers/instagram.js"; import mapsHelper from "../../assets/javascripts/helpers/maps.js"; -- cgit 1.4.1