diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/messages.component.html b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/messages.component.html index 4b6e3ed3..1d53b8d9 100644 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/messages.component.html +++ b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/messages.component.html @@ -42,8 +42,8 @@ - diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/messages.component.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/messages.component.ts index bfbb5037..40a0d7e0 100644 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/messages.component.ts +++ b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/messages.component.ts @@ -389,4 +389,16 @@ export class MessagesComponent implements OnInit, OnDestroy, AfterViewChecked { break; } } + + onClickContextMenu(menuType: string) { + switch (menuType) { + case 'CLOSE_ROOM': + { + this.store.dispatch(ChatStore.clearSelectedRoom()); + } + break; + default: + break; + } + } } diff --git a/projects/ucap-webmessenger-app/src/app/store/messenger/chat/actions.ts b/projects/ucap-webmessenger-app/src/app/store/messenger/chat/actions.ts index d55509ee..2da55490 100644 --- a/projects/ucap-webmessenger-app/src/app/store/messenger/chat/actions.ts +++ b/projects/ucap-webmessenger-app/src/app/store/messenger/chat/actions.ts @@ -10,6 +10,10 @@ export const selectedRoom = createAction( props<{ roomSeq: string }>() ); +export const clearSelectedRoom = createAction( + '[Messenger::Chat] clearSelectedRoom' +); + export const newEventMessage = createAction( '[Messenger::Chat] newEventMessage', props<{ diff --git a/projects/ucap-webmessenger-app/src/app/store/messenger/chat/reducers.ts b/projects/ucap-webmessenger-app/src/app/store/messenger/chat/reducers.ts index cd779437..0fcb219b 100644 --- a/projects/ucap-webmessenger-app/src/app/store/messenger/chat/reducers.ts +++ b/projects/ucap-webmessenger-app/src/app/store/messenger/chat/reducers.ts @@ -5,7 +5,8 @@ import { selectedMassDetail, massTalkDownloadFailure, massTalkDownload, - massTalkDownloadSuccess + massTalkDownloadSuccess, + clearSelectedRoom } from './actions'; export const reducer = createReducer( @@ -17,6 +18,13 @@ export const reducer = createReducer( }; }), + on(clearSelectedRoom, (state, action) => { + return { + ...state, + selectedRoom: null + }; + }), + on(selectedMassDetail, (state, action) => { return { ...state, diff --git a/projects/ucap-webmessenger-app/src/app/store/messenger/room/effects.ts b/projects/ucap-webmessenger-app/src/app/store/messenger/room/effects.ts index b0331506..63dd6794 100644 --- a/projects/ucap-webmessenger-app/src/app/store/messenger/room/effects.ts +++ b/projects/ucap-webmessenger-app/src/app/store/messenger/room/effects.ts @@ -181,9 +181,17 @@ export class Effects { exit$ = createEffect(() => this.actions$.pipe( ofType(exit), - exhaustMap(req => { + withLatestFrom( + this.store.pipe( + select((state: any) => state.messenger.room.roomInfo as RoomInfo) + ) + ), + exhaustMap(([req, roomInfo]) => { return this.roomProtocolService.exit(req).pipe( map((res: ExitResponse) => { + if (!!roomInfo && roomInfo.roomSeq === res.roomSeq) { + this.store.dispatch(ChatStore.clearSelectedRoom()); + } return exitSuccess({ res }); }), catchError(error => of(exitFailure({ error })))