libredirect/src/pages/options/youtube/invidious.js

177 lines
7.8 KiB
JavaScript

import youtubeHelper from "../../../assets/javascripts/helpers/youtube/youtube.js";
import commonHelper from "../../../assets/javascripts/helpers/common.js";
let invidious = document.getElementById('invidious');
let alwaysProxy = invidious.getElementsByClassName("local")[0];
let playerStyle = invidious.getElementsByClassName("player_style")[0];
let quality = invidious.getElementsByClassName("quality")[0];
let videoLoop = invidious.getElementsByClassName("video_loop")[0];
let continueAutoplay = invidious.getElementsByClassName("continue_autoplay")[0];
let invidiousContinue = invidious.getElementsByClassName("continue")[0];
let youtubeListen = invidious.getElementsByClassName("listen")[0];
let speed = invidious.getElementsByClassName("speed")[0];
let qualityDash = invidious.getElementsByClassName("quality_dash")[0];
let relatedVideo = invidious.getElementsByClassName("related_videos")[0];
let annotations = invidious.getElementsByClassName("annotations")[0];
let extendDesc = invidious.getElementsByClassName("extend_desc")[0];
let vrMode = invidious.getElementsByClassName("vr_mode")[0];
let savePlayerPos = invidious.getElementsByClassName("save_player_pos")[0];
let comments0 = invidious.getElementsByClassName("comments[0]")[0];
let comments1 = invidious.getElementsByClassName("comments[1]")[0];
let captions0 = invidious.getElementsByClassName("captions[0]")[0];
let captions1 = invidious.getElementsByClassName("captions[1]")[0];
let captions2 = invidious.getElementsByClassName("captions[2]")[0];
let autoplay = invidious.getElementsByClassName("youtubeAutoplay")[0];
let volume = invidious.getElementsByClassName("volume")[0];
let volumeValue = invidious.getElementsByClassName("volume-value")[0];
let region = invidious.getElementsByClassName("region")[0];
let darkMode = invidious.getElementsByClassName("dark_mode")[0];
let thin_mode = invidious.getElementsByClassName("thin_mode")[0];
let default_home = invidious.getElementsByClassName("default_home")[0];
let feed_menu0 = invidious.getElementsByClassName("feed_menu[0]")[0];
let feed_menu1 = invidious.getElementsByClassName("feed_menu[1]")[0];
volume.addEventListener("input", () => volumeValue.textContent = `${volume.value}%`);
invidious.addEventListener("change", async _ => {
console.log('changed invidious settings');
let commentsList = youtubeHelper.getInvidiousComments();
commentsList[0] = comments0.value;
commentsList[1] = comments1.value;
let captionsList = youtubeHelper.getInvidiousCaptions();
captionsList[0] = captions0.value;
captionsList[1] = captions1.value;
captionsList[2] = captions2.value;
let feedMenuList = youtubeHelper.getInvidiousFeedMenuList();
feedMenuList[0] = feed_menu0.value;
feedMenuList[1] = feed_menu1.value;
await youtubeHelper.setYoutubeSettings({
invidiousAlwaysProxy: alwaysProxy.checked,
youtubeAutoplay: autoplay.checked,
invidiousPlayerStyle: playerStyle.value,
invidiousQuality: quality.value,
invidiousVideoLoop: videoLoop.checked,
invidiousContinueAutoplay: continueAutoplay.checked,
invidiousContinue: invidiousContinue.checked,
youtubeListen: youtubeListen.checked,
invidiousSpeed: speed.value,
invidiousQualityDash: qualityDash.value,
youtubeVolume: volume.value,
invidiousComments: commentsList,
invidiousCaptions: captionsList,
invidiousRelatedVideos: relatedVideo.checked,
invidiousAnnotations: annotations.checked,
invidiousExtendDesc: extendDesc.checked,
invidiousVrMode: vrMode.checked,
invidiousSavePlayerPos: savePlayerPos.checked,
invidiousRegion: region.value,
invidiousDarkMode: darkMode.value,
invidiousThinMode: thin_mode.checked,
invidiousDefaultHome: default_home.value,
invidiousFeedMenuList: feedMenuList,
});
init();
});
function init() {
youtubeHelper.init().then(() => {
videoLoop.checked = youtubeHelper.getInvidiousVideoLoop();
autoplay.checked = youtubeHelper.getAutoplay();
playerStyle.value = youtubeHelper.getInvidiousPlayerStyle();
continueAutoplay.checked = youtubeHelper.getInvidiousContinueAutoplay();
invidiousContinue.checked = youtubeHelper.getInvidiousContinue();
alwaysProxy.checked = youtubeHelper.getInvidiousAlwaysProxy();
youtubeListen.checked = youtubeHelper.getYoutubeListen();
speed.value = youtubeHelper.getInvidiousSpeed();
quality.value = youtubeHelper.getInvidiousQuality();
qualityDash.value = youtubeHelper.getInvidiousQualityDash();
volume.value = youtubeHelper.getVolume();
volumeValue.textContent = `${youtubeHelper.getVolume()}%`;
comments0.value = youtubeHelper.getInvidiousComments()[0];
comments1.value = youtubeHelper.getInvidiousComments()[1];
captions0.value = youtubeHelper.getInvidiousCaptions()[0];
captions1.value = youtubeHelper.getInvidiousCaptions()[1];
captions2.value = youtubeHelper.getInvidiousCaptions()[2];
relatedVideo.checked = youtubeHelper.getInvidiousRelatedVideos();
annotations.checked = youtubeHelper.getInvidiousAnnotations();
extendDesc.checked = youtubeHelper.getInvidiousExtendDesc();
vrMode.checked = youtubeHelper.getInvidiousVrMode();
savePlayerPos.checked = youtubeHelper.getInvidiousSavePlayerPos();
region.value = youtubeHelper.getInvidiousRegion();
darkMode.value = youtubeHelper.getInvidiousDarkMode();
thin_mode.checked = youtubeHelper.getInvidiousThinMode();
default_home.value = youtubeHelper.getInvidiousDefaultHome();
feed_menu0.value = youtubeHelper.getInvidiousFeedMenuList()[0];
feed_menu1.value = youtubeHelper.getInvidiousFeedMenuList()[1];
browser.storage.local.get("invidiousLatency").then(r => {
commonHelper.processDefaultCustomInstances(
'invidious',
'normal',
youtubeHelper,
document,
youtubeHelper.getInvidiousNormalRedirectsChecks,
youtubeHelper.setInvidiousNormalRedirectsChecks,
youtubeHelper.getInvidiousNormalCustomRedirects,
youtubeHelper.setInvidiousNormalCustomRedirects,
r.invidiousLatency
);
})
commonHelper.processDefaultCustomInstances(
'invidious',
'tor',
youtubeHelper,
document,
youtubeHelper.getInvidiousTorRedirectsChecks,
youtubeHelper.setInvidiousTorRedirectsChecks,
youtubeHelper.getInvidiousTorCustomRedirects,
youtubeHelper.setInvidiousTorCustomRedirects
);
});
}
init()
let latencyInvidiousElement = document.getElementById("latency-invidious");
let latencyInvidiousLabel = document.getElementById("latency-invidious-label");
latencyInvidiousElement.addEventListener("click",
async () => {
let reloadWindow = () => location.reload();
latencyInvidiousElement.addEventListener("click", reloadWindow);
await youtubeHelper.init();
let redirects = youtubeHelper.getRedirects();
const oldHtml = latencyInvidiousLabel.innerHTML;
latencyInvidiousLabel.innerHTML = '...';
commonHelper.testLatency(latencyInvidiousLabel, redirects.invidious.normal).then(r => {
browser.storage.local.set({ invidiousLatency: r });
latencyInvidiousLabel.innerHTML = oldHtml;
commonHelper.processDefaultCustomInstances(
'invidious',
'normal',
youtubeHelper,
document,
youtubeHelper.getInvidiousNormalRedirectsChecks,
youtubeHelper.setInvidiousNormalRedirectsChecks,
youtubeHelper.getInvidiousNormalCustomRedirects,
youtubeHelper.setInvidiousNormalCustomRedirects,
r,
);
latencyInvidiousElement.removeEventListener("click", reloadWindow);
});
}
);