diff options
Diffstat (limited to 'cds-ui/client/src/app/common/shared/components/notification/notification.service.ts')
-rw-r--r-- | cds-ui/client/src/app/common/shared/components/notification/notification.service.ts | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/cds-ui/client/src/app/common/shared/components/notification/notification.service.ts b/cds-ui/client/src/app/common/shared/components/notification/notification.service.ts new file mode 100644 index 000000000..83c0504ac --- /dev/null +++ b/cds-ui/client/src/app/common/shared/components/notification/notification.service.ts @@ -0,0 +1,77 @@ +/* +============LICENSE_START========================================== +=================================================================== +Copyright (C) 2019 IBM Intellectual Property. All rights reserved. +=================================================================== + +Unless otherwise specified, all software contained herein is licensed +under the Apache License, Version 2.0 (the License); +you may not use this software except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +============LICENSE_END============================================ +*/ + +import { Injectable } from '@angular/core'; +import { Router, NavigationStart } from '@angular/router'; +import { Observable, Subject } from 'rxjs'; +// import { Subject } from 'rxjs/Subject'; + +import { Notification, NotificationType} from './notification'; + +@Injectable({ + providedIn: 'root' +}) +export class NotificationService { + + private subject = new Subject<Notification>(); + private keepAfterRouteChange = false; + + constructor(private router: Router) { + router.events.subscribe(event => { + if (event instanceof NavigationStart) { + if (this.keepAfterRouteChange) { + this.keepAfterRouteChange = false; + } else { + this.clear(); + } + } + }); + } + + getAlert(alertId?: string): Observable<any> { + return this.subject.asObservable(); + } + + success(message: string) { + this.alert(new Notification({ message, type: NotificationType.Success })); + } + + error(message: string) { + this.alert(new Notification({ message, type: NotificationType.Error })); + } + + info(message: string) { + this.alert(new Notification({ message, type: NotificationType.Info })); + } + + warn(message: string) { + this.alert(new Notification({ message, type: NotificationType.Warning })); + } + + alert(alert: Notification) { + this.keepAfterRouteChange = alert.keepAfterRouteChange; + this.subject.next(alert); + } + + clear(alertId?: string) { + this.subject.next(new Notification({ alertId })); + } +} |