aboutsummaryrefslogtreecommitdiffstats
path: root/src/angular/notifications/services/notifications.service.ts
blob: 8c77e205efbe2e2a457c4d268a5f88d25caaafd4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import { Injectable } from '@angular/core';
import { NotificationSettings } from '../utilities/notification.config'
import { Subject } from 'rxjs/Subject';
import { Subscription } from 'rxjs/Subscription';

@Injectable()
export class NotificationsService  {

    notifs: NotificationSettings[] = [];

    notifQueue: Subject<any> = new Subject<any>();

    constructor() {}

    public push(notif: NotificationSettings): void {

        if ( this.notifQueue.observers.length > 0 ) {
            this.notifQueue.next(notif);
        } else {
            this.notifs.push(notif);
        }
    }

    public getNotifications(): NotificationSettings[] {
        return this.notifs;
    }

    public subscribe(observer): Subscription {
        const s: Subscription = this.notifQueue.subscribe(observer);
        this.notifs.forEach(notif => this.notifQueue.next(notif));
        this.notifs = [];
        return s;
    }

}