import { Injectable } from '@angular/core'; import { BehaviorSubject, Observable } from 'rxjs'; import { IDetailsControl } from '../models/details-control'; @Injectable({ providedIn: 'root', }) export class DialogService { private dialogStates: { [key: string]: BehaviorSubject } = {}; constructor() {} getDialogState(id: string): Observable { if (!this.dialogStates[id]) { this.dialogStates[id] = new BehaviorSubject({ isOpen: false, isEditing: false, }); } return this.dialogStates[id].asObservable(); } setDialogState(id: string, state: IDetailsControl): void { if (!this.dialogStates[id]) { this.dialogStates[id] = new BehaviorSubject(state); } else { this.dialogStates[id].next(state); } } openDialog(id: string): void { this.setDialogState(id, { isOpen: true, isEditing: false }); } closeDialog(id: string): void { this.setDialogState(id, { isOpen: false, isEditing: false }); } setEditingState(id: string, isEditing: boolean): void { const currentState = this.dialogStates[id]?.value; if (currentState) { this.setDialogState(id, { ...currentState, isEditing }); } } }