mirror of
https://github.com/th-ch/youtube-music.git
synced 2026-01-10 10:11:46 +00:00
update refreshMenu() function
This commit is contained in:
409
menu.js
409
menu.js
@ -10,7 +10,7 @@ const config = require("./config");
|
||||
// true only if in-app-menu was loaded on launch
|
||||
const inAppMenuActive = config.plugins.isEnabled("in-app-menu");
|
||||
|
||||
const pluginEnabledMenu = (win, plugin, label = "", hasSubmenu = false) => ({
|
||||
const pluginEnabledMenu = (plugin, label = "", hasSubmenu = false, refreshMenu = undefined) => ({
|
||||
label: label || plugin,
|
||||
type: "checkbox",
|
||||
checked: config.plugins.isEnabled(plugin),
|
||||
@ -21,223 +21,226 @@ const pluginEnabledMenu = (win, plugin, label = "", hasSubmenu = false) => ({
|
||||
config.plugins.disable(plugin);
|
||||
}
|
||||
if (hasSubmenu) {
|
||||
this.setApplicationMenu(win);
|
||||
if (inAppMenuActive) {
|
||||
win.webContents.send("updateMenu", true);
|
||||
}
|
||||
refreshMenu();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
const mainMenuTemplate = (win) => [
|
||||
{
|
||||
label: "Plugins",
|
||||
submenu: [
|
||||
...getAllPlugins().map((plugin) => {
|
||||
const pluginPath = path.join(__dirname, "plugins", plugin, "menu.js")
|
||||
if (existsSync(pluginPath)) {
|
||||
if (!config.plugins.isEnabled(plugin)) {
|
||||
return pluginEnabledMenu(win, plugin, "", true);
|
||||
const mainMenuTemplate = (win) => {
|
||||
const refreshMenu = () => {
|
||||
this.setApplicationMenu(win);
|
||||
if (inAppMenuActive) {
|
||||
win.webContents.send("updateMenu", true);
|
||||
}
|
||||
}
|
||||
return [
|
||||
{
|
||||
label: "Plugins",
|
||||
submenu: [
|
||||
...getAllPlugins().map((plugin) => {
|
||||
const pluginPath = path.join(__dirname, "plugins", plugin, "menu.js")
|
||||
if (existsSync(pluginPath)) {
|
||||
if (!config.plugins.isEnabled(plugin)) {
|
||||
return pluginEnabledMenu(plugin, "", true, refreshMenu);
|
||||
}
|
||||
const getPluginMenu = require(pluginPath);
|
||||
return {
|
||||
label: plugin,
|
||||
submenu: [
|
||||
pluginEnabledMenu(plugin, "Enabled", true, refreshMenu),
|
||||
...getPluginMenu(win, config.plugins.getOptions(plugin), refreshMenu),
|
||||
],
|
||||
};
|
||||
}
|
||||
const getPluginMenu = require(pluginPath);
|
||||
return {
|
||||
label: plugin,
|
||||
submenu: [
|
||||
pluginEnabledMenu(win, plugin, "Enabled", true),
|
||||
...getPluginMenu(win, config.plugins.getOptions(plugin), () =>
|
||||
module.exports.setApplicationMenu(win)
|
||||
),
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
return pluginEnabledMenu(win, plugin);
|
||||
}),
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Options",
|
||||
submenu: [
|
||||
{
|
||||
label: "Auto-update",
|
||||
type: "checkbox",
|
||||
checked: config.get("options.autoUpdates"),
|
||||
click: (item) => {
|
||||
config.set("options.autoUpdates", item.checked);
|
||||
return pluginEnabledMenu(plugin);
|
||||
}),
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Options",
|
||||
submenu: [
|
||||
{
|
||||
label: "Auto-update",
|
||||
type: "checkbox",
|
||||
checked: config.get("options.autoUpdates"),
|
||||
click: (item) => {
|
||||
config.set("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);
|
||||
{
|
||||
label: "Resume last song when app starts",
|
||||
type: "checkbox",
|
||||
checked: config.get("options.resumeOnStart"),
|
||||
click: (item) => {
|
||||
config.set("options.resumeOnStart", item.checked);
|
||||
},
|
||||
},
|
||||
},
|
||||
...(is.windows() || is.linux()
|
||||
? [
|
||||
{
|
||||
label: "Hide menu",
|
||||
type: "checkbox",
|
||||
checked: config.get("options.hideMenu"),
|
||||
click: (item) => {
|
||||
config.set("options.hideMenu", item.checked);
|
||||
},
|
||||
},
|
||||
]
|
||||
: []),
|
||||
...(is.windows() || is.macOS()
|
||||
? // Only works on Win/Mac
|
||||
// https://www.electronjs.org/docs/api/app#appsetloginitemsettingssettings-macos-windows
|
||||
[
|
||||
{
|
||||
label: "Start at login",
|
||||
type: "checkbox",
|
||||
checked: config.get("options.startAtLogin"),
|
||||
click: (item) => {
|
||||
config.set("options.startAtLogin", item.checked);
|
||||
},
|
||||
},
|
||||
]
|
||||
: []),
|
||||
{
|
||||
label: "Tray",
|
||||
submenu: [
|
||||
{
|
||||
label: "Disabled",
|
||||
type: "radio",
|
||||
checked: !config.get("options.tray"),
|
||||
click: () => {
|
||||
config.set("options.tray", false);
|
||||
config.set("options.appVisible", true);
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "Enabled + app visible",
|
||||
type: "radio",
|
||||
checked:
|
||||
config.get("options.tray") && config.get("options.appVisible"),
|
||||
click: () => {
|
||||
config.set("options.tray", true);
|
||||
config.set("options.appVisible", true);
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "Enabled + app hidden",
|
||||
type: "radio",
|
||||
checked:
|
||||
config.get("options.tray") && !config.get("options.appVisible"),
|
||||
click: () => {
|
||||
config.set("options.tray", true);
|
||||
config.set("options.appVisible", false);
|
||||
},
|
||||
},
|
||||
{ type: "separator" },
|
||||
{
|
||||
label: "Play/Pause on click",
|
||||
type: "checkbox",
|
||||
checked: config.get("options.trayClickPlayPause"),
|
||||
click: (item) => {
|
||||
config.set("options.trayClickPlayPause", item.checked);
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{ type: "separator" },
|
||||
{
|
||||
label: "Advanced options",
|
||||
submenu: [
|
||||
{
|
||||
label: "Disable hardware acceleration",
|
||||
type: "checkbox",
|
||||
checked: config.get("options.disableHardwareAcceleration"),
|
||||
click: (item) => {
|
||||
config.set("options.disableHardwareAcceleration", item.checked);
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "Restart on config changes",
|
||||
type: "checkbox",
|
||||
checked: config.get("options.restartOnConfigChanges"),
|
||||
click: (item) => {
|
||||
config.set("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);
|
||||
},
|
||||
},
|
||||
{ type: "separator" },
|
||||
is.macOS() ?
|
||||
...(is.windows() || is.linux()
|
||||
? [
|
||||
{
|
||||
label: "Toggle DevTools",
|
||||
// Cannot use "toggleDevTools" role in MacOS
|
||||
click: () => {
|
||||
const { webContents } = win;
|
||||
if (webContents.isDevToolsOpened()) {
|
||||
webContents.closeDevTools();
|
||||
} else {
|
||||
const devToolsOptions = {};
|
||||
webContents.openDevTools(devToolsOptions);
|
||||
}
|
||||
label: "Hide menu",
|
||||
type: "checkbox",
|
||||
checked: config.get("options.hideMenu"),
|
||||
click: (item) => {
|
||||
config.set("options.hideMenu", item.checked);
|
||||
},
|
||||
} :
|
||||
{ role: "toggleDevTools" },
|
||||
{
|
||||
label: "Edit config.json",
|
||||
click: () => {
|
||||
config.edit();
|
||||
},
|
||||
]
|
||||
: []),
|
||||
...(is.windows() || is.macOS()
|
||||
? // Only works on Win/Mac
|
||||
// https://www.electronjs.org/docs/api/app#appsetloginitemsettingssettings-macos-windows
|
||||
[
|
||||
{
|
||||
label: "Start at login",
|
||||
type: "checkbox",
|
||||
checked: config.get("options.startAtLogin"),
|
||||
click: (item) => {
|
||||
config.set("options.startAtLogin", item.checked);
|
||||
},
|
||||
},
|
||||
]
|
||||
: []),
|
||||
{
|
||||
label: "Tray",
|
||||
submenu: [
|
||||
{
|
||||
label: "Disabled",
|
||||
type: "radio",
|
||||
checked: !config.get("options.tray"),
|
||||
click: () => {
|
||||
config.set("options.tray", false);
|
||||
config.set("options.appVisible", true);
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "Enabled + app visible",
|
||||
type: "radio",
|
||||
checked:
|
||||
config.get("options.tray") && config.get("options.appVisible"),
|
||||
click: () => {
|
||||
config.set("options.tray", true);
|
||||
config.set("options.appVisible", true);
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "Enabled + app hidden",
|
||||
type: "radio",
|
||||
checked:
|
||||
config.get("options.tray") && !config.get("options.appVisible"),
|
||||
click: () => {
|
||||
config.set("options.tray", true);
|
||||
config.set("options.appVisible", false);
|
||||
},
|
||||
},
|
||||
{ type: "separator" },
|
||||
{
|
||||
label: "Play/Pause on click",
|
||||
type: "checkbox",
|
||||
checked: config.get("options.trayClickPlayPause"),
|
||||
click: (item) => {
|
||||
config.set("options.trayClickPlayPause", item.checked);
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
{ type: "separator" },
|
||||
{
|
||||
label: "Advanced options",
|
||||
submenu: [
|
||||
{
|
||||
label: "Disable hardware acceleration",
|
||||
type: "checkbox",
|
||||
checked: config.get("options.disableHardwareAcceleration"),
|
||||
click: (item) => {
|
||||
config.set("options.disableHardwareAcceleration", item.checked);
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "Restart on config changes",
|
||||
type: "checkbox",
|
||||
checked: config.get("options.restartOnConfigChanges"),
|
||||
click: (item) => {
|
||||
config.set("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);
|
||||
},
|
||||
},
|
||||
{ type: "separator" },
|
||||
is.macOS() ?
|
||||
{
|
||||
label: "Toggle DevTools",
|
||||
// Cannot use "toggleDevTools" role in MacOS
|
||||
click: () => {
|
||||
const { webContents } = win;
|
||||
if (webContents.isDevToolsOpened()) {
|
||||
webContents.closeDevTools();
|
||||
} else {
|
||||
const devToolsOptions = {};
|
||||
webContents.openDevTools(devToolsOptions);
|
||||
}
|
||||
},
|
||||
} :
|
||||
{ role: "toggleDevTools" },
|
||||
{
|
||||
label: "Edit config.json",
|
||||
click: () => {
|
||||
config.edit();
|
||||
},
|
||||
},
|
||||
]
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "View",
|
||||
submenu: [
|
||||
{ role: "reload" },
|
||||
{ role: "forceReload" },
|
||||
{ type: "separator" },
|
||||
{ role: "zoomIn" },
|
||||
{ role: "zoomOut" },
|
||||
{ role: "resetZoom" },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Navigation",
|
||||
submenu: [
|
||||
{
|
||||
label: "Go back",
|
||||
click: () => {
|
||||
if (win.webContents.canGoBack()) {
|
||||
win.webContents.goBack();
|
||||
}
|
||||
},
|
||||
]
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "View",
|
||||
submenu: [
|
||||
{ role: "reload" },
|
||||
{ role: "forceReload" },
|
||||
{ type: "separator" },
|
||||
{ role: "zoomIn" },
|
||||
{ role: "zoomOut" },
|
||||
{ role: "resetZoom" },
|
||||
],
|
||||
},
|
||||
{
|
||||
label: "Navigation",
|
||||
submenu: [
|
||||
{
|
||||
label: "Go back",
|
||||
click: () => {
|
||||
if (win.webContents.canGoBack()) {
|
||||
win.webContents.goBack();
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "Go forward",
|
||||
click: () => {
|
||||
if (win.webContents.canGoForward()) {
|
||||
win.webContents.goForward();
|
||||
}
|
||||
{
|
||||
label: "Go forward",
|
||||
click: () => {
|
||||
if (win.webContents.canGoForward()) {
|
||||
win.webContents.goForward();
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
label: "Restart App",
|
||||
click: () => {
|
||||
app.relaunch();
|
||||
app.quit();
|
||||
{
|
||||
label: "Restart App",
|
||||
click: () => {
|
||||
app.relaunch();
|
||||
app.quit();
|
||||
},
|
||||
},
|
||||
},
|
||||
{ role: "quit" },
|
||||
],
|
||||
},
|
||||
];
|
||||
{ role: "quit" },
|
||||
],
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
module.exports.mainMenuTemplate = mainMenuTemplate;
|
||||
module.exports.setApplicationMenu = (win) => {
|
||||
|
||||
Reference in New Issue
Block a user