import { Injectable } from '@angular/core'; import { BehaviorSubject, Observable } from 'rxjs'; export interface Message { severity: 'success' | 'danger' | 'warning'; text: string; duration: number; } @Injectable({ providedIn: 'root', }) export class MessageService { private messagesSubject = new BehaviorSubject([]); messages$: Observable = this.messagesSubject.asObservable(); addMessage(message: Message): void { const currentMessages = this.messagesSubject.value; this.messagesSubject.next([...currentMessages, message]); if (message.duration > 0) { setTimeout(() => this.removeMessage(message), message.duration); } } removeMessage(messageToRemove: Message): void { const currentMessages = this.messagesSubject.value; this.messagesSubject.next(currentMessages.filter(msg => msg !== messageToRemove)); } }