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  }