[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.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 {
|
||||||
|
@@ -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(() => {
|
||||||
|
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user