From eed6105222d41f72338022722c08552f04d79fa3 Mon Sep 17 00:00:00 2001 From: Michael Clark <5285928+MikesGlitch@users.noreply.github.com> Date: Fri, 12 Apr 2024 21:28:55 +0100 Subject: [PATCH] Electron: Fix load backup functionality (#2580) --- packages/desktop-client/src/components/App.tsx | 2 +- packages/desktop-electron/index.js | 14 +++++++++----- packages/desktop-electron/menu.js | 2 +- packages/desktop-electron/preload.js | 4 ++-- upcoming-release-notes/2580.md | 6 ++++++ 5 files changed, 19 insertions(+), 9 deletions(-) create mode 100644 upcoming-release-notes/2580.md diff --git a/packages/desktop-client/src/components/App.tsx b/packages/desktop-client/src/components/App.tsx index 0b4ea838e..5fc229e14 100644 --- a/packages/desktop-client/src/components/App.tsx +++ b/packages/desktop-client/src/components/App.tsx @@ -77,7 +77,7 @@ function AppInner({ budgetId, cloudFileId }: AppInnerProps) { }, []); useEffect(() => { - global.Actual.updateAppMenu(!!budgetId); + global.Actual.updateAppMenu(budgetId); }, [budgetId]); return ( diff --git a/packages/desktop-electron/index.js b/packages/desktop-electron/index.js index d8e033352..909a0cc7f 100644 --- a/packages/desktop-electron/index.js +++ b/packages/desktop-electron/index.js @@ -137,7 +137,7 @@ async function createWindow() { win.on('closed', () => { clientWin = null; - updateMenu(false); + updateMenu(); unlistenToState(); }); @@ -187,13 +187,17 @@ function isExternalUrl(url) { return !url.includes('localhost:') && !url.includes('app://'); } -function updateMenu(isBudgetOpen) { +function updateMenu(budgetId) { + const isBudgetOpen = !!budgetId; const menu = getMenu(isDev, createWindow); const file = menu.items.filter(item => item.label === 'File')[0]; const fileItems = file.submenu.items; fileItems .filter(item => item.label === 'Load Backup...') - .map(item => (item.enabled = isBudgetOpen)); + .forEach(item => { + item.enabled = isBudgetOpen; + item.budgetId = budgetId; + }); const tools = menu.items.filter(item => item.label === 'Tools')[0]; tools.submenu.items.forEach(item => { @@ -362,8 +366,8 @@ ipcMain.on('apply-update', () => { updater.apply(); }); -ipcMain.on('update-menu', (event, isBudgetOpen) => { - updateMenu(isBudgetOpen); +ipcMain.on('update-menu', (event, budgetId) => { + updateMenu(budgetId); }); ipcMain.on('set-theme', theme => { diff --git a/packages/desktop-electron/menu.js b/packages/desktop-electron/menu.js index b6fa34657..fc2745118 100644 --- a/packages/desktop-electron/menu.js +++ b/packages/desktop-electron/menu.js @@ -12,7 +12,7 @@ function getMenu(isDev, createWindow) { if (focusedWindow) { if (focusedWindow.webContents.getTitle() === 'Actual') { focusedWindow.webContents.executeJavaScript( - "__actionsForMenu.replaceModal('load-backup')", + `__actionsForMenu.replaceModal('load-backup', { budgetId: '${item.budgetId}' })`, ); } } diff --git a/packages/desktop-electron/preload.js b/packages/desktop-electron/preload.js index 2625c58a8..f5f63f059 100644 --- a/packages/desktop-electron/preload.js +++ b/packages/desktop-electron/preload.js @@ -49,8 +49,8 @@ contextBridge.exposeInMainWorld('Actual', { ipcRenderer.send('apply-update'); }, - updateAppMenu: isBudgetOpen => { - ipcRenderer.send('update-menu', isBudgetOpen); + updateAppMenu: budgetId => { + ipcRenderer.send('update-menu', budgetId); }, getServerSocket: () => { diff --git a/upcoming-release-notes/2580.md b/upcoming-release-notes/2580.md new file mode 100644 index 000000000..325aa1f1a --- /dev/null +++ b/upcoming-release-notes/2580.md @@ -0,0 +1,6 @@ +--- +category: Bugfix +authors: [mikesglitch] +--- + +Fix "Load backup" functionality in Electron - no longer throwing fatal error -- GitLab