diff --git a/src/index.ts b/src/index.ts index 77b57a69..31f443af 100644 --- a/src/index.ts +++ b/src/index.ts @@ -600,8 +600,8 @@ app.whenReady().then(async () => { } mainWindow = await createMainWindow(); - setApplicationMenu(mainWindow); - refreshMenu(mainWindow); + await setApplicationMenu(mainWindow); + await refreshMenu(mainWindow); setUpTray(app, mainWindow); setupProtocolHandler(mainWindow); diff --git a/src/loader/menu.ts b/src/loader/menu.ts index 007b3320..c037d237 100644 --- a/src/loader/menu.ts +++ b/src/loader/menu.ts @@ -21,8 +21,8 @@ const createContext = (id: string, win: BrowserWindow): MenuContext { - setApplicationMenu(win); + refresh: async () => { + await setApplicationMenu(win); if (config.plugins.isEnabled('in-app-menu')) { win.webContents.send('refresh-in-app-menu'); @@ -46,14 +46,14 @@ export const forceLoadMenuPlugin = async (id: string, win: BrowserWindow) => { } }; -export const loadAllMenuPlugins = (win: BrowserWindow) => { +export const loadAllMenuPlugins = async (win: BrowserWindow) => { const pluginConfigs = config.plugins.getPlugins(); for (const [pluginId, pluginDef] of Object.entries(allPlugins)) { const config = deepmerge(pluginDef.config ?? { enabled: false }, pluginConfigs[pluginId] ?? {}); if (config.enabled) { - forceLoadMenuPlugin(pluginId, win); + await forceLoadMenuPlugin(pluginId, win); } } }; diff --git a/src/menu.ts b/src/menu.ts index 26ad7192..1fa0506a 100644 --- a/src/menu.ts +++ b/src/menu.ts @@ -46,17 +46,17 @@ const pluginEnabledMenu = ( }, }); -export const refreshMenu = (win: BrowserWindow) => { - setApplicationMenu(win); +export const refreshMenu = async (win: BrowserWindow) => { + await setApplicationMenu(win); if (inAppMenuActive) { win.webContents.send('refresh-in-app-menu'); } }; -export const mainMenuTemplate = (win: BrowserWindow): MenuTemplate => { +export const mainMenuTemplate = async (win: BrowserWindow): Promise => { const innerRefreshMenu = () => refreshMenu(win); - loadAllMenuPlugins(win); + await loadAllMenuPlugins(win); const menuResult = Object.entries(getAllMenuTemplate()).map( ([id, template]) => { @@ -452,8 +452,8 @@ export const mainMenuTemplate = (win: BrowserWindow): MenuTemplate => { }, ]; }; -export const setApplicationMenu = (win: Electron.BrowserWindow) => { - const menuTemplate: MenuTemplate = [...mainMenuTemplate(win)]; +export const setApplicationMenu = async (win: Electron.BrowserWindow) => { + const menuTemplate: MenuTemplate = [...await mainMenuTemplate(win)]; if (process.platform === 'darwin') { const { name } = app; menuTemplate.unshift({