From 5559c166d03605f01d9759e6d4e8602389db60e6 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Mon, 22 Feb 2021 16:53:34 -0500 Subject: [PATCH] Fix auto update on quit with newer version (#2128) - Fix auto update on quit with newer version - If the user specifies that Lens should auto update on quit to a specific version, and before they quit the auto-updater finds a newer version. Then disregard the previous request to update - reset broadcast-ed version if failed to broadcast Signed-off-by: Sebastian Malton --- src/main/app-updater.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/main/app-updater.ts b/src/main/app-updater.ts index 5d9509c6e4..ed2bf4250b 100644 --- a/src/main/app-updater.ts +++ b/src/main/app-updater.ts @@ -5,6 +5,8 @@ import { delay } from "../common/utils"; import { areArgsUpdateAvailableToBackchannel, AutoUpdateLogPrefix, broadcastMessage, onceCorrect, UpdateAvailableChannel, UpdateAvailableToBackchannel } from "../common/ipc"; import { ipcMain } from "electron"; +let installVersion: null | string = null; + function handleAutoUpdateBackChannel(event: Electron.IpcMainEvent, ...[arg]: UpdateAvailableToBackchannel) { if (arg.doUpdate) { if (arg.now) { @@ -37,6 +39,22 @@ export function startUpdateChecking(interval = 1000 * 60 * 60 * 24): void { autoUpdater .on("update-available", (args: UpdateInfo) => { + if (autoUpdater.autoInstallOnAppQuit) { + // a previous auto-update loop was completed with YES+LATER, check if same version + if (installVersion === args.version) { + // same version, don't broadcast + return; + } + } + + /** + * This should be always set to false here because it is the reasonable + * default. Namely, if a don't auto update to a version that the user + * didn't ask for. + */ + autoUpdater.autoInstallOnAppQuit = false; + installVersion = args.version; + try { const backchannel = `auto-update:${args.version}`; @@ -53,6 +71,7 @@ export function startUpdateChecking(interval = 1000 * 60 * 60 * 24): void { broadcastMessage(UpdateAvailableChannel, backchannel, args); } catch (error) { logger.error(`${AutoUpdateLogPrefix}: broadcasting failed`, { error }); + installVersion = undefined; } });