github.com/in4it/ecs-deploy@v0.0.42-0.20240508120354-ed77ff16df25/webapp/src/app/services/alert.service.ts (about) 1 import { Injectable } from '@angular/core'; 2 import { Router, NavigationStart } from '@angular/router'; 3 import { Observable , Subject } from 'rxjs'; 4 5 @Injectable() 6 export class AlertService { 7 private subject = new Subject<any>(); 8 private keepAfterNavigationChange = false; 9 10 constructor(private router: Router) { 11 // clear alert message on route change 12 router.events.subscribe(event => { 13 if (event instanceof NavigationStart) { 14 if (this.keepAfterNavigationChange) { 15 // only keep for a single location change 16 this.keepAfterNavigationChange = false; 17 } else { 18 // clear alert 19 this.subject.next(); 20 } 21 } 22 }); 23 } 24 25 success(message: string, removeAfterDelay = 0, keepAfterNavigationChange = false) { 26 this.keepAfterNavigationChange = keepAfterNavigationChange; 27 this.subject.next({ type: 'success', text: message }); 28 if(removeAfterDelay > 0 ) { 29 setTimeout(()=>{ this.subject.next() }, removeAfterDelay * 1000) 30 } 31 } 32 33 error(message: string, removeAfterDelay = 0, keepAfterNavigationChange = false) { 34 this.keepAfterNavigationChange = keepAfterNavigationChange; 35 this.subject.next({ type: 'error', text: message }); 36 if(removeAfterDelay > 0 ) { 37 setTimeout(()=>{ this.subject.next() }, removeAfterDelay * 1000) 38 } 39 } 40 41 getMessage(): Observable<any> { 42 return this.subject.asObservable(); 43 } 44 }