mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-11 02:31:45 +00:00
fix restart app on config change option
This commit is contained in:
@ -1,11 +1,17 @@
|
|||||||
const defaultConfig = require("./defaults");
|
const defaultConfig = require("./defaults");
|
||||||
const plugins = require("./plugins");
|
const plugins = require("./plugins");
|
||||||
const store = require("./store");
|
const store = require("./store");
|
||||||
|
const { restart } = require("../providers/app-controls");
|
||||||
|
|
||||||
const set = (key, value) => {
|
const set = (key, value) => {
|
||||||
store.set(key, value);
|
store.set(key, value);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function setMenuOption(key, value) {
|
||||||
|
set(key, value);
|
||||||
|
if (store.get("options.restartOnConfigChanges")) restart();
|
||||||
|
}
|
||||||
|
|
||||||
const get = (key) => {
|
const get = (key) => {
|
||||||
return store.get(key);
|
return store.get(key);
|
||||||
};
|
};
|
||||||
@ -14,6 +20,7 @@ module.exports = {
|
|||||||
defaultConfig,
|
defaultConfig,
|
||||||
get,
|
get,
|
||||||
set,
|
set,
|
||||||
|
setMenuOption,
|
||||||
edit: () => store.openInEditor(),
|
edit: () => store.openInEditor(),
|
||||||
watch: (cb) => {
|
watch: (cb) => {
|
||||||
store.onDidChange("options", cb);
|
store.onDidChange("options", cb);
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
const store = require("./store");
|
const store = require("./store");
|
||||||
|
const { restart } = require("../providers/app-controls");
|
||||||
|
|
||||||
function getEnabled() {
|
function getEnabled() {
|
||||||
const plugins = store.get("plugins");
|
const plugins = store.get("plugins");
|
||||||
@ -24,16 +25,21 @@ function setOptions(plugin, options) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setMenuOptions(plugin, options) {
|
||||||
|
setOptions(plugin, options);
|
||||||
|
if (store.get("options.restartOnConfigChanges")) restart();
|
||||||
|
}
|
||||||
|
|
||||||
function getOptions(plugin) {
|
function getOptions(plugin) {
|
||||||
return store.get("plugins")[plugin];
|
return store.get("plugins")[plugin];
|
||||||
}
|
}
|
||||||
|
|
||||||
function enable(plugin) {
|
function enable(plugin) {
|
||||||
setOptions(plugin, { enabled: true });
|
setMenuOptions(plugin, { enabled: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
function disable(plugin) {
|
function disable(plugin) {
|
||||||
setOptions(plugin, { enabled: false });
|
setMenuOptions(plugin, { enabled: false });
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
@ -42,5 +48,6 @@ module.exports = {
|
|||||||
enable,
|
enable,
|
||||||
disable,
|
disable,
|
||||||
setOptions,
|
setOptions,
|
||||||
|
setMenuOptions,
|
||||||
getOptions,
|
getOptions,
|
||||||
};
|
};
|
||||||
|
|||||||
6
index.js
6
index.js
@ -307,12 +307,6 @@ app.on("ready", () => {
|
|||||||
|
|
||||||
mainWindow = createMainWindow();
|
mainWindow = createMainWindow();
|
||||||
setApplicationMenu(mainWindow);
|
setApplicationMenu(mainWindow);
|
||||||
if (config.get("options.restartOnConfigChanges")) {
|
|
||||||
config.watch(() => {
|
|
||||||
app.relaunch();
|
|
||||||
app.exit();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
setUpTray(app, mainWindow);
|
setUpTray(app, mainWindow);
|
||||||
|
|
||||||
// Autostart at login
|
// Autostart at login
|
||||||
|
|||||||
32
menu.js
32
menu.js
@ -68,7 +68,7 @@ const mainMenuTemplate = (win) => {
|
|||||||
type: "checkbox",
|
type: "checkbox",
|
||||||
checked: config.get("options.autoUpdates"),
|
checked: config.get("options.autoUpdates"),
|
||||||
click: (item) => {
|
click: (item) => {
|
||||||
config.set("options.autoUpdates", item.checked);
|
config.setMenuOption("options.autoUpdates", item.checked);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -76,7 +76,7 @@ const mainMenuTemplate = (win) => {
|
|||||||
type: "checkbox",
|
type: "checkbox",
|
||||||
checked: config.get("options.resumeOnStart"),
|
checked: config.get("options.resumeOnStart"),
|
||||||
click: (item) => {
|
click: (item) => {
|
||||||
config.set("options.resumeOnStart", item.checked);
|
config.setMenuOption("options.resumeOnStart", item.checked);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -84,7 +84,7 @@ const mainMenuTemplate = (win) => {
|
|||||||
type: "checkbox",
|
type: "checkbox",
|
||||||
checked: config.get("options.removeUpgradeButton"),
|
checked: config.get("options.removeUpgradeButton"),
|
||||||
click: (item) => {
|
click: (item) => {
|
||||||
config.set("options.removeUpgradeButton", item.checked);
|
config.setMenuOption("options.removeUpgradeButton", item.checked);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
...(is.windows() || is.linux()
|
...(is.windows() || is.linux()
|
||||||
@ -94,7 +94,7 @@ const mainMenuTemplate = (win) => {
|
|||||||
type: "checkbox",
|
type: "checkbox",
|
||||||
checked: config.get("options.hideMenu"),
|
checked: config.get("options.hideMenu"),
|
||||||
click: (item) => {
|
click: (item) => {
|
||||||
config.set("options.hideMenu", item.checked);
|
config.setMenuOption("options.hideMenu", item.checked);
|
||||||
if (item.checked && !config.get("options.hideMenuWarned")) {
|
if (item.checked && !config.get("options.hideMenuWarned")) {
|
||||||
dialog.showMessageBox(win, {
|
dialog.showMessageBox(win, {
|
||||||
type: 'info', title: 'Hide Menu Enabled',
|
type: 'info', title: 'Hide Menu Enabled',
|
||||||
@ -114,7 +114,7 @@ const mainMenuTemplate = (win) => {
|
|||||||
type: "checkbox",
|
type: "checkbox",
|
||||||
checked: config.get("options.startAtLogin"),
|
checked: config.get("options.startAtLogin"),
|
||||||
click: (item) => {
|
click: (item) => {
|
||||||
config.set("options.startAtLogin", item.checked);
|
config.setMenuOption("options.startAtLogin", item.checked);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
@ -127,8 +127,8 @@ const mainMenuTemplate = (win) => {
|
|||||||
type: "radio",
|
type: "radio",
|
||||||
checked: !config.get("options.tray"),
|
checked: !config.get("options.tray"),
|
||||||
click: () => {
|
click: () => {
|
||||||
config.set("options.tray", false);
|
config.setMenuOption("options.tray", false);
|
||||||
config.set("options.appVisible", true);
|
config.setMenuOption("options.appVisible", true);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -137,8 +137,8 @@ const mainMenuTemplate = (win) => {
|
|||||||
checked:
|
checked:
|
||||||
config.get("options.tray") && config.get("options.appVisible"),
|
config.get("options.tray") && config.get("options.appVisible"),
|
||||||
click: () => {
|
click: () => {
|
||||||
config.set("options.tray", true);
|
config.setMenuOption("options.tray", true);
|
||||||
config.set("options.appVisible", true);
|
config.setMenuOption("options.appVisible", true);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -147,8 +147,8 @@ const mainMenuTemplate = (win) => {
|
|||||||
checked:
|
checked:
|
||||||
config.get("options.tray") && !config.get("options.appVisible"),
|
config.get("options.tray") && !config.get("options.appVisible"),
|
||||||
click: () => {
|
click: () => {
|
||||||
config.set("options.tray", true);
|
config.setMenuOption("options.tray", true);
|
||||||
config.set("options.appVisible", false);
|
config.setMenuOption("options.appVisible", false);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ type: "separator" },
|
{ type: "separator" },
|
||||||
@ -157,7 +157,7 @@ const mainMenuTemplate = (win) => {
|
|||||||
type: "checkbox",
|
type: "checkbox",
|
||||||
checked: config.get("options.trayClickPlayPause"),
|
checked: config.get("options.trayClickPlayPause"),
|
||||||
click: (item) => {
|
click: (item) => {
|
||||||
config.set("options.trayClickPlayPause", item.checked);
|
config.setMenuOption("options.trayClickPlayPause", item.checked);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@ -179,7 +179,7 @@ const mainMenuTemplate = (win) => {
|
|||||||
type: "checkbox",
|
type: "checkbox",
|
||||||
checked: config.get("options.disableHardwareAcceleration"),
|
checked: config.get("options.disableHardwareAcceleration"),
|
||||||
click: (item) => {
|
click: (item) => {
|
||||||
config.set("options.disableHardwareAcceleration", item.checked);
|
config.setMenuOption("options.disableHardwareAcceleration", item.checked);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -187,7 +187,7 @@ const mainMenuTemplate = (win) => {
|
|||||||
type: "checkbox",
|
type: "checkbox",
|
||||||
checked: config.get("options.restartOnConfigChanges"),
|
checked: config.get("options.restartOnConfigChanges"),
|
||||||
click: (item) => {
|
click: (item) => {
|
||||||
config.set("options.restartOnConfigChanges", item.checked);
|
config.setMenuOption("options.restartOnConfigChanges", item.checked);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -195,7 +195,7 @@ const mainMenuTemplate = (win) => {
|
|||||||
type: "checkbox",
|
type: "checkbox",
|
||||||
checked: config.get("options.autoResetAppCache"),
|
checked: config.get("options.autoResetAppCache"),
|
||||||
click: (item) => {
|
click: (item) => {
|
||||||
config.set("options.autoResetAppCache", item.checked);
|
config.setMenuOption("options.autoResetAppCache", item.checked);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ type: "separator" },
|
{ type: "separator" },
|
||||||
@ -316,7 +316,7 @@ async function setProxy(item, win) {
|
|||||||
}, win);
|
}, win);
|
||||||
|
|
||||||
if (typeof output === "string") {
|
if (typeof output === "string") {
|
||||||
config.set("options.proxy", output);
|
config.setMenuOption("options.proxy", output);
|
||||||
item.checked = output !== "";
|
item.checked = output !== "";
|
||||||
} else { //user pressed cancel
|
} else { //user pressed cancel
|
||||||
item.checked = !item.checked; //reset checkbox
|
item.checked = !item.checked; //reset checkbox
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
const { setOptions } = require("../../config/plugins");
|
const { setMenuOptions } = require("../../config/plugins");
|
||||||
const { edit } = require("../../config");
|
const { edit } = require("../../config");
|
||||||
const { clear, connect, registerRefresh, isConnected } = require("./back");
|
const { clear, connect, registerRefresh, isConnected } = require("./back");
|
||||||
|
|
||||||
@ -26,7 +26,7 @@ module.exports = (win, options, refreshMenu) => {
|
|||||||
checked: options.activityTimoutEnabled,
|
checked: options.activityTimoutEnabled,
|
||||||
click: (item) => {
|
click: (item) => {
|
||||||
options.activityTimoutEnabled = item.checked;
|
options.activityTimoutEnabled = item.checked;
|
||||||
setOptions('discord', options);
|
setMenuOptions('discord', options);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -35,7 +35,7 @@ module.exports = (win, options, refreshMenu) => {
|
|||||||
checked: options.listenAlong,
|
checked: options.listenAlong,
|
||||||
click: (item) => {
|
click: (item) => {
|
||||||
options.listenAlong = item.checked;
|
options.listenAlong = item.checked;
|
||||||
setOptions('discord', options);
|
setMenuOptions('discord', options);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@ -6,7 +6,7 @@ const is = require("electron-is");
|
|||||||
const ytpl = require("ytpl");
|
const ytpl = require("ytpl");
|
||||||
const chokidar = require('chokidar');
|
const chokidar = require('chokidar');
|
||||||
|
|
||||||
const { setOptions } = require("../../config/plugins");
|
const { setMenuOptions } = require("../../config/plugins");
|
||||||
const { sendError } = require("./back");
|
const { sendError } = require("./back");
|
||||||
const { defaultMenuDownloadLabel, getFolder, presets, setBadge } = require("./utils");
|
const { defaultMenuDownloadLabel, getFolder, presets, setBadge } = require("./utils");
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ module.exports = (win, options) => {
|
|||||||
});
|
});
|
||||||
if (result) {
|
if (result) {
|
||||||
options.downloadFolder = result[0];
|
options.downloadFolder = result[0];
|
||||||
setOptions("downloader", options);
|
setMenuOptions("downloader", options);
|
||||||
} // else = user pressed cancel
|
} // else = user pressed cancel
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -59,7 +59,7 @@ module.exports = (win, options) => {
|
|||||||
type: "radio",
|
type: "radio",
|
||||||
click: () => {
|
click: () => {
|
||||||
options.preset = preset;
|
options.preset = preset;
|
||||||
setOptions("downloader", options);
|
setMenuOptions("downloader", options);
|
||||||
},
|
},
|
||||||
checked: options.preset === preset || presets[preset] === undefined,
|
checked: options.preset === preset || presets[preset] === undefined,
|
||||||
})),
|
})),
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
const { setOptions } = require("../../config/plugins");
|
const { setMenuOptions } = require("../../config/plugins");
|
||||||
const path = require("path");
|
const path = require("path");
|
||||||
const { app } = require("electron");
|
const { app } = require("electron");
|
||||||
const fs = require("fs");
|
const fs = require("fs");
|
||||||
@ -15,7 +15,7 @@ module.exports.icons = {
|
|||||||
|
|
||||||
module.exports.setOption = (options, option, value) => {
|
module.exports.setOption = (options, option, value) => {
|
||||||
options[option] = value;
|
options[option] = value;
|
||||||
setOptions("notifications", options)
|
setMenuOptions("notifications", options)
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports.urgencyLevels = [
|
module.exports.urgencyLevels = [
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
const { ipcRenderer } = require("electron");
|
const { ipcRenderer } = require("electron");
|
||||||
const { globalShortcut } = require('@electron/remote');
|
const { globalShortcut } = require('@electron/remote');
|
||||||
|
|
||||||
const { setOptions } = require("../../config/plugins");
|
const { setOptions, setMenuOptions } = require("../../config/plugins");
|
||||||
|
|
||||||
function $(selector) { return document.querySelector(selector); }
|
function $(selector) { return document.querySelector(selector); }
|
||||||
let api;
|
let api;
|
||||||
@ -41,7 +41,7 @@ function firstRun(options) {
|
|||||||
for (option in newOptions) {
|
for (option in newOptions) {
|
||||||
options[option] = newOptions[option];
|
options[option] = newOptions[option];
|
||||||
}
|
}
|
||||||
setOptions("precise-volume", options);
|
setMenuOptions("precise-volume", options);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
const { enabled } = require("./back");
|
const { enabled } = require("./back");
|
||||||
const { setOptions } = require("../../config/plugins");
|
const { setMenuOptions } = require("../../config/plugins");
|
||||||
const prompt = require("custom-electron-prompt");
|
const prompt = require("custom-electron-prompt");
|
||||||
const promptOptions = require("../../providers/prompt-options");
|
const promptOptions = require("../../providers/prompt-options");
|
||||||
|
|
||||||
@ -11,7 +11,7 @@ function changeOptions(changedOptions, options, win) {
|
|||||||
if (enabled()) {
|
if (enabled()) {
|
||||||
win.webContents.send("setOptions", changedOptions);
|
win.webContents.send("setOptions", changedOptions);
|
||||||
} else { // Fallback to usual method if disabled
|
} else { // Fallback to usual method if disabled
|
||||||
setOptions("precise-volume", options);
|
setMenuOptions("precise-volume", options);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
const { setOptions } = require("../../config/plugins");
|
const { setMenuOptions } = require("../../config/plugins");
|
||||||
const prompt = require("custom-electron-prompt");
|
const prompt = require("custom-electron-prompt");
|
||||||
const promptOptions = require("../../providers/prompt-options");
|
const promptOptions = require("../../providers/prompt-options");
|
||||||
|
|
||||||
@ -20,7 +20,7 @@ function setOption(options, key = null, newValue = null) {
|
|||||||
options[key] = newValue;
|
options[key] = newValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
setOptions("shortcuts", options);
|
setMenuOptions("shortcuts", options);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Helper function for keybind prompt
|
// Helper function for keybind prompt
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
const { setOptions } = require("../../config/plugins");
|
const { setMenuOptions } = require("../../config/plugins");
|
||||||
|
|
||||||
module.exports = (win, options) => [
|
module.exports = (win, options) => [
|
||||||
{
|
{
|
||||||
@ -7,7 +7,7 @@ module.exports = (win, options) => [
|
|||||||
checked: options.forceHide,
|
checked: options.forceHide,
|
||||||
click: item => {
|
click: item => {
|
||||||
options.forceHide = item.checked;
|
options.forceHide = item.checked;
|
||||||
setOptions("video-toggle", options);
|
setMenuOptions("video-toggle", options);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|||||||
6
providers/app-controls.js
Normal file
6
providers/app-controls.js
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
const app = require("electron").app || require('@electron/remote').app;
|
||||||
|
|
||||||
|
module.exports.restart = () => {
|
||||||
|
app.relaunch();
|
||||||
|
app.exit();
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user