From 23d4de7765bdf52f694c1608e749a9bd1f621d04 Mon Sep 17 00:00:00 2001 From: MathieuG-P <40181755+Zagrios@users.noreply.github.com> Date: Wed, 29 Jun 2022 10:27:37 +0200 Subject: [PATCH] add system progress bar --- src/main/ipcs/os-controls-ipcs.ts | 5 +++++ src/renderer/services/progress-bar.service.ts | 13 ++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/ipcs/os-controls-ipcs.ts b/src/main/ipcs/os-controls-ipcs.ts index 3ec28d76..3edce3a5 100644 --- a/src/main/ipcs/os-controls-ipcs.ts +++ b/src/main/ipcs/os-controls-ipcs.ts @@ -2,6 +2,7 @@ import { ipcMain, shell, dialog } from 'electron'; import { UtilsService } from '../services/utils.service'; import { IpcRequest } from '../../shared/models/ipc-models.model'; import { getMainWindow } from '../main'; +import { request } from 'http'; ipcMain.on('window.close', async () => { getMainWindow()?.close(); @@ -28,3 +29,7 @@ ipcMain.on('choose-folder', async (event, request: IpcRequest) => { UtilsService.getInstance().newIpcSenc(request.responceChannel, {success: true, data: res}); }) }) + +ipcMain.on("window.progression", async (event, request: IpcRequest) => { + getMainWindow().setProgressBar(request.args / 100); +}) diff --git a/src/renderer/services/progress-bar.service.ts b/src/renderer/services/progress-bar.service.ts index ff3af549..078b0727 100644 --- a/src/renderer/services/progress-bar.service.ts +++ b/src/renderer/services/progress-bar.service.ts @@ -1,9 +1,12 @@ import { BehaviorSubject, distinctUntilChanged, map, Observable, Subscription, timer } from "rxjs"; +import { IpcService } from "./ipc.service"; export class ProgressBarService{ private static instance: ProgressBarService; + private readonly ipcService: IpcService; + private readonly _progression$: BehaviorSubject; private readonly _visible$: BehaviorSubject; @@ -15,8 +18,16 @@ export class ProgressBarService{ } private constructor(){ + this.ipcService = IpcService.getInstance(); + this._progression$ = new BehaviorSubject(0); this._visible$ = new BehaviorSubject(false); + + this.progression$.subscribe(progression => this.setSystemProgression(progression)); + } + + private setSystemProgression(progression: number){ + this.ipcService.sendLazy("window.progression", {args: progression}); } public subscribreTo(obs: Observable){ @@ -40,6 +51,7 @@ export class ProgressBarService{ public showFake(speed: number): void{ const obs = timer(1000, 100).pipe(map(val => { + if(this.progression$.value >= 100){ return 100; } const currentProgress = speed * (val + 1); return Math.round(Math.atan(currentProgress) / (Math.PI / 2) * 100 * 1000) / 1000; })); @@ -47,7 +59,6 @@ export class ProgressBarService{ } public complete(): void{ - this.unsubscribe(); this.progression$.next(100); }