Skip to content

Commit f8db04e

Browse files
authored
Merge pull request #1079 from Araxeus/option-to-load-captions-selector-on-every-song
[captions-selector] add `autoload` option
2 parents e8b712b + 94f2cba commit f8db04e

File tree

3 files changed

+30
-12
lines changed

3 files changed

+30
-12
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
const { PluginConfig } = require("../../config/dynamic");
2+
const config = new PluginConfig("captions-selector", { enableFront: true });
3+
module.exports = { ...config };

plugins/captions-selector/front.js

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,41 @@
11
const { ElementFromFile, templatePath } = require("../utils");
22
const { ipcRenderer } = require("electron");
33

4+
const config = require("./config");
5+
46
function $(selector) { return document.querySelector(selector); }
57

68
const captionsSettingsButton = ElementFromFile(
79
templatePath(__dirname, "captions-settings-template.html")
810
);
911

10-
module.exports = (options) => {
11-
document.addEventListener('apiLoaded', (event) => setup(event, options), { once: true, passive: true });
12+
module.exports = () => {
13+
document.addEventListener('apiLoaded', (event) => setup(event.detail), { once: true, passive: true });
1214
}
1315

14-
function setup(event, options) {
15-
const api = event.detail;
16-
16+
function setup(api) {
1717
$(".right-controls-buttons").append(captionsSettingsButton);
1818

1919
let captionTrackList = api.getOption("captions", "tracklist");
2020

21-
$("video").addEventListener("srcChanged", () => {
22-
if (options.disableCaptions) {
21+
$("video").addEventListener("srcChanged", async () => {
22+
if (await config.get('disableCaptions')) {
2323
setTimeout(() => api.unloadModule("captions"), 100);
2424
captionsSettingsButton.style.display = "none";
2525
return;
2626
}
2727

2828
api.loadModule("captions");
2929

30-
setTimeout(() => {
30+
setTimeout(async () => {
3131
captionTrackList = api.getOption("captions", "tracklist");
3232

33+
if (await config.get("autoload") && await config.get("lastCaptionsCode")) {
34+
api.setOption("captions", "track", {
35+
languageCode: await config.get("lastCaptionsCode"),
36+
});
37+
}
38+
3339
captionsSettingsButton.style.display = captionTrackList?.length
3440
? "inline-block"
3541
: "none";
@@ -52,6 +58,7 @@ function setup(event, options) {
5258
if (currentIndex === null) return;
5359

5460
const newCaptions = captionTrackList[currentIndex];
61+
config.set('lastCaptionsCode', newCaptions?.languageCode);
5562
if (newCaptions) {
5663
api.setOption("captions", "track", { languageCode: newCaptions.languageCode });
5764
} else {

plugins/captions-selector/menu.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,20 @@
1-
const { setOptions } = require('../../config/plugins');
1+
const config = require("./config");
22

3-
module.exports = (_win, options) => [
3+
module.exports = () => [
4+
{
5+
label: "Automatically select last used caption",
6+
type: "checkbox",
7+
checked: config.get("autoload"),
8+
click: (item) => {
9+
config.set('autoload', item.checked);
10+
}
11+
},
412
{
513
label: "No captions by default",
614
type: "checkbox",
7-
checked: options.disabledCaptions,
15+
checked: config.get("disabledCaptions"),
816
click: (item) => {
9-
setOptions("captions-selector", { disableCaptions: item.checked });
17+
config.set('disableCaptions', item.checked);
1018
},
1119
}
1220
];

0 commit comments

Comments
 (0)