From 992b2d9918ae0bf6f2982ba263adcb2f859ba45f Mon Sep 17 00:00:00 2001 From: tiddlygit-test Date: Sat, 16 Oct 2021 12:37:40 +0800 Subject: [PATCH] fix: try prevent empty menuitem passedin I got ```json [ { "id": "TiddlyGit", "submenu": [ {}, { "type": "separator" }, {}, { "accelerator": "CmdOrCtrl+," }, { "type": "separator" }, { "accelerator": "CmdOrCtrl+Shift+N" }, { "type": "separator" }, { "role": "services", "submenu": [] }, { "type": "separator" }, { "role": "hide" }, { "role": "hideOthers" }, { "role": "unhide" }, { "label": null, "role": "quit" } ] }, { "id": "Edit", "role": "editMenu" }, { "id": "View", "submenu": [ { "accelerator": "CmdOrCtrl+F", "enabled": true }, { "accelerator": "CmdOrCtrl+G", "enabled": true }, { "accelerator": "Shift+CmdOrCtrl+G", "enabled": true }, { "label": "undefined (undefined)", "checked": false }, { "type": "separator" }, { "role": "reload" }, { "role": "forceReload" }, { "role": "zoom" }, { "role": "resetZoom" }, { "role": "togglefullscreen" }, { "role": "close" } ] }, { "id": "Language" }, { "id": "History", "submenu": [ { "accelerator": "Shift+CmdOrCtrl+H", "enabled": true }, { "accelerator": "CmdOrCtrl+[", "enabled": true }, { "accelerator": "CmdOrCtrl+]", "enabled": true }, { "type": "separator" }, { "accelerator": "CmdOrCtrl+L", "enabled": true } ] }, { "id": "Workspaces", "submenu": [ { "accelerator": "CmdOrCtrl+Shift+]", "enabled": false }, { "accelerator": "CmdOrCtrl+Shift+[", "enabled": false }, { "type": "separator" }, { "enabled": true }, { "enabled": true }, { "enabled": true }, { "type": "separator" }, {}, { "accelerator": "CmdOrCtrl+Option+I", "enabled": true } ] }, { "id": "Workspaces", "submenu": [] }, { "role": "windowMenu", "id": "Window" }, { "role": "help", "id": "help", "submenu": [{}, {}, {}, {}] }, { "label": "Wiki", "submenu": [{ "enabled": true }, { "accelerator": "CmdOrCtrl+Alt+Shift+P" }] } ] ``` --- src/services/menu/index.ts | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/services/menu/index.ts b/src/services/menu/index.ts index 2a535b96..d11c7b53 100644 --- a/src/services/menu/index.ts +++ b/src/services/menu/index.ts @@ -93,14 +93,16 @@ export class MenuService implements IMenuService { ): Promise { if (submenu === undefined) return; return await Promise.all( - submenu.map(async (item) => ({ - ...item, - /** label sometimes is null, causing */ - label: typeof item.label === 'function' ? item.label() ?? undefined : item.label, - checked: typeof item.checked === 'function' ? await item.checked() : item.checked, - enabled: typeof item.enabled === 'function' ? await item.enabled() : item.enabled, - submenu: !Array.isArray(item.submenu) ? item.submenu : await this.getCurrentMenuItemConstructorOptions(compact(item.submenu)), - })), + submenu + .filter((item) => Object.keys(item).length > 0) + .map(async (item) => ({ + ...item, + /** label sometimes is null, causing */ + label: typeof item.label === 'function' ? item.label() ?? undefined : item.label, + checked: typeof item.checked === 'function' ? await item.checked() : item.checked, + enabled: typeof item.enabled === 'function' ? await item.enabled() : item.enabled, + submenu: !Array.isArray(item.submenu) ? item.submenu : await this.getCurrentMenuItemConstructorOptions(compact(item.submenu)), + })), ); }