next-ucap-messenger/projects/ucap-webmessenger-protocol-umg/src/lib/services/umg-protocol.service.ts
2019-12-17 16:39:02 +09:00

45 lines
1.2 KiB
TypeScript

import { Injectable } from '@angular/core';
import { Subject, Observable } from 'rxjs';
import {
UmgNotiNotification,
decodeUmgNotiNotification
} from '../protocols/noti';
import { ProtocolService } from '@ucap-webmessenger/protocol';
import { share, filter, tap } from 'rxjs/operators';
import { SVC_TYPE_UMG, SSVC_TYPE_UMG_NOTI } from '../types/service';
type Notifications = UmgNotiNotification;
@Injectable({
providedIn: 'root'
})
export class UmgProtocolService {
private notificationSubject: Subject<Notifications>;
public notification$: Observable<Notifications>;
constructor(private protocolService: ProtocolService) {
this.notificationSubject = new Subject();
this.notification$ = this.notificationSubject.asObservable().pipe(share());
this.protocolService.serverMessage
.pipe(
filter(message => message.serviceType === SVC_TYPE_UMG),
tap(message => {
switch (message.subServiceType) {
case SSVC_TYPE_UMG_NOTI:
{
this.notificationSubject.next(
decodeUmgNotiNotification(message)
);
}
break;
default:
break;
}
})
)
.subscribe();
}
}