From 61b10c1bd97c020e61c4070cae1efdbaeaf8fc07 Mon Sep 17 00:00:00 2001 From: MathieuG-P <40181755+Zagrios@users.noreply.github.com> Date: Sun, 19 Jun 2022 21:51:51 +0200 Subject: [PATCH] add posibility to uninstall a bs version --- src/main/ipcs/bs-uninstall-ipcs.ts | 18 +++++++++++ src/main/ipcs/custom-ipcs.ts | 1 + .../services/bs-uninstaller.service.ts | 31 +++++++++++++++++++ src/renderer/services/modale.service.ts | 10 +++++- 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 src/main/ipcs/bs-uninstall-ipcs.ts create mode 100644 src/renderer/services/bs-uninstaller.service.ts diff --git a/src/main/ipcs/bs-uninstall-ipcs.ts b/src/main/ipcs/bs-uninstall-ipcs.ts new file mode 100644 index 00000000..96e3662d --- /dev/null +++ b/src/main/ipcs/bs-uninstall-ipcs.ts @@ -0,0 +1,18 @@ +import { ipcMain } from "electron"; +import { BSUninstallerService } from "../services/bs-uninstaller.service"; +import { BSVersion } from "main/services/bs-version-manager.service"; +import { UtilsService } from "../services/utils.service"; + +ipcMain.on('bs.uninstall', async (event, args: BSVersion) => { + + const bsUninstallerService = BSUninstallerService.getInstance(); + const utilsService = UtilsService.getInstance(); + + bsUninstallerService.uninstall(args) + .then(() => { + utilsService.ipcSend("bs.uninstall.success"); + }) + .catch((e) => { + utilsService.ipcSend("bs.uninstall.error", e) + }) +}); \ No newline at end of file diff --git a/src/main/ipcs/custom-ipcs.ts b/src/main/ipcs/custom-ipcs.ts index 97c67ab0..0b0d625b 100644 --- a/src/main/ipcs/custom-ipcs.ts +++ b/src/main/ipcs/custom-ipcs.ts @@ -2,3 +2,4 @@ import './bs-download-ipcs'; import './window-controls-ipcs'; import './bs-launcher-ipcs'; import './bs-version-ipcs'; +import './bs-uninstall-ipcs'; diff --git a/src/renderer/services/bs-uninstaller.service.ts b/src/renderer/services/bs-uninstaller.service.ts new file mode 100644 index 00000000..0a83299a --- /dev/null +++ b/src/renderer/services/bs-uninstaller.service.ts @@ -0,0 +1,31 @@ +import { BSVersion } from "main/services/bs-version-manager.service"; + +export class BSUninstallerService{ + + private static instance: BSUninstallerService; + + public static getInstance(): BSUninstallerService{ + if(!BSUninstallerService.instance){ BSUninstallerService.instance = new BSUninstallerService(); } + return BSUninstallerService.instance; + } + + private constructor(){}; + + public async uninstall(version: BSVersion){ + + const promise = new Promise((reslove, reject) => { + window.electron.ipcRenderer.once("bs.uninstall.error", (e) => { + reject(e); + }) + + window.electron.ipcRenderer.once("bs.uninstall.success", () => { + reslove(); + }) + }); + + window.electron.ipcRenderer.sendMessage("bs.uninstall", version); + + return promise; + } + +} \ No newline at end of file diff --git a/src/renderer/services/modale.service.ts b/src/renderer/services/modale.service.ts index 705da4be..bfea29d4 100644 --- a/src/renderer/services/modale.service.ts +++ b/src/renderer/services/modale.service.ts @@ -5,6 +5,7 @@ export class ModalService{ private static instance: ModalService; private _modalType$: BehaviorSubject = new BehaviorSubject(null); + private modalData: any = null; private resolver: any; private constructor(){} @@ -22,6 +23,10 @@ export class ModalService{ return this._modalType$; } + public getModalData(): Type{ + return this.modalData; + } + public getResolver(): any{ return this.resolver; } @@ -30,12 +35,14 @@ export class ModalService{ this.resolver(data); } - public async openModal(modalType: ModalType): Promise{ + public async openModal(modalType: ModalType, data?: any): Promise{ this.close(); await timeout(100); //Must wait resolve const promise = new Promise((resolve) => { this.resolver = resolve; }); promise.then(() => this.close()); this.modalType$.next(modalType); + if(data){ this.modalData = data; } + else{ this.modalData = null; } return promise; } @@ -44,6 +51,7 @@ export class ModalService{ export enum ModalType { STEAM_LOGIN = "STEAM_LOGIN", GUARD_CODE = "GUARD_CODE", + UNINSTALL = "UNINSTALL", } export enum ModalExitCode {