From 9f48157a49afde7199bc59262254c460aea29017 Mon Sep 17 00:00:00 2001 From: Adnan Lahrech Date: Sat, 15 Apr 2023 19:18:19 +0100 Subject: [PATCH 1/2] feat: cancel download --- electron/main/update.ts | 10 +++++++++- src/components/update/index.tsx | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/electron/main/update.ts b/electron/main/update.ts index db946a4..613fe8a 100644 --- a/electron/main/update.ts +++ b/electron/main/update.ts @@ -2,9 +2,12 @@ import { app, ipcMain } from 'electron' import { type ProgressInfo, type UpdateDownloadedEvent, + CancellationToken, autoUpdater } from 'electron-updater' +const cancellationToken = new CancellationToken() + export function update(win: Electron.BrowserWindow) { // When set to false, the update download will be triggered through the API @@ -56,6 +59,11 @@ export function update(win: Electron.BrowserWindow) { ) }) + // Cancel downloading + ipcMain.handle('cancel-download', () => { + cancellationToken.cancel() + }) + // Install now ipcMain.handle('quit-and-install', () => { autoUpdater.quitAndInstall(false, true) @@ -69,5 +77,5 @@ function startDownload( autoUpdater.on('download-progress', info => callback(null, info)) autoUpdater.on('error', error => callback(error, null)) autoUpdater.on('update-downloaded', complete) - autoUpdater.downloadUpdate() + autoUpdater.downloadUpdate(cancellationToken) } diff --git a/src/components/update/index.tsx b/src/components/update/index.tsx index 742784b..09e21ee 100644 --- a/src/components/update/index.tsx +++ b/src/components/update/index.tsx @@ -18,7 +18,7 @@ const Update = () => { onCancel?: () => void onOk?: () => void }>({ - onCancel: () => setModalOpen(false), + onCancel: () => ipcRenderer.invoke('cancel-download').then(() => setModalOpen(false)), onOk: () => ipcRenderer.invoke('start-download'), }) From 5776b61af4cdc46566a8b1dcf31f2cf0d6d239c4 Mon Sep 17 00:00:00 2001 From: Adnan Lahrech Date: Wed, 19 Apr 2023 05:18:08 +0100 Subject: [PATCH 2/2] Fix: Cannot download differentially, fallback to full download: Error: cancelled --- electron/main/update.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/electron/main/update.ts b/electron/main/update.ts index 613fe8a..e372cfd 100644 --- a/electron/main/update.ts +++ b/electron/main/update.ts @@ -6,7 +6,7 @@ import { autoUpdater } from 'electron-updater' -const cancellationToken = new CancellationToken() +let cancellationToken = new CancellationToken() export function update(win: Electron.BrowserWindow) { @@ -62,6 +62,7 @@ export function update(win: Electron.BrowserWindow) { // Cancel downloading ipcMain.handle('cancel-download', () => { cancellationToken.cancel() + cancellationToken = new CancellationToken(); }) // Install now