This commit is contained in:
richard-loafle 2020-02-07 17:14:48 +09:00
commit 2ce0f3af3b
4 changed files with 130 additions and 6 deletions

View File

@ -469,6 +469,10 @@ export class OrganizationComponent
/** 전체 체크여부 */
getCheckedAllUser() {
if (!this.loginRes) {
return false;
}
const compareList: UserInfoSS[] = this.isShowSearch
? this.searchUserInfos
: this.selectedDepartmentUserInfoList;

View File

@ -116,6 +116,19 @@ import { LogoutInfo, KEY_LOGOUT_INFO } from '@app/types';
import { TranslateService } from '@ngx-translate/core';
import { deleteMessageSuccess } from '@app/store/messenger/message';
import { ServerErrorCode } from '@ucap-webmessenger/protocol';
import {
OptionProtocolService,
SSVC_TYPE_OPTION_REG_UPD_RES,
RegUpdateResponse,
RegUpdateNotification
} from '@ucap-webmessenger/protocol-option';
import {
GeneralSetting,
Settings,
NotificationSetting,
ChatSetting
} from '@ucap-webmessenger/ui-settings';
import clone from 'clone';
@Injectable()
export class AppNotificationService {
@ -128,6 +141,7 @@ export class AppNotificationService {
private buddyProtocolService: BuddyProtocolService,
private statusProtocolService: StatusProtocolService,
private translateService: TranslateService,
private optionProtocolService: OptionProtocolService,
private umgProtocolService: UmgProtocolService,
private localStorageService: LocalStorageService,
private sessionStorageService: SessionStorageService,
@ -643,6 +657,56 @@ export class AppNotificationService {
})
)
.subscribe();
this.optionProtocolService.notification$
.pipe(
tap(notiOrRes => {
switch (notiOrRes.SSVC_TYPE) {
case SSVC_TYPE_OPTION_REG_UPD_RES:
{
const noti = notiOrRes as RegUpdateNotification;
this.logger.debug(
'Notification::optionProtocolService::RegUpdateNotification',
noti
);
const appUserInfo: AppUserInfo = this.localStorageService.encGet<
AppUserInfo
>(KEY_APP_USER_INFO, environment.customConfig.appKey);
const modifiedSettings: Settings = clone(appUserInfo.settings);
modifiedSettings.notification.method = noti.notificationMethod;
modifiedSettings.notification.method = noti.notificationMethod0;
modifiedSettings.notification.receiveForMobile =
noti.mobileNotification;
modifiedSettings.notification.use = noti.receiveNotification;
modifiedSettings.notification.alertExposureTime =
noti.notificationExposureTime;
modifiedSettings.chat.fontFamily = noti.fontFamily;
modifiedSettings.chat.fontSize = noti.fontSize;
modifiedSettings.presence.absenceTime = noti.absenceTime;
modifiedSettings.general.timezone = noti.timeZone;
modifiedSettings.general.locale = noti.menuLanguage;
modifiedSettings.general.hrInfoLocale =
noti.hrInformationLanguage;
appUserInfo.settings = modifiedSettings;
this.localStorageService.encSet<AppUserInfo>(
KEY_APP_USER_INFO,
appUserInfo,
environment.customConfig.appKey
);
}
break;
default:
break;
}
})
)
.subscribe();
this.umgProtocolService.notification$
.pipe(
tap(notiOrRes => {

View File

@ -8,7 +8,8 @@ import {
ProtocolDecoder,
ProtocolMessage,
PacketBodyValue,
decodeProtocolMessage
decodeProtocolMessage,
ProtocolNotification
} from '@ucap-webmessenger/protocol';
export interface RegUpdateRequest extends ProtocolRequest {
@ -70,6 +71,10 @@ export interface RegUpdateResponse extends ProtocolResponse {
translationKey?: string;
}
export interface RegUpdateNotification
extends RegUpdateResponse,
ProtocolNotification {}
export const encodeRegUpdate: ProtocolEncoder<RegUpdateRequest> = (
req: RegUpdateRequest
) => {
@ -151,3 +156,24 @@ export const decodeRegUpdate: ProtocolDecoder<RegUpdateResponse> = (
translationKey: message.bodyList[13]
} as RegUpdateResponse);
};
export const decodeRegUpdateNotification: ProtocolDecoder<RegUpdateNotification> = (
message: ProtocolMessage
) => {
return decodeProtocolMessage(message, {
notificationMethod: message.bodyList[0] as NotificationMethod,
mobileNotification: message.bodyList[1] === 1 ? true : false,
fontFamily: message.bodyList[2],
fontSize: message.bodyList[3],
receiveNotification: message.bodyList[4] === 1 ? true : false,
notificationMethod0: message.bodyList[5],
notificationExposureTime: message.bodyList[6],
timeZone: message.bodyList[7],
timeZoneValue: message.bodyList[8],
absenceTime: message.bodyList[9],
menuLanguage: message.bodyList[10],
hrInformationLanguage: message.bodyList[11],
deviceType: message.bodyList[12],
translationKey: message.bodyList[13]
} as RegUpdateResponse);
};

View File

@ -1,7 +1,7 @@
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { take, map } from 'rxjs/operators';
import { Observable, Subject } from 'rxjs';
import { take, map, share, filter, tap } from 'rxjs/operators';
import { ProtocolService } from '@ucap-webmessenger/protocol';
import {
@ -11,7 +11,8 @@ import {
SSVC_TYPE_OPTION_REG_VIEW_REQ,
SSVC_TYPE_OPTION_REG_UPD_REQ,
SSVC_TYPE_OPTION_CALL_VIEW_REQ,
SSVC_TYPE_OPTION_CALL_UPD_REQ
SSVC_TYPE_OPTION_CALL_UPD_REQ,
SSVC_TYPE_OPTION_REG_UPD_RES
} from '../types/service';
import {
encodeView,
@ -35,7 +36,9 @@ import {
RegUpdateRequest,
RegUpdateResponse,
encodeRegUpdate,
decodeRegUpdate
decodeRegUpdate,
decodeRegUpdateNotification,
RegUpdateNotification
} from '../protocols/reg-update';
import {
CallViewRequest,
@ -50,11 +53,38 @@ import {
decodeCallUpdate
} from '../protocols/call-update';
type Notifications = RegUpdateNotification;
@Injectable({
providedIn: 'root'
})
export class OptionProtocolService {
constructor(private protocolService: ProtocolService) {}
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_OPTION),
tap(message => {
switch (message.subServiceType) {
case SSVC_TYPE_OPTION_REG_UPD_RES:
{
this.notificationSubject.next(
decodeRegUpdateNotification(message)
);
}
break;
default:
break;
}
})
)
.subscribe();
}
public view(req: ViewRequest): Observable<ViewResponse> {
return this.protocolService