fix: menu await

This commit is contained in:
JellyBrick
2023-11-28 12:32:07 +09:00
parent da70a4ce7e
commit 1d26d10e57
3 changed files with 12 additions and 12 deletions

View File

@ -600,8 +600,8 @@ app.whenReady().then(async () => {
} }
mainWindow = await createMainWindow(); mainWindow = await createMainWindow();
setApplicationMenu(mainWindow); await setApplicationMenu(mainWindow);
refreshMenu(mainWindow); await refreshMenu(mainWindow);
setUpTray(app, mainWindow); setUpTray(app, mainWindow);
setupProtocolHandler(mainWindow); setupProtocolHandler(mainWindow);

View File

@ -21,8 +21,8 @@ const createContext = (id: string, win: BrowserWindow): MenuContext<PluginConfig
config.setPartial(`plugins.${id}`, newConfig, allPlugins[id].config); config.setPartial(`plugins.${id}`, newConfig, allPlugins[id].config);
}, },
window: win, window: win,
refresh: () => { refresh: async () => {
setApplicationMenu(win); await setApplicationMenu(win);
if (config.plugins.isEnabled('in-app-menu')) { if (config.plugins.isEnabled('in-app-menu')) {
win.webContents.send('refresh-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(); const pluginConfigs = config.plugins.getPlugins();
for (const [pluginId, pluginDef] of Object.entries(allPlugins)) { for (const [pluginId, pluginDef] of Object.entries(allPlugins)) {
const config = deepmerge(pluginDef.config ?? { enabled: false }, pluginConfigs[pluginId] ?? {}); const config = deepmerge(pluginDef.config ?? { enabled: false }, pluginConfigs[pluginId] ?? {});
if (config.enabled) { if (config.enabled) {
forceLoadMenuPlugin(pluginId, win); await forceLoadMenuPlugin(pluginId, win);
} }
} }
}; };

View File

@ -46,17 +46,17 @@ const pluginEnabledMenu = (
}, },
}); });
export const refreshMenu = (win: BrowserWindow) => { export const refreshMenu = async (win: BrowserWindow) => {
setApplicationMenu(win); await setApplicationMenu(win);
if (inAppMenuActive) { if (inAppMenuActive) {
win.webContents.send('refresh-in-app-menu'); win.webContents.send('refresh-in-app-menu');
} }
}; };
export const mainMenuTemplate = (win: BrowserWindow): MenuTemplate => { export const mainMenuTemplate = async (win: BrowserWindow): Promise<MenuTemplate> => {
const innerRefreshMenu = () => refreshMenu(win); const innerRefreshMenu = () => refreshMenu(win);
loadAllMenuPlugins(win); await loadAllMenuPlugins(win);
const menuResult = Object.entries(getAllMenuTemplate()).map( const menuResult = Object.entries(getAllMenuTemplate()).map(
([id, template]) => { ([id, template]) => {
@ -452,8 +452,8 @@ export const mainMenuTemplate = (win: BrowserWindow): MenuTemplate => {
}, },
]; ];
}; };
export const setApplicationMenu = (win: Electron.BrowserWindow) => { export const setApplicationMenu = async (win: Electron.BrowserWindow) => {
const menuTemplate: MenuTemplate = [...mainMenuTemplate(win)]; const menuTemplate: MenuTemplate = [...await mainMenuTemplate(win)];
if (process.platform === 'darwin') { if (process.platform === 'darwin') {
const { name } = app; const { name } = app;
menuTemplate.unshift({ menuTemplate.unshift({