Skip to content

Commit

Permalink
Merge pull request #561 from Araxeus/fix-restart-on-config-change
Browse files Browse the repository at this point in the history
fix "restart app on config change" option
  • Loading branch information
th-ch authored Feb 9, 2022
2 parents ac54d33 + 37c0cea commit c2fdfcc
Show file tree
Hide file tree
Showing 12 changed files with 54 additions and 40 deletions.
7 changes: 7 additions & 0 deletions config/index.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
const defaultConfig = require("./defaults");
const plugins = require("./plugins");
const store = require("./store");
const { restart } = require("../providers/app-controls");

const set = (key, value) => {
store.set(key, value);
};

function setMenuOption(key, value) {
set(key, value);
if (store.get("options.restartOnConfigChanges")) restart();
}

const get = (key) => {
return store.get(key);
};
Expand All @@ -14,6 +20,7 @@ module.exports = {
defaultConfig,
get,
set,
setMenuOption,
edit: () => store.openInEditor(),
watch: (cb) => {
store.onDidChange("options", cb);
Expand Down
11 changes: 9 additions & 2 deletions config/plugins.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
const store = require("./store");
const { restart } = require("../providers/app-controls");

function getEnabled() {
const plugins = store.get("plugins");
Expand All @@ -24,16 +25,21 @@ function setOptions(plugin, options) {
});
}

function setMenuOptions(plugin, options) {
setOptions(plugin, options);
if (store.get("options.restartOnConfigChanges")) restart();
}

function getOptions(plugin) {
return store.get("plugins")[plugin];
}

function enable(plugin) {
setOptions(plugin, { enabled: true });
setMenuOptions(plugin, { enabled: true });
}

function disable(plugin) {
setOptions(plugin, { enabled: false });
setMenuOptions(plugin, { enabled: false });
}

module.exports = {
Expand All @@ -42,5 +48,6 @@ module.exports = {
enable,
disable,
setOptions,
setMenuOptions,
getOptions,
};
6 changes: 0 additions & 6 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -342,12 +342,6 @@ app.on("ready", () => {

mainWindow = createMainWindow();
setApplicationMenu(mainWindow);
if (config.get("options.restartOnConfigChanges")) {
config.watch(() => {
app.relaunch();
app.exit();
});
}
setUpTray(app, mainWindow);

// Autostart at login
Expand Down
32 changes: 16 additions & 16 deletions menu.js
Original file line number Diff line number Diff line change
Expand Up @@ -68,23 +68,23 @@ const mainMenuTemplate = (win) => {
type: "checkbox",
checked: config.get("options.autoUpdates"),
click: (item) => {
config.set("options.autoUpdates", item.checked);
config.setMenuOption("options.autoUpdates", item.checked);
},
},
{
label: "Resume last song when app starts",
type: "checkbox",
checked: config.get("options.resumeOnStart"),
click: (item) => {
config.set("options.resumeOnStart", item.checked);
config.setMenuOption("options.resumeOnStart", item.checked);
},
},
{
label: "Remove upgrade button",
type: "checkbox",
checked: config.get("options.removeUpgradeButton"),
click: (item) => {
config.set("options.removeUpgradeButton", item.checked);
config.setMenuOption("options.removeUpgradeButton", item.checked);
},
},
...(is.windows() || is.linux()
Expand All @@ -94,7 +94,7 @@ const mainMenuTemplate = (win) => {
type: "checkbox",
checked: config.get("options.hideMenu"),
click: (item) => {
config.set("options.hideMenu", item.checked);
config.setMenuOption("options.hideMenu", item.checked);
if (item.checked && !config.get("options.hideMenuWarned")) {
dialog.showMessageBox(win, {
type: 'info', title: 'Hide Menu Enabled',
Expand All @@ -114,7 +114,7 @@ const mainMenuTemplate = (win) => {
type: "checkbox",
checked: config.get("options.startAtLogin"),
click: (item) => {
config.set("options.startAtLogin", item.checked);
config.setMenuOption("options.startAtLogin", item.checked);
},
},
]
Expand All @@ -127,8 +127,8 @@ const mainMenuTemplate = (win) => {
type: "radio",
checked: !config.get("options.tray"),
click: () => {
config.set("options.tray", false);
config.set("options.appVisible", true);
config.setMenuOption("options.tray", false);
config.setMenuOption("options.appVisible", true);
},
},
{
Expand All @@ -137,8 +137,8 @@ const mainMenuTemplate = (win) => {
checked:
config.get("options.tray") && config.get("options.appVisible"),
click: () => {
config.set("options.tray", true);
config.set("options.appVisible", true);
config.setMenuOption("options.tray", true);
config.setMenuOption("options.appVisible", true);
},
},
{
Expand All @@ -147,8 +147,8 @@ const mainMenuTemplate = (win) => {
checked:
config.get("options.tray") && !config.get("options.appVisible"),
click: () => {
config.set("options.tray", true);
config.set("options.appVisible", false);
config.setMenuOption("options.tray", true);
config.setMenuOption("options.appVisible", false);
},
},
{ type: "separator" },
Expand All @@ -157,7 +157,7 @@ const mainMenuTemplate = (win) => {
type: "checkbox",
checked: config.get("options.trayClickPlayPause"),
click: (item) => {
config.set("options.trayClickPlayPause", item.checked);
config.setMenuOption("options.trayClickPlayPause", item.checked);
},
},
],
Expand All @@ -179,23 +179,23 @@ const mainMenuTemplate = (win) => {
type: "checkbox",
checked: config.get("options.disableHardwareAcceleration"),
click: (item) => {
config.set("options.disableHardwareAcceleration", item.checked);
config.setMenuOption("options.disableHardwareAcceleration", item.checked);
},
},
{
label: "Restart on config changes",
type: "checkbox",
checked: config.get("options.restartOnConfigChanges"),
click: (item) => {
config.set("options.restartOnConfigChanges", item.checked);
config.setMenuOption("options.restartOnConfigChanges", item.checked);
},
},
{
label: "Reset App cache when app starts",
type: "checkbox",
checked: config.get("options.autoResetAppCache"),
click: (item) => {
config.set("options.autoResetAppCache", item.checked);
config.setMenuOption("options.autoResetAppCache", item.checked);
},
},
{ type: "separator" },
Expand Down Expand Up @@ -316,7 +316,7 @@ async function setProxy(item, win) {
}, win);

if (typeof output === "string") {
config.set("options.proxy", output);
config.setMenuOption("options.proxy", output);
item.checked = output !== "";
} else { //user pressed cancel
item.checked = !item.checked; //reset checkbox
Expand Down
6 changes: 3 additions & 3 deletions plugins/discord/menu.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const { setOptions } = require("../../config/plugins");
const { setMenuOptions } = require("../../config/plugins");
const { edit } = require("../../config");
const { clear, connect, registerRefresh, isConnected } = require("./back");

Expand Down Expand Up @@ -26,7 +26,7 @@ module.exports = (win, options, refreshMenu) => {
checked: options.activityTimoutEnabled,
click: (item) => {
options.activityTimoutEnabled = item.checked;
setOptions('discord', options);
setMenuOptions('discord', options);
},
},
{
Expand All @@ -35,7 +35,7 @@ module.exports = (win, options, refreshMenu) => {
checked: options.listenAlong,
click: (item) => {
options.listenAlong = item.checked;
setOptions('discord', options);
setMenuOptions('discord', options);
},
},
{
Expand Down
6 changes: 3 additions & 3 deletions plugins/downloader/menu.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const ytpl = require("ytpl");
const chokidar = require('chokidar');
const filenamify = require('filenamify');

const { setOptions } = require("../../config/plugins");
const { setMenuOptions } = require("../../config/plugins");
const { sendError } = require("./back");
const { defaultMenuDownloadLabel, getFolder, presets, setBadge } = require("./utils");

Expand Down Expand Up @@ -49,7 +49,7 @@ module.exports = (win, options) => {
});
if (result) {
options.downloadFolder = result[0];
setOptions("downloader", options);
setMenuOptions("downloader", options);
} // else = user pressed cancel
},
},
Expand All @@ -60,7 +60,7 @@ module.exports = (win, options) => {
type: "radio",
click: () => {
options.preset = preset;
setOptions("downloader", options);
setMenuOptions("downloader", options);
},
checked: options.preset === preset || presets[preset] === undefined,
})),
Expand Down
4 changes: 2 additions & 2 deletions plugins/notifications/utils.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const { setOptions } = require("../../config/plugins");
const { setMenuOptions } = require("../../config/plugins");
const path = require("path");
const { app } = require("electron");
const fs = require("fs");
Expand All @@ -15,7 +15,7 @@ module.exports.icons = {

module.exports.setOption = (options, option, value) => {
options[option] = value;
setOptions("notifications", options)
setMenuOptions("notifications", options)
}

module.exports.urgencyLevels = [
Expand Down
4 changes: 2 additions & 2 deletions plugins/precise-volume/front.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const { ipcRenderer } = require("electron");
const { globalShortcut } = require('@electron/remote');

const { setOptions, isEnabled } = require("../../config/plugins");
const { setOptions, setMenuOptions, isEnabled } = require("../../config/plugins");

function $(selector) { return document.querySelector(selector); }
let api;
Expand Down Expand Up @@ -48,7 +48,7 @@ function firstRun(options) {
for (option in newOptions) {
options[option] = newOptions[option];
}
setOptions("precise-volume", options);
setMenuOptions("precise-volume", options);
});
}

Expand Down
4 changes: 2 additions & 2 deletions plugins/precise-volume/menu.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const { enabled } = require("./back");
const { setOptions } = require("../../config/plugins");
const { setMenuOptions } = require("../../config/plugins");
const prompt = require("custom-electron-prompt");
const promptOptions = require("../../providers/prompt-options");

Expand All @@ -11,7 +11,7 @@ function changeOptions(changedOptions, options, win) {
if (enabled()) {
win.webContents.send("setOptions", changedOptions);
} else { // Fallback to usual method if disabled
setOptions("precise-volume", options);
setMenuOptions("precise-volume", options);
}
}

Expand Down
4 changes: 2 additions & 2 deletions plugins/shortcuts/menu.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const { setOptions } = require("../../config/plugins");
const { setMenuOptions } = require("../../config/plugins");
const prompt = require("custom-electron-prompt");
const promptOptions = require("../../providers/prompt-options");

Expand All @@ -20,7 +20,7 @@ function setOption(options, key = null, newValue = null) {
options[key] = newValue;
}

setOptions("shortcuts", options);
setMenuOptions("shortcuts", options);
}

// Helper function for keybind prompt
Expand Down
4 changes: 2 additions & 2 deletions plugins/video-toggle/menu.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
const { setOptions } = require("../../config/plugins");
const { setMenuOptions } = require("../../config/plugins");

module.exports = (win, options) => [
{
Expand All @@ -7,7 +7,7 @@ module.exports = (win, options) => [
checked: options.forceHide,
click: item => {
options.forceHide = item.checked;
setOptions("video-toggle", options);
setMenuOptions("video-toggle", options);
}
}
];
6 changes: 6 additions & 0 deletions providers/app-controls.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
const app = require("electron").app || require('@electron/remote').app;

module.exports.restart = () => {
app.relaunch();
app.exit();
};

0 comments on commit c2fdfcc

Please sign in to comment.