From 721a897614c24420f1983ecaad5cddcd4481d6c7 Mon Sep 17 00:00:00 2001 From: MathieuG-P <40181755+Zagrios@users.noreply.github.com> Date: Tue, 17 May 2022 23:54:44 +0200 Subject: [PATCH] service qui se chargera de la gestion des modales --- src/renderer/services/modale.service.ts | 57 +++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/renderer/services/modale.service.ts diff --git a/src/renderer/services/modale.service.ts b/src/renderer/services/modale.service.ts new file mode 100644 index 00000000..6f96c18d --- /dev/null +++ b/src/renderer/services/modale.service.ts @@ -0,0 +1,57 @@ +import { BehaviorSubject } from "rxjs"; + +export class ModalService{ + + private static instance: ModalService; + + private _modalType$: BehaviorSubject = new BehaviorSubject(null); + private resolver: any; + private constructor(){} + + public static getInsance(){ + if(!this.instance){ this.instance = new ModalService(); } + return this.instance; + } + + private close(){ + this.modalType$.next(null); + } + + public get modalType$(): BehaviorSubject{ + return this._modalType$; + } + + public getResolver(): any{ + return this.resolver; + } + + public resolve(data: ModalResponse): void{ + this.resolver(data); + } + + public openModal(modalType: ModalType): Promise{ + if(this.resolver){ this.resolver(ModalExitCode.NO_CHOICE); } + let resolver, rejecter; + const promise = new Promise((resolve, reject) => { resolver = resolve; rejecter = reject; }); + this.modalType$.next(modalType); + promise.then(() => this.close()); + this.resolver = resolver; + return promise; + } +} + +export enum ModalType { + STEAM_LOGIN = "STEAM_LOGIN", +} + +export enum ModalExitCode { + NO_CHOICE = -1, + COMPLETED = 0, + CLOSED = 1, + CANCELED = 2, +} + +export interface ModalResponse { + exitCode: ModalExitCode, + data?: any +} \ No newline at end of file