프로필 나와의 채팅 진행 (O) 이벤트 파라미터(loginres, userseq ) 채팅 대화 이벤트 답장 대화전달 대화복사 대화 나에게 전달 액션 대화 전달 타겟 대화방 번호 타겟 대화상대 번호 roomSeq = -999 eventType = c sentMassage 대화방 오픈 대화방 오픈 프로토콜 호출 divCd: 'forwardOpen' 오픈성공 파일 타입 텍스트 타입 이벤트 전송 대화방 선택 처리 대화방 오픈 결과 대화 전송 액션 정의 forward => file type, bundle type, text type openAfterSend => file type, text type openAfter => event send roomSelected => 이펙트 chat foward openAfterSend selectedRoom selectedRoomValidate room2 success events events success read fileInfos read success fileInfos success 리듀서 구현 팝업 조직도 // forwardAfterRoomOpen$ = createEffect(() => { // return this.actions$.pipe( // ofType(forwardAfterRoomOpen), // map((action) => // RoomActions.create({ // req: { divCd: 'forwardOpen', userSeqs: action.trgtUserSeqs } // }) // ), // exhaustMap((action) => { // return []; // }) // ); // }); /** forward */ export const forward = createAction( '[ucap::chat::chatting] Forward', props<{ senderSeq: string; req: SendRequest; trgtUserSeqs?: string[]; trgtRoomSeq?: string; }>() ); /** chat forward failure */ export const forwardFailure = createAction( '[ucap::chat::chatting] Forward failure', props<{ error: any }>() ); export const forwardAfterRoomOpen = createAction( '[ucap::chat::chatting] Forward after room open', props<{ senderSeq: string; req: SendRequest; trgtUserSeqs?: string[]; trgtRoomSeq?: string; }>() ); export const roomOpenAfterForward = createAction( '[ucap::chat::chatting] Room open after forward', props<{ senderSeq: string; req: SendRequest; trgtUserSeqs?: string[]; trgtRoomSeq?: string; }>() );