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() {
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;
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 (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;
}
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);
}
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,

View File

@ -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}`;