Fixed cookies not working in invidious #44

This commit is contained in:
ManeraKai 2022-02-19 15:48:28 +03:00
parent 83db3d13ad
commit f0d70837fc
3 changed files with 52 additions and 19 deletions

View File

@ -1,8 +1,6 @@
function getCookie() { function getCookie() {
let ca = document.cookie.split(";"); for (const c of 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); while (c.charAt(0) == " ") c = c.substring(1, c.length);
if (c.indexOf("PREFS=") == 0) if (c.indexOf("PREFS=") == 0)
return JSON.parse( return JSON.parse(
@ -15,24 +13,47 @@ function getCookie() {
browser.storage.sync.get( browser.storage.sync.get(
[ [
"invidiousAlwaysProxy", "invidiousAlwaysProxy",
"invidiousVideoQuality",
"invidiousDarkMode",
"OnlyEmbeddedVideo",
"volume",
"invidiousPlayerStyle",
"invidiousSubtitles", "invidiousSubtitles",
"autoplay", "invidiousPlayerStyle",
"youtubeVolume",
"youtubeAutoplay",
"OnlyEmbeddedVideo",
"youtubeTheme",
"invidiousVideoQuality",
], (result) => { ], (result) => {
const prefs = getCookie(); let prefs = getCookie();
let changed = false;
if (result.invidiousAlwaysProxy !== undefined && prefs.local !== result.invidiousAlwaysProxy) {
prefs.local = result.invidiousAlwaysProxy; prefs.local = result.invidiousAlwaysProxy;
changed = true;
}
if (result.invidiousVideoQuality !== undefined && prefs.quality !== result.invidiousVideoQuality) {
prefs.quality = result.invidiousVideoQuality; prefs.quality = result.invidiousVideoQuality;
prefs.dark_mode = result.invidiousDarkMode; changed = true;
prefs.volume = result.volume; }
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; prefs.player_style = result.invidiousPlayerStyle;
changed = true;
}
if (result.invidiousSubtitles !== undefined && prefs.subtitles === result.invidiousSubtitles) {
prefs.subtitles = result.invidiousSubtitles; prefs.subtitles = result.invidiousSubtitles;
prefs.autoplay = result.autoplay; changed = true;
}
if (result.youtubeAutoplay !== undefined && prefs.autoplay !== result.youtubeAutoplay) {
prefs.autoplay = result.youtubeAutoplay;
changed = true;
}
if (changed) document.cookie = `PREFS=${encodeURIComponent(JSON.stringify(prefs))}`;
document.cookie = `PREFS=${encodeURIComponent(JSON.stringify(prefs))}`;
} }
) )

View File

@ -300,6 +300,12 @@ function isPipedorInvidious(url, type) {
return (type === "main_frame" || type === "sub_frame") && [...redirects.invidious.normal, ...redirects.piped.normal].includes(protocolHost); 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) { function addUrlParams(url) {
let protocolHost = `${url.protocol}//${url.host}`; let protocolHost = `${url.protocol}//${url.host}`;
@ -360,7 +366,6 @@ function addUrlParams(url) {
} }
} }
if (isChanged) return url.href; if (isChanged) return url.href;
else return; else return;
} }
@ -449,6 +454,7 @@ export default {
isYoutube, isYoutube,
isPipedorInvidious, isPipedorInvidious,
isUrlPipedorInvidious,
addUrlParams, addUrlParams,
getDisable, getDisable,

View File

@ -103,6 +103,12 @@ browser.webRequest.onResponseStarted.addListener(
{ urls: ["<all_urls>"] } { urls: ["<all_urls>"] }
); );
browser.tabs.onUpdated.addListener(
(tabId, changeInfo) => {
if (changeInfo.url && youtubeHelper.isUrlPipedorInvidious(changeInfo.url))
youtubeHelper.invidiousInitCookies(tabId);
});
function changeInstance(url) { function changeInstance(url) {
var tabUrl = new URL(url); var tabUrl = new URL(url);
var protocolHost = `${tabUrl.protocol}//${tabUrl.host}`; var protocolHost = `${tabUrl.protocol}//${tabUrl.host}`;