import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { map, take } from 'rxjs/operators'; import { ProtocolService } from '@ucap-webmessenger/protocol'; import { SVC_TYPE_BUDDY, SSVC_TYPE_BUDDY_ADD_REQ, SSVC_TYPE_BUDDY_DEL_REQ, SSVC_TYPE_BUDDY_UPD_REQ } from '../types/service'; import { AddRequest, encodeAdd, decodeAdd, AddResponse } from '../models/add'; import { DelRequest, encodeDel, decodeDel, DelResponse } from '../models/del'; import { UpdateRequest, decodeUpdate, encodeUpdate, UpdateResponse } from '../models/update'; @Injectable({ providedIn: 'root' }) export class BuddyProtocolService { constructor(private protocolService: ProtocolService) {} public add(req: AddRequest): Observable { return this.protocolService .call(SVC_TYPE_BUDDY, SSVC_TYPE_BUDDY_ADD_REQ, ...encodeAdd(req)) .pipe( take(1), map(res => decodeAdd(res)) ); } public del(req: DelRequest): Observable { return this.protocolService .call(SVC_TYPE_BUDDY, SSVC_TYPE_BUDDY_DEL_REQ, ...encodeDel(req)) .pipe( take(1), map(res => decodeDel(res)) ); } public update(req: UpdateRequest): Observable { return this.protocolService .call(SVC_TYPE_BUDDY, SSVC_TYPE_BUDDY_UPD_REQ, ...encodeUpdate(req)) .pipe( take(1), map(res => decodeUpdate(res)) ); } }