대화방멸 알림 설정에 따른 노티 출력 여부, 현재 방일 경우에 대한 노티 출력여부 처리.

This commit is contained in:
leejinho 2019-12-26 13:22:32 +09:00
parent 1eda1df54f
commit 97e65426f3

View File

@ -41,7 +41,8 @@ import {
SSVC_TYPE_ROOM_EXIT_FORCING_RES, SSVC_TYPE_ROOM_EXIT_FORCING_RES,
SSVC_TYPE_ROOM_EXIT_RES, SSVC_TYPE_ROOM_EXIT_RES,
SSVC_TYPE_ROOM_INVITE_RES, SSVC_TYPE_ROOM_INVITE_RES,
ExitForcingResponse ExitForcingResponse,
RoomInfo
} from '@ucap-webmessenger/protocol-room'; } from '@ucap-webmessenger/protocol-room';
import { import {
StatusProtocolService, StatusProtocolService,
@ -100,6 +101,7 @@ import { AppUserInfo, KEY_APP_USER_INFO } from '@app/types/app-user-info.type';
import { environment } from '../../environments/environment'; import { environment } from '../../environments/environment';
import { NotificationMethod } from '@ucap-webmessenger/core'; import { NotificationMethod } from '@ucap-webmessenger/core';
import { Dictionary } from '@ngrx/entity';
@Injectable() @Injectable()
export class AppNotificationService { export class AppNotificationService {
@ -151,7 +153,18 @@ export class AppNotificationService {
this.eventProtocolService.notification$ this.eventProtocolService.notification$
.pipe( .pipe(
tap(notiOrRes => { withLatestFrom(
this.store.pipe(
select((state: any) => state.messenger.room.roomInfo as RoomInfo)
),
this.store.pipe(
select(
(state: any) =>
state.messenger.sync.room.entities as Dictionary<RoomInfo>
)
)
),
tap(([notiOrRes, curRoomInfo, roomList]) => {
switch (notiOrRes.SSVC_TYPE) { switch (notiOrRes.SSVC_TYPE) {
case SSVC_TYPE_EVENT_SEND_RES: case SSVC_TYPE_EVENT_SEND_RES:
case SSVC_TYPE_EVENT_SEND_NOTI: case SSVC_TYPE_EVENT_SEND_NOTI:
@ -170,33 +183,54 @@ export class AppNotificationService {
// notification.. // notification..
if (notiOrRes.SSVC_TYPE === SSVC_TYPE_EVENT_SEND_NOTI) { if (notiOrRes.SSVC_TYPE === SSVC_TYPE_EVENT_SEND_NOTI) {
const appUserInfo = this.localStorageService.encGet< let doNoti = true;
AppUserInfo
>(KEY_APP_USER_INFO, environment.customConfig.appKey);
if (appUserInfo.settings.notification.use) { // 방별 알림이 꺼져 있으면 노티 안함.
const notiReq: NotificationRequest = { if (
type: NotificationType.Event, !!roomList[noti.roomSeq] &&
seq: noti.roomSeq, !roomList[noti.roomSeq].receiveAlarm
title: '메세지가 도착했습니다.', ) {
contents: StringUtil.convertFinalEventMessage( doNoti = false;
noti.eventType, }
noti.message
), // 현재 열려 있는 방일경우 노티 안함.
image: '', if (
useSound: [ !!curRoomInfo &&
NotificationMethod.Sound, !!curRoomInfo.roomSeq &&
NotificationMethod.SoundAndAlert curRoomInfo.roomSeq === noti.roomSeq
].some( ) {
n => n === appUserInfo.settings.notification.method doNoti = false;
) }
? true
: false, if (doNoti) {
displayTime: const appUserInfo = this.localStorageService.encGet<
appUserInfo.settings.notification.alertExposureTime * AppUserInfo
1000 >(KEY_APP_USER_INFO, environment.customConfig.appKey);
};
this.nativeService.notify(notiReq); if (appUserInfo.settings.notification.use) {
const notiReq: NotificationRequest = {
type: NotificationType.Event,
seq: noti.roomSeq,
title: '메세지가 도착했습니다.',
contents: StringUtil.convertFinalEventMessage(
noti.eventType,
noti.message
),
image: '',
useSound: [
NotificationMethod.Sound,
NotificationMethod.SoundAndAlert
].some(
n => n === appUserInfo.settings.notification.method
)
? true
: false,
displayTime:
appUserInfo.settings.notification.alertExposureTime *
1000
};
this.nativeService.notify(notiReq);
}
} }
} }
} }