From 748f3d0f3a85a5f0acb26ae7e792935da6d9ad93 Mon Sep 17 00:00:00 2001 From: SimonBrazell Date: Wed, 4 Nov 2020 21:55:42 +1100 Subject: [PATCH] Closes #113 - Added support for FreeTube --- _locales/en/messages.json | 4 ++++ _locales/en/store.md | 11 ++++++++--- background.js | 9 +++++++++ pages/options/options.html | 25 +++++++++++++++++++++++++ pages/options/options.js | 7 +++++++ 5 files changed, 53 insertions(+), 3 deletions(-) diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 2e106a7..096deaa 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -106,5 +106,9 @@ "version": { "message": "Version", "description": "Version" + }, + "useFreeTube": { + "message": "Use FreeTube over Invidious when possible", + "description": "Label for 'Use FreeTube over Invidious when possible' option (options)." } } diff --git a/_locales/en/store.md b/_locales/en/store.md index deef009..70ed80e 100644 --- a/_locales/en/store.md +++ b/_locales/en/store.md @@ -1,10 +1,13 @@ # Extension Store (AMO & Chrome Web Store) Listing ## Summary: + ``` A simple web extension that redirects Twitter, YouTube, Instagram & Google Maps requests to privacy friendly alternatives. ``` + ## Description: + ``` Redirects Twitter, YouTube, Instagram, & Google Maps requests to privacy friendly alternatives - Nitter, Invidious, Bibliogram, & OpenStreetMap. @@ -23,10 +26,12 @@ The code for this web extension is available on buying me a coffee β˜•οΈ ️to show your appreciation and support the continuation of the project. -β˜… What's New in This Version (v1.1.36) πŸ†• +β˜… What's New in This Version (v1.1.42) πŸ†• β˜… Permissions: ℹ️ diff --git a/background.js b/background.js index ed94294..45e01f8 100644 --- a/background.js +++ b/background.js @@ -119,6 +119,7 @@ let invidiousVolume; let invidiousPlayerStyle; let invidiousSubtitles; let invidiousAutoplay; +let useFreeTube; let exceptions; window.browser = window.browser || window.chrome; @@ -141,6 +142,7 @@ browser.storage.sync.get( "invidiousPlayerStyle", "invidiousSubtitles", "invidiousAutoplay", + "useFreeTube", "exceptions", ], (result) => { @@ -165,6 +167,7 @@ browser.storage.sync.get( invidiousPlayerStyle = result.invidiousPlayerStyle; invidiousSubtitles = result.invidiousSubtitles || ""; invidiousAutoplay = result.invidiousAutoplay; + useFreeTube = result.useFreeTube; } ); @@ -217,6 +220,9 @@ browser.storage.onChanged.addListener((changes) => { if ("invidiousAutoplay" in changes) { invidiousAutoplay = changes.invidiousAutoplay.newValue; } + if ("useFreeTube" in changes) { + useFreeTube = changes.useFreeTube.newValue; + } if ("exceptions" in changes) { exceptions = changes.exceptions.newValue.map((e) => { return new RegExp(e); @@ -287,6 +293,9 @@ function redirectYouTube(url, initiator, type) { if (onlyEmbeddedVideo && type !== "sub_frame") { return null; } + if (useFreeTube) { + return `freetube://${url}`; + } // Apply settings if (alwaysProxy) { url.searchParams.append("local", true); diff --git a/pages/options/options.html b/pages/options/options.html index 6641e5c..3bddd40 100644 --- a/pages/options/options.html +++ b/pages/options/options.html @@ -172,6 +172,31 @@
+
+ + + + + + + +
+

+ Use FreeTube over Invidious when possible +

+
+   + +
+
{ theme.value = result.theme || ""; @@ -146,6 +148,7 @@ browser.storage.sync.get( invidiousPlayerStyle.value = result.invidiousPlayerStyle || ""; invidiousSubtitles.value = result.invidiousSubtitles || ""; invidiousAutoplay.checked = result.invidiousAutoplay; + useFreeTube.checked = result.useFreeTube; } ); @@ -315,6 +318,10 @@ persistInvidiousPrefs.addEventListener("change", (event) => { browser.storage.sync.set({ persistInvidiousPrefs: event.target.checked }); }); +useFreeTube.addEventListener("change", (event) => { + browser.storage.sync.set({ useFreeTube: event.target.checked }); +}); + let invidiousVolumeChange = debounce(() => { document.querySelector( "#volume-value"