diff --git a/src/api/system.ts b/src/api/system.ts index 783c5a18a..46542eccf 100644 --- a/src/api/system.ts +++ b/src/api/system.ts @@ -10,11 +10,16 @@ export const reloadWindow = () => { ipcRenderer.send('reload-window'); }; -export const registerUpdateEventListener = (showUpdateDialog: () => void) => { +export const registerUpdateEventListener = ( + showUpdateDialog: (updateInfo: { uploadDownloaded: boolean }) => void +) => { ipcRenderer.removeAllListeners('show-update-dialog'); - ipcRenderer.on('show-update-dialog', () => { - showUpdateDialog(); - }); + ipcRenderer.on( + 'show-update-dialog', + (_, updateInfo: { uploadDownloaded: boolean }) => { + showUpdateDialog(updateInfo); + } + ); }; export const updateAndRestart = () => { diff --git a/src/services/appUpdater.ts b/src/services/appUpdater.ts index f1b73e613..59f6c31b1 100644 --- a/src/services/appUpdater.ts +++ b/src/services/appUpdater.ts @@ -3,7 +3,6 @@ import { autoUpdater } from 'electron-updater'; import log from 'electron-log'; import { setIsAppQuitting, setIsUpdateAvailable } from '../main'; import { buildContextMenu } from '../utils/menu'; -import { showUpdateDialog } from '../utils/appUpdate'; const LATEST_SUPPORTED_AUTO_UPDATE_VERSION = '1.6.12'; @@ -14,10 +13,6 @@ class AppUpdater { autoUpdater.autoDownload = false; } - getUpdateDownloaded() { - return this.updateDownloaded; - } - async checkForUpdate(tray: Tray, mainWindow: BrowserWindow) { const updateCheckResult = await autoUpdater.checkForUpdatesAndNotify(); log.info(updateCheckResult); @@ -26,12 +21,12 @@ class AppUpdater { LATEST_SUPPORTED_AUTO_UPDATE_VERSION ) { this.updateDownloaded = false; - showUpdateDialog(mainWindow); + this.showUpdateDialog(mainWindow); } else { autoUpdater.downloadUpdate(); autoUpdater.on('update-downloaded', () => { this.updateDownloaded = true; - showUpdateDialog(mainWindow); + this.showUpdateDialog(mainWindow); setIsUpdateAvailable(true); tray.setContextMenu(buildContextMenu(mainWindow)); }); @@ -42,6 +37,12 @@ class AppUpdater { setIsAppQuitting(true); autoUpdater.quitAndInstall(); }; + + showUpdateDialog = (mainWindow: BrowserWindow) => { + mainWindow.webContents.send('show-update-dialog', { + updateDownloaded: this.updateDownloaded, + }); + }; } export default new AppUpdater(); diff --git a/src/utils/menu.ts b/src/utils/menu.ts index 3c7fd12fb..195bfbbfd 100644 --- a/src/utils/menu.ts +++ b/src/utils/menu.ts @@ -12,7 +12,7 @@ import { import { isUpdateAvailable, setIsAppQuitting } from '../main'; import autoLauncher from '../services/autoLauncher'; import { isPlatformMac } from './main'; -import { showUpdateDialog } from '../services/appUpdater'; +import appUpdater from '../services/appUpdater'; export function buildContextMenu( mainWindow: BrowserWindow, @@ -29,7 +29,7 @@ export function buildContextMenu( ? [ { label: 'Update available', - click: () => showUpdateDialog(mainWindow), + click: () => appUpdater.showUpdateDialog(mainWindow), }, ] : []),