// 1. Shared Service (modal.service.ts) import { Injectable } from '@angular/core'; import { BehaviorSubject, Observable } from 'rxjs'; import { BusinessListingCriteria, CommercialPropertyListingCriteria, UserListingCriteria } from '../../../../../bizmatch-server/src/models/main.model'; @Injectable({ providedIn: 'root', }) export class ModalService { private modalVisibleSubject = new BehaviorSubject(false); private messageSubject = new BehaviorSubject(null); private resolvePromise!: (value: boolean) => void; modalVisible$: Observable = this.modalVisibleSubject.asObservable(); message$: Observable = this.messageSubject.asObservable(); showModal(message: BusinessListingCriteria | CommercialPropertyListingCriteria | UserListingCriteria): Promise { this.messageSubject.next(message); this.modalVisibleSubject.next(true); return new Promise(resolve => { this.resolvePromise = resolve; }); } accept(): void { this.modalVisibleSubject.next(false); this.resolvePromise(true); } reject(): void { this.modalVisibleSubject.next(false); this.resolvePromise(false); } }