[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.writeToFile();
await this.writeToFile();
}
setValue(key: keyof T, value: T[keyof T]): void {

View File

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

View File

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

View File

@@ -292,6 +292,12 @@ export class DownloadsManager extends JsonFileManager<DownloadedItems> {
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) => {
const fileId = this.getDownloadedFileId(item);
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');
this.downloads = downloads;
this.setJson(downloads);
await this.setJson(downloads);
ipcMain.emit(UPDATE_DOWNLOADS_DROPDOWN, true, this.downloads);
WindowManager?.sendToRenderer(UPDATE_DOWNLOADS_DROPDOWN, this.downloads);
}