aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-02-19 15:48:28 +0300
committerManeraKai <manerakai@protonmail.com>2022-02-19 15:48:35 +0300
commitf0d70837fcf0b617fa0f69fd0eb324148e7118b3 (patch)
treedc9fe2696b188e10039f92fc3f6ece261b543534
parentFixed url params not applying #44 (diff)
downloadlibredirect-f0d70837fcf0b617fa0f69fd0eb324148e7118b3.zip
Fixed cookies not working in invidious #44
Diffstat (limited to '')
-rw-r--r--src/assets/javascripts/helpers/youtube/invidious-cookies.js57
-rw-r--r--src/assets/javascripts/helpers/youtube/youtube.js8
-rw-r--r--src/pages/background/background.js6
3 files changed, 52 insertions, 19 deletions
diff --git a/src/assets/javascripts/helpers/youtube/invidious-cookies.js b/src/assets/javascripts/helpers/youtube/invidious-cookies.js
index 6a168b83..cefbddd8 100644
--- a/src/assets/javascripts/helpers/youtube/invidious-cookies.js
+++ b/src/assets/javascripts/helpers/youtube/invidious-cookies.js
@@ -1,8 +1,6 @@
function getCookie() {
- let ca = document.cookie.split(";");
- for (let i = 0; i < ca.length; i++) {
- let c = ca[i];
+ for (const c of document.cookie.split(";")) {
while (c.charAt(0) == " ") c = c.substring(1, c.length);
if (c.indexOf("PREFS=") == 0)
return JSON.parse(
@@ -15,24 +13,47 @@ function getCookie() {
browser.storage.sync.get(
[
"invidiousAlwaysProxy",
- "invidiousVideoQuality",
- "invidiousDarkMode",
- "OnlyEmbeddedVideo",
- "volume",
- "invidiousPlayerStyle",
"invidiousSubtitles",
- "autoplay",
+ "invidiousPlayerStyle",
+ "youtubeVolume",
+ "youtubeAutoplay",
+ "OnlyEmbeddedVideo",
+ "youtubeTheme",
+ "invidiousVideoQuality",
], (result) => {
- const prefs = getCookie();
+ let prefs = getCookie();
+ let changed = false;
+
+ if (result.invidiousAlwaysProxy !== undefined && prefs.local !== result.invidiousAlwaysProxy) {
+ prefs.local = result.invidiousAlwaysProxy;
+ changed = true;
+ }
+ if (result.invidiousVideoQuality !== undefined && prefs.quality !== result.invidiousVideoQuality) {
+ prefs.quality = result.invidiousVideoQuality;
+ changed = true;
+ }
+ if (result.youtubeTheme !== undefined && prefs.dark_mode !== result.youtubeTheme) {
+ prefs.dark_mode = result.youtubeTheme;
+ changed = true;
+ }
+ if (result.youtubeVolume !== undefined && prefs.volume !== result.youtubeVolume) {
+ prefs.volume = result.youtubeVolume;
+ changed = true;
+ }
+ if (result.invidiousPlayerStyle !== undefined && prefs.player_style !== result.invidiousPlayerStyle) {
+ prefs.player_style = result.invidiousPlayerStyle;
+ changed = true;
+ }
+ if (result.invidiousSubtitles !== undefined && prefs.subtitles === result.invidiousSubtitles) {
+ prefs.subtitles = result.invidiousSubtitles;
+ changed = true;
+ }
+ if (result.youtubeAutoplay !== undefined && prefs.autoplay !== result.youtubeAutoplay) {
+ prefs.autoplay = result.youtubeAutoplay;
+ changed = true;
+ }
- prefs.local = result.invidiousAlwaysProxy;
- prefs.quality = result.invidiousVideoQuality;
- prefs.dark_mode = result.invidiousDarkMode;
- prefs.volume = result.volume;
- prefs.player_style = result.invidiousPlayerStyle;
- prefs.subtitles = result.invidiousSubtitles;
- prefs.autoplay = result.autoplay;
+ if (changed) document.cookie = `PREFS=${encodeURIComponent(JSON.stringify(prefs))}`;
- 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
index 8577f849..802a73d0 100644
--- a/src/assets/javascripts/helpers/youtube/youtube.js
+++ b/src/assets/javascripts/helpers/youtube/youtube.js
@@ -300,6 +300,12 @@ function isPipedorInvidious(url, type) {
return (type === "main_frame" || type === "sub_frame") && [...redirects.invidious.normal, ...redirects.piped.normal].includes(protocolHost);
}
+function isUrlPipedorInvidious(url) {
+ url = new URL(url);
+ let protocolHost = `${url.protocol}//${url.host}`;
+ return [...redirects.invidious.normal, ...redirects.piped.normal].includes(protocolHost);
+}
+
function addUrlParams(url) {
let protocolHost = `${url.protocol}//${url.host}`;
@@ -360,7 +366,6 @@ function addUrlParams(url) {
}
}
-
if (isChanged) return url.href;
else return;
}
@@ -449,6 +454,7 @@ export default {
isYoutube,
isPipedorInvidious,
+ isUrlPipedorInvidious,
addUrlParams,
getDisable,
diff --git a/src/pages/background/background.js b/src/pages/background/background.js
index ae5ccdf9..69d027bb 100644
--- a/src/pages/background/background.js
+++ b/src/pages/background/background.js
@@ -103,6 +103,12 @@ browser.webRequest.onResponseStarted.addListener(
{ urls: ["<all_urls>"] }
);
+browser.tabs.onUpdated.addListener(
+ (tabId, changeInfo) => {
+ if (changeInfo.url && youtubeHelper.isUrlPipedorInvidious(changeInfo.url))
+ youtubeHelper.invidiousInitCookies(tabId);
+ });
+
function changeInstance(url) {
var tabUrl = new URL(url);
var protocolHost = `${tabUrl.protocol}//${tabUrl.host}`;