1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
import youtubeHelper from "../../assets/javascripts/helpers/youtube.js";
import commonHelper from "../../assets/javascripts/helpers/common.js";
import shared from "./shared.js";
const invidiousInstances = youtubeHelper.redirects;
let invidiousInstanceElement = document.getElementById("invidious-instance");
let disableInvidiousElement = document.getElementById("disable-invidious");
let invidiousDarkModeElement = document.getElementById("invidious-dark-mode");
let persistInvidiousPrefsElement = document.getElementById("persist-invidious-prefs");
let invidiousVolumeElement = document.getElementById("invidious-volume");
let invidiousPlayerStyleElement = document.getElementById("invidious-player-style");
let invidiousSubtitlesElement = document.getElementById("invidious-subtitles");
let invidiousAutoplayElement = document.getElementById("invidious-autoplay");
let invidiousRandomPoolElement = document.getElementById("invidious-random-pool");
let useFreeTubeElement = document.getElementById("use-freetube");
let alwaysProxyElement = document.getElementById("always-proxy");
let onlyEmbeddedVideoElement = document.getElementById("only-embed");
let videoQualityElement = document.getElementById("video-quality");
browser.storage.sync.get(
[
"invidiousInstance",
"disableInvidious",
"invidiousDarkMode",
"persistInvidiousPrefs",
"invidiousVolume",
"invidiousPlayerStyle",
"invidiousSubtitles",
"invidiousAutoplay",
"invidiousRandomPool",
"useFreeTube",
"alwaysProxy",
"onlyEmbeddedVideo",
"videoQuality",
],
(result) => {
invidiousInstanceElement.value = result.invidiousInstance || "";
disableInvidiousElement.checked = !result.disableInvidious;
invidiousDarkModeElement.checked = result.invidiousDarkMode;
persistInvidiousPrefsElement.checked = result.persistInvidiousPrefs;
invidiousVolumeElement.value = result.invidiousVolume;
document.querySelector("#volume-value").textContent = result.invidiousVolume ? `${result.invidiousVolume}%` : " - ";
invidiousPlayerStyleElement.value = result.invidiousPlayerStyle || "";
invidiousSubtitlesElement.value = result.invidiousSubtitles || "";
invidiousAutoplayElement.checked = result.invidiousAutoplay;
invidiousRandomPoolElement.value = (result.invidiousRandomPool || commonHelper.filterInstances(invidiousInstances)).join("\n");
useFreeTubeElement.checked = result.useFreeTube;
onlyEmbeddedVideoElement.checked = result.onlyEmbeddedVideo;
alwaysProxyElement.checked = result.alwaysProxy;
videoQualityElement.value = result.videoQuality || "";
let id = "invidious-instance"
let instances = invidiousRandomPoolElement.value.split('\n');
shared.autocompletes.push({ id: id, instances: instances });
shared.autocomplete(document.getElementById(id), instances);
}
)
invidiousInstanceElement.addEventListener("input",
commonHelper.debounce(() => {
if (invidiousInstanceElement.checkValidity())
browser.storage.sync.set({ invidiousInstance: shared.parseURL(invidiousInstanceElement.value) });
}, 500)
);
disableInvidiousElement.addEventListener("change", (event) => {
browser.storage.sync.set({ disableInvidious: !event.target.checked });
});
invidiousDarkModeElement.addEventListener("change", (event) => {
console.info("InvidiousDarkMode", event.target.checked);
browser.storage.sync.set({ invidiousDarkMode: event.target.checked });
});
persistInvidiousPrefsElement.addEventListener("change", (event) => {
console.info("Persist preferences (as cookie)", event.target.checked);
browser.storage.sync.set({ persistInvidiousPrefs: event.target.checked });
});
invidiousVolumeElement.addEventListener("input",
commonHelper.debounce(() => {
document.querySelector("#volume-value").textContent = `${invidiousVolumeElement.value}%`;
browser.storage.sync.set({ invidiousVolume: invidiousVolumeElement.value });
}, 1)
);
invidiousPlayerStyleElement.addEventListener("change", (event) => {
browser.storage.sync.set({
invidiousPlayerStyle: event.target.options[invidiousPlayerStyleElement.selectedIndex].value,
});
});
invidiousSubtitlesElement.addEventListener("input",
commonHelper.debounce(() => {
browser.storage.sync.set({ invidiousSubtitles: invidiousSubtitlesElement.value });
}, 500)
);
invidiousAutoplayElement.addEventListener("change", (event) => {
browser.storage.sync.set({ invidiousAutoplay: event.target.checked });
});
invidiousRandomPool.addEventListener("input",
commonHelper.debounce(() => {
browser.storage.sync.set({ invidiousRandomPool: invidiousRandomPool.value.split("\n") });
}, 500)
);
useFreeTubeElement.addEventListener("change", (event) => {
browser.storage.sync.set({ useFreeTube: event.target.checked });
});
alwaysProxyElement.addEventListener("change", (event) => {
browser.storage.sync.set({ alwaysProxy: event.target.checked });
});
onlyEmbeddedVideoElement.addEventListener("change", (event) => {
browser.storage.sync.set({ onlyEmbeddedVideo: event.target.checked });
});
videoQualityElement.addEventListener("change", (event) => {
browser.storage.sync.set({ videoQuality: event.target.options[videoQualityElement.selectedIndex].value });
});
browser.storage.onChanged.addListener((changes) => {
if ("invidiousRandomPool" in changes)
invidiousRandomPool.value = changes.invidiousRandomPool.newValue;
})
|