From 6bf606b7385a96f44b78ed522e9d5195734e2d33 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Tue, 6 Aug 2024 16:09:01 +0200 Subject: [PATCH] =?UTF-8?q?refactor:=20UpdateService=20auf=20schl=C3=BCsse?= =?UTF-8?q?lbasierte=20Aktionen=20umstellen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Arrays durch schlüsselbasierte Objekte für asynchrone und synchrone Aktionen ersetzt. - Methoden aktualisiert, um Schlüssel zur Verwaltung von Aktionen zu verwenden und Änderungs-Listener auszulösen. - `executeAll` angepasst, um Aktionen aus Objekten zu verarbeiten. --- .../src/app/services/update.service.ts | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/services/update.service.ts b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/services/update.service.ts index b5ed78f..95e878b 100644 --- a/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/services/update.service.ts +++ b/DigitalData.UserManager.API/ClientApp/user_manager_ui/src/app/services/update.service.ts @@ -1,5 +1,4 @@ import { Injectable } from '@angular/core'; -import { Action } from 'rxjs/internal/scheduler/Action'; @Injectable({ providedIn: 'root' @@ -8,15 +7,15 @@ export class UpdateService { constructor() { } - private async_actions: Array<() => Promise> = []; - private actions: Array<() => void> = []; + private async_actions: { [key: string]: () => Promise } = {}; + private actions: { [key: string]: () => void } = {}; get asyncCount(): number { - return this.async_actions.length; + return Object.keys(this.async_actions).length; } get syncCount(): number { - return this.actions.length; + return Object.keys(this.actions).length; } get totalCount(): number { @@ -28,25 +27,32 @@ export class UpdateService { } //add - remove - addAsync(action: () => Promise): void { - this.async_actions.push(action); - this.executeAllChangeListeners(); + setAsync(key: string, action: () => Promise): void { + const keyWasPresent = this.async_actions.hasOwnProperty(key); + this.async_actions[key] = action; + + if (!keyWasPresent) + this.executeAllChangeListeners(); } - add(action: () => void): void { - this.actions.push(action); - this.executeAllChangeListeners(); + set(key: string, action: () => void): void { + const keyWasPresent = this.actions.hasOwnProperty(key); + this.actions[key] = action; + + if (!keyWasPresent) + this.executeAllChangeListeners(); } removeAll(): void { - this.async_actions = []; + this.async_actions = {}; + this.actions = {}; this.executeAllChangeListeners(); } //execution async executeAll(): Promise { - await Promise.all(this.async_actions.map(action => action())); - this.actions.forEach(action => action()); + await Promise.all(Object.values(this.async_actions).map(action => action())); + Object.values(this.actions).forEach(action => action()); this.removeAll(); }