2019-09-26 15:31:19 +09:00

83 lines
1.9 KiB
TypeScript

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { map, take } from 'rxjs/operators';
import { ProtocolService } from '@ucap-webmessenger/protocol';
import {
SVC_TYPE_INFO,
SSVC_TYPE_INFO_USER_REQ,
SSVC_TYPE_INFO_STATE_REQ,
SSVC_TYPE_INFO_USER_OPTION_REQ,
SSVC_TYPE_INFO_USER_OPTION_UPD_REQ
} from '../types/service';
import {
UserRequest,
encodeUser,
UserResponse,
decodeUser
} from '../models/user';
import {
StatusRequest,
StatusResponse,
encodeStatus,
decodeStatus
} from '../models/status';
import {
UserOptionResponse,
decodeUserOption,
UserOptionUpdateRequest,
encodeUserOptionUpdate,
UserOptionUpdateResponse,
decodeUserOptionUpdate
} from '../models/user-option';
@Injectable({
providedIn: 'root'
})
export class InfoProtocolService {
constructor(private protocolService: ProtocolService) {}
public user(req: UserRequest): Observable<UserResponse> {
return this.protocolService
.call(SVC_TYPE_INFO, SSVC_TYPE_INFO_USER_REQ, ...encodeUser(req))
.pipe(
take(1),
map(res => decodeUser(res))
);
}
public status(req: StatusRequest): Observable<StatusResponse> {
return this.protocolService
.call(SVC_TYPE_INFO, SSVC_TYPE_INFO_STATE_REQ, ...encodeStatus(req))
.pipe(
take(1),
map(res => decodeStatus(res))
);
}
public userOption(): Observable<UserOptionResponse> {
return this.protocolService
.call(SVC_TYPE_INFO, SSVC_TYPE_INFO_USER_OPTION_REQ)
.pipe(
take(1),
map(res => decodeUserOption(res))
);
}
public userOptionUpdate(
req: UserOptionUpdateRequest
): Observable<UserOptionUpdateResponse> {
return this.protocolService
.call(
SVC_TYPE_INFO,
SSVC_TYPE_INFO_USER_OPTION_UPD_REQ,
...encodeUserOptionUpdate(req)
)
.pipe(
take(1),
map(res => decodeUserOptionUpdate(res))
);
}
}