[MM-47754] Remove update from downloads when "Restart and Upgrade" is clicked (#2299)

* Remove update from downloads when "Restart and Upgrade" is clicked

* Fix failing test

* Mock downloadsManager in autoUpdater tests
This commit is contained in:
Tasos Boulis
2022-10-21 13:27:24 +03:00
committed by GitHub
parent aa28948800
commit 167f7d832a
4 changed files with 16 additions and 5 deletions

View File

@@ -31,9 +31,9 @@ export default class JsonFileManager<T> {
}); });
} }
setJson(json: T): void { async setJson(json: T): Promise<void> {
this.json = json; this.json = json;
this.writeToFile(); await this.writeToFile();
} }
setValue(key: keyof T, value: T[keyof T]): void { setValue(key: keyof T, value: T[keyof T]): void {

View File

@@ -52,6 +52,9 @@ jest.mock('main/i18nManager', () => ({
localizeMessage: jest.fn(), localizeMessage: jest.fn(),
})); }));
jest.mock('main/downloadsManager', () => ({
removeUpdateBeforeRestart: jest.fn(),
}));
describe('main/autoUpdater', () => { describe('main/autoUpdater', () => {
describe('constructor', () => { describe('constructor', () => {
afterEach(() => { afterEach(() => {

View File

@@ -8,6 +8,7 @@ import log from 'electron-log';
import {autoUpdater, CancellationToken, ProgressInfo, UpdateInfo} from 'electron-updater'; import {autoUpdater, CancellationToken, ProgressInfo, UpdateInfo} from 'electron-updater';
import downloadsManager from 'main/downloadsManager';
import {localizeMessage} from 'main/i18nManager'; import {localizeMessage} from 'main/i18nManager';
import {displayUpgrade, displayRestartToUpgrade} from 'main/notifications'; import {displayUpgrade, displayRestartToUpgrade} from 'main/notifications';
@@ -140,7 +141,8 @@ export class UpdateManager {
} }
} }
handleUpdate = (): void => { handleUpdate = async (): Promise<void> => {
await downloadsManager.removeUpdateBeforeRestart();
autoUpdater.quitAndInstall(); autoUpdater.quitAndInstall();
} }

View File

@@ -292,6 +292,12 @@ export class DownloadsManager extends JsonFileManager<DownloadedItems> {
return Boolean(this.downloads[APP_UPDATE_KEY]?.type === DownloadItemTypeEnum.UPDATE); return Boolean(this.downloads[APP_UPDATE_KEY]?.type === DownloadItemTypeEnum.UPDATE);
} }
removeUpdateBeforeRestart = async () => {
const downloads = this.downloads;
delete downloads[APP_UPDATE_KEY];
await this.saveAll(downloads);
}
private markFileAsDeleted = (item: DownloadedItem) => { private markFileAsDeleted = (item: DownloadedItem) => {
const fileId = this.getDownloadedFileId(item); const fileId = this.getDownloadedFileId(item);
const file = this.downloads[fileId]; const file = this.downloads[fileId];
@@ -306,11 +312,11 @@ export class DownloadsManager extends JsonFileManager<DownloadedItems> {
} }
} }
private saveAll = (downloads: DownloadedItems) => { private saveAll = async (downloads: DownloadedItems) => {
log.debug('DownloadsManager.saveAll'); log.debug('DownloadsManager.saveAll');
this.downloads = downloads; this.downloads = downloads;
this.setJson(downloads); await this.setJson(downloads);
ipcMain.emit(UPDATE_DOWNLOADS_DROPDOWN, true, this.downloads); ipcMain.emit(UPDATE_DOWNLOADS_DROPDOWN, true, this.downloads);
WindowManager?.sendToRenderer(UPDATE_DOWNLOADS_DROPDOWN, this.downloads); WindowManager?.sendToRenderer(UPDATE_DOWNLOADS_DROPDOWN, this.downloads);
} }