bugfix :: 대화방에 제 3자가 다른 사람을 추가 했을 경우 방리스트의 인원이 갱신되지 않는 문제 수정.
This commit is contained in:
parent
023571a874
commit
a2461ae2e6
|
@ -188,3 +188,8 @@ export const exitFailure = createAction(
|
||||||
'[Messenger::Room] Exit Failure',
|
'[Messenger::Room] Exit Failure',
|
||||||
props<{ error: any }>()
|
props<{ error: any }>()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
export const syncRoomRefreshByInvite = createAction(
|
||||||
|
'[Messenger::Room] Sync Room Refresh by invite',
|
||||||
|
props<InfoRequest>()
|
||||||
|
);
|
||||||
|
|
|
@ -70,7 +70,8 @@ import {
|
||||||
exitForcingFailure,
|
exitForcingFailure,
|
||||||
exitForcingSuccess,
|
exitForcingSuccess,
|
||||||
exitNotificationOthers,
|
exitNotificationOthers,
|
||||||
clearRoomUser
|
clearRoomUser,
|
||||||
|
syncRoomRefreshByInvite
|
||||||
} from './actions';
|
} from './actions';
|
||||||
import { SessionStorageService } from '@ucap-webmessenger/web-storage';
|
import { SessionStorageService } from '@ucap-webmessenger/web-storage';
|
||||||
import { LoginInfo, KEY_LOGIN_INFO, KEY_VER_INFO } from '@app/types';
|
import { LoginInfo, KEY_LOGIN_INFO, KEY_VER_INFO } from '@app/types';
|
||||||
|
@ -398,10 +399,11 @@ export class Effects {
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
tap(([action, roomInfo]) => {
|
tap(([action, roomInfo]) => {
|
||||||
if (!!roomInfo && roomInfo.roomSeq === action.noti.roomSeq) {
|
|
||||||
const loginInfo = this.sessionStorageService.get<LoginInfo>(
|
const loginInfo = this.sessionStorageService.get<LoginInfo>(
|
||||||
KEY_LOGIN_INFO
|
KEY_LOGIN_INFO
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (!!roomInfo && roomInfo.roomSeq === action.noti.roomSeq) {
|
||||||
this.store.dispatch(
|
this.store.dispatch(
|
||||||
info({
|
info({
|
||||||
roomSeq: action.noti.roomSeq,
|
roomSeq: action.noti.roomSeq,
|
||||||
|
@ -410,6 +412,15 @@ export class Effects {
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// room list refresh for exist.
|
||||||
|
this.store.dispatch(
|
||||||
|
syncRoomRefreshByInvite({
|
||||||
|
roomSeq: action.noti.roomSeq,
|
||||||
|
isDetail: true,
|
||||||
|
localeCode: loginInfo.localeCode
|
||||||
|
})
|
||||||
|
);
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
|
@ -540,6 +540,62 @@ export class Effects {
|
||||||
},
|
},
|
||||||
{ dispatch: false }
|
{ dispatch: false }
|
||||||
);
|
);
|
||||||
|
syncRoomRefreshByInvite$ = createEffect(
|
||||||
|
() => {
|
||||||
|
let roomInfo: RoomInfo;
|
||||||
|
let userInfoShortList: UserInfoShort[];
|
||||||
|
let userInfoList: RoomUserInfo[];
|
||||||
|
|
||||||
|
return this.actions$.pipe(
|
||||||
|
ofType(RoomStore.syncRoomRefreshByInvite),
|
||||||
|
tap(() => {
|
||||||
|
roomInfo = null;
|
||||||
|
userInfoShortList = [];
|
||||||
|
userInfoList = [];
|
||||||
|
}),
|
||||||
|
withLatestFrom(
|
||||||
|
this.store.pipe(
|
||||||
|
select((state: any) => state.messenger.sync.room.ids as string[])
|
||||||
|
)
|
||||||
|
),
|
||||||
|
switchMap(([req, roomSeqList]) => {
|
||||||
|
const index = roomSeqList.findIndex(
|
||||||
|
(roomSeq, i) => roomSeq === req.roomSeq
|
||||||
|
);
|
||||||
|
if (index > -1) {
|
||||||
|
return this.roomProtocolService.info(req).pipe(
|
||||||
|
map(res => {
|
||||||
|
switch (res.SSVC_TYPE) {
|
||||||
|
case SSVC_TYPE_ROOM_INFO_ROOM:
|
||||||
|
roomInfo = (res as InfoData).roomInfo;
|
||||||
|
break;
|
||||||
|
case SSVC_TYPE_ROOM_INFO_USER:
|
||||||
|
userInfoShortList.push(...(res as UserShortData).userInfos);
|
||||||
|
break;
|
||||||
|
case SSVC_TYPE_ROOM_INFO_USER2:
|
||||||
|
userInfoList.push(...(res as UserData).userInfos);
|
||||||
|
break;
|
||||||
|
case SSVC_TYPE_ROOM_INFO_RES:
|
||||||
|
this.store.dispatch(
|
||||||
|
refreshRoomSuccess({
|
||||||
|
roomInfo,
|
||||||
|
userInfoShortList,
|
||||||
|
userInfoList
|
||||||
|
})
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}),
|
||||||
|
catchError(error => of(refreshRoomFailure({ error })))
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
return of();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
},
|
||||||
|
{ dispatch: false }
|
||||||
|
);
|
||||||
|
|
||||||
// 대화상대 초대 성공 후 처리.
|
// 대화상대 초대 성공 후 처리.
|
||||||
inviteSuccess$ = createEffect(() =>
|
inviteSuccess$ = createEffect(() =>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user