[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:
@@ -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 {
|
||||
|
@@ -52,6 +52,9 @@ jest.mock('main/i18nManager', () => ({
|
||||
localizeMessage: jest.fn(),
|
||||
}));
|
||||
|
||||
jest.mock('main/downloadsManager', () => ({
|
||||
removeUpdateBeforeRestart: jest.fn(),
|
||||
}));
|
||||
describe('main/autoUpdater', () => {
|
||||
describe('constructor', () => {
|
||||
afterEach(() => {
|
||||
|
@@ -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();
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
}
|
||||
|
Reference in New Issue
Block a user