대화방멸 알림 설정에 따른 노티 출력 여부, 현재 방일 경우에 대한 노티 출력여부 처리.
This commit is contained in:
parent
1eda1df54f
commit
97e65426f3
|
@ -41,7 +41,8 @@ import {
|
|||
SSVC_TYPE_ROOM_EXIT_FORCING_RES,
|
||||
SSVC_TYPE_ROOM_EXIT_RES,
|
||||
SSVC_TYPE_ROOM_INVITE_RES,
|
||||
ExitForcingResponse
|
||||
ExitForcingResponse,
|
||||
RoomInfo
|
||||
} from '@ucap-webmessenger/protocol-room';
|
||||
import {
|
||||
StatusProtocolService,
|
||||
|
@ -100,6 +101,7 @@ import { AppUserInfo, KEY_APP_USER_INFO } from '@app/types/app-user-info.type';
|
|||
|
||||
import { environment } from '../../environments/environment';
|
||||
import { NotificationMethod } from '@ucap-webmessenger/core';
|
||||
import { Dictionary } from '@ngrx/entity';
|
||||
|
||||
@Injectable()
|
||||
export class AppNotificationService {
|
||||
|
@ -151,7 +153,18 @@ export class AppNotificationService {
|
|||
|
||||
this.eventProtocolService.notification$
|
||||
.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) {
|
||||
case SSVC_TYPE_EVENT_SEND_RES:
|
||||
case SSVC_TYPE_EVENT_SEND_NOTI:
|
||||
|
@ -170,33 +183,54 @@ export class AppNotificationService {
|
|||
|
||||
// notification..
|
||||
if (notiOrRes.SSVC_TYPE === SSVC_TYPE_EVENT_SEND_NOTI) {
|
||||
const appUserInfo = this.localStorageService.encGet<
|
||||
AppUserInfo
|
||||
>(KEY_APP_USER_INFO, environment.customConfig.appKey);
|
||||
let doNoti = true;
|
||||
|
||||
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);
|
||||
// 방별 알림이 꺼져 있으면 노티 안함.
|
||||
if (
|
||||
!!roomList[noti.roomSeq] &&
|
||||
!roomList[noti.roomSeq].receiveAlarm
|
||||
) {
|
||||
doNoti = false;
|
||||
}
|
||||
|
||||
// 현재 열려 있는 방일경우 노티 안함.
|
||||
if (
|
||||
!!curRoomInfo &&
|
||||
!!curRoomInfo.roomSeq &&
|
||||
curRoomInfo.roomSeq === noti.roomSeq
|
||||
) {
|
||||
doNoti = false;
|
||||
}
|
||||
|
||||
if (doNoti) {
|
||||
const appUserInfo = this.localStorageService.encGet<
|
||||
AppUserInfo
|
||||
>(KEY_APP_USER_INFO, environment.customConfig.appKey);
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user