From 799ccc6197da44097cdd71d4dbb44dba1768fb79 Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 5 Jun 2020 18:36:10 +0100 Subject: [PATCH 1/2] Electron recall latest downloaded update for when the user manually checks for updates Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/electron-main.js | 11 ----------- src/updater.js | 24 ++++++++++++++++++++---- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/src/electron-main.js b/src/electron-main.js index 9965b70..923f594 100644 --- a/src/electron-main.js +++ b/src/electron-main.js @@ -254,17 +254,6 @@ ipcMain.on('app_onAction', function(ev, payload) { } }); -autoUpdater.on('update-downloaded', (ev, releaseNotes, releaseName, releaseDate, updateURL) => { - if (!mainWindow) return; - // forward to renderer - mainWindow.webContents.send('update-downloaded', { - releaseNotes, - releaseName, - releaseDate, - updateURL, - }); -}); - ipcMain.on('ipcCall', async function(ev, payload) { if (!mainWindow) return; diff --git a/src/updater.js b/src/updater.js index f5917f8..7946ca1 100644 --- a/src/updater.js +++ b/src/updater.js @@ -69,15 +69,31 @@ ipcMain.on('install_update', installUpdate); ipcMain.on('check_updates', pollForUpdates); function ipcChannelSendUpdateStatus(status) { - if (global.mainWindow) { - global.mainWindow.webContents.send('check_updates', status); - } + if (!global.mainWindow) return; + global.mainWindow.webContents.send('check_updates', status); } +// cache the latest update which has been downloaded as electron offers no api to read it +let latestUpdateDownloaded; autoUpdater.on('update-available', function() { ipcChannelSendUpdateStatus(true); }).on('update-not-available', function() { - ipcChannelSendUpdateStatus(false); + if (latestUpdateDownloaded) { + // the only time we will get `update-not-available` if `latestUpdateDownloaded` is already set + // is if the user used the Manual Update check and there is no update newer than the one we + // have downloaded, so show it to them as the latest again. + ipcChannelSendUpdateStatus(true); + mainWindow.webContents.send('update-downloaded', latestUpdateDownloaded); + } else { + ipcChannelSendUpdateStatus(false); + } }).on('error', function(error) { ipcChannelSendUpdateStatus(error.message); }); + +autoUpdater.on('update-downloaded', (ev, releaseNotes, releaseName, releaseDate, updateURL) => { + if (!global.mainWindow) return; + // forward to renderer + latestUpdateDownloaded = { releaseNotes, releaseName, releaseDate, updateURL }; + mainWindow.webContents.send('update-downloaded', latestUpdateDownloaded); +}); From 861c90c3d851e7ef0dee90d64de6f09af357b7ea Mon Sep 17 00:00:00 2001 From: Michael Telatynski <7t3chguy@gmail.com> Date: Fri, 5 Jun 2020 18:41:29 +0100 Subject: [PATCH 2/2] delint Signed-off-by: Michael Telatynski <7t3chguy@gmail.com> --- src/updater.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/updater.js b/src/updater.js index 7946ca1..edb23eb 100644 --- a/src/updater.js +++ b/src/updater.js @@ -83,7 +83,7 @@ autoUpdater.on('update-available', function() { // is if the user used the Manual Update check and there is no update newer than the one we // have downloaded, so show it to them as the latest again. ipcChannelSendUpdateStatus(true); - mainWindow.webContents.send('update-downloaded', latestUpdateDownloaded); + global.mainWindow.webContents.send('update-downloaded', latestUpdateDownloaded); } else { ipcChannelSendUpdateStatus(false); } @@ -95,5 +95,5 @@ autoUpdater.on('update-downloaded', (ev, releaseNotes, releaseName, releaseDate, if (!global.mainWindow) return; // forward to renderer latestUpdateDownloaded = { releaseNotes, releaseName, releaseDate, updateURL }; - mainWindow.webContents.send('update-downloaded', latestUpdateDownloaded); + global.mainWindow.webContents.send('update-downloaded', latestUpdateDownloaded); });