From f9f3482bf11813c56516332fc11a1cfc6e9d0c17 Mon Sep 17 00:00:00 2001 From: TC Date: Wed, 31 Mar 2021 20:23:10 +0200 Subject: [PATCH] Pass callback in menu builder --- menu.js | 13 ++++++++++++- plugins/styled-bars/back.js | 25 +++---------------------- 2 files changed, 15 insertions(+), 23 deletions(-) diff --git a/menu.js b/menu.js index 33ac027f..dc3b1b8e 100644 --- a/menu.js +++ b/menu.js @@ -20,7 +20,7 @@ const pluginEnabledMenu = (plugin, label = "") => ({ }, }); -const mainMenuTemplate = (win, withRoles = true) => [ +const mainMenuTemplate = (win, withRoles = true, clickCb = () => {}) => [ { label: "Plugins", submenu: [ @@ -64,6 +64,7 @@ const mainMenuTemplate = (win, withRoles = true) => [ checked: config.get("options.autoUpdates"), click: (item) => { config.set("options.autoUpdates", item.checked); + clickCb(item); }, }, { @@ -72,6 +73,7 @@ const mainMenuTemplate = (win, withRoles = true) => [ checked: config.get("options.disableHardwareAcceleration"), click: (item) => { config.set("options.disableHardwareAcceleration", item.checked); + clickCb(item); }, }, { @@ -80,6 +82,7 @@ const mainMenuTemplate = (win, withRoles = true) => [ checked: config.get("options.restartOnConfigChanges"), click: (item) => { config.set("options.restartOnConfigChanges", item.checked); + clickCb(item); }, }, { @@ -88,6 +91,7 @@ const mainMenuTemplate = (win, withRoles = true) => [ checked: config.get("options.autoResetAppCache"), click: (item) => { config.set("options.autoResetAppCache", item.checked); + clickCb(item); }, }, { @@ -96,6 +100,7 @@ const mainMenuTemplate = (win, withRoles = true) => [ checked: config.get("options.resumeOnStart"), click: (item) => { config.set("options.resumeOnStart", item.checked); + clickCb(item); }, }, ...(is.windows() || is.linux() @@ -106,6 +111,7 @@ const mainMenuTemplate = (win, withRoles = true) => [ checked: config.get("options.hideMenu"), click: (item) => { config.set("options.hideMenu", item.checked); + clickCb(item); }, }, ] @@ -120,6 +126,7 @@ const mainMenuTemplate = (win, withRoles = true) => [ checked: config.get("options.startAtLogin"), click: (item) => { config.set("options.startAtLogin", item.checked); + clickCb(item); }, }, ] @@ -134,6 +141,7 @@ const mainMenuTemplate = (win, withRoles = true) => [ click: () => { config.set("options.tray", false); config.set("options.appVisible", true); + clickCb(item); }, }, { @@ -144,6 +152,7 @@ const mainMenuTemplate = (win, withRoles = true) => [ click: () => { config.set("options.tray", true); config.set("options.appVisible", true); + clickCb(item); }, }, { @@ -154,6 +163,7 @@ const mainMenuTemplate = (win, withRoles = true) => [ click: () => { config.set("options.tray", true); config.set("options.appVisible", false); + clickCb(item); }, }, { type: "separator" }, @@ -163,6 +173,7 @@ const mainMenuTemplate = (win, withRoles = true) => [ checked: config.get("options.trayClickPlayPause"), click: (item) => { config.set("options.trayClickPlayPause", item.checked); + clickCb(item); }, }, ], diff --git a/plugins/styled-bars/back.js b/plugins/styled-bars/back.js index ec70c7b2..cfc92108 100644 --- a/plugins/styled-bars/back.js +++ b/plugins/styled-bars/back.js @@ -9,9 +9,9 @@ var { mainMenuTemplate } = require("../../menu"); const originTemplate = mainMenuTemplate; mainMenuTemplate = function (winHook) { //get template - let template = originTemplate(winHook, false); - //fix checkbox and roles - fixMenu(template); + let template = originTemplate(winHook, false, (item) => { + checkCheckbox(item); + }); //return as normal return template; }; @@ -51,25 +51,6 @@ function switchMenuVisibility() { win.webContents.send("updateMenu", visible); } -//go over each item in menu -function fixMenu(template) { - for (let index in template) { - let item = template[index]; - //apply function on submenu - if (item.submenu != null) { - fixMenu(item.submenu); - } - //change onClick of checkbox+radio - else if (item.type === "checkbox" || item.type === "radio") { - let ogOnclick = item.click; - item.click = (itemClicked) => { - ogOnclick(itemClicked); - checkCheckbox(itemClicked); - }; - } - } -} - function checkCheckbox(item) { //check item item.checked = !item.checked;