289 lines
6.7 KiB
Plaintext
289 lines
6.7 KiB
Plaintext
대화방 생성
|
|
파라미터
|
|
대화방 제목
|
|
결과
|
|
선택된 유저 리스트
|
|
대화방 생성 액션
|
|
|
|
대화 전달
|
|
파라미터
|
|
대화방 제목
|
|
결과
|
|
선택된 유저 리스트
|
|
대화 전달 액션
|
|
룸seq: -999
|
|
|
|
대화방 멤버 수정 (EditChatMember)
|
|
파라미터
|
|
대화방 제목
|
|
대화방 유저[]
|
|
결과
|
|
선택된 유저 리스트
|
|
수정검사
|
|
대화방 멤버 수정 액션
|
|
|
|
그룹 생성
|
|
파라미터
|
|
대화방 제목
|
|
결과
|
|
선택된 유저 리스트
|
|
그룹 생성 액션
|
|
|
|
그룹 멤버 수정 (EditMember)
|
|
파라미터
|
|
대화방 제목
|
|
groupDetailData
|
|
결과
|
|
선택된 유저 리스트
|
|
그룹 멤버 수정
|
|
|
|
|
|
createChatDialog
|
|
오픈 시 받아야 할 데이터
|
|
type:
|
|
title:
|
|
group?:
|
|
curRoomUser?:
|
|
|
|
결과
|
|
선택 유저 리스트
|
|
|
|
대화방 생성
|
|
검색
|
|
그룹/조직도 출력
|
|
선택 유저 출력
|
|
|
|
완료
|
|
대화방 오픈
|
|
선택 유저 리스트
|
|
취소
|
|
x
|
|
그룹지정 후 완료
|
|
그룹 생성?
|
|
선택 유저 리스트
|
|
기존 그룹 수정?
|
|
선택 유저 리스트
|
|
대화 전달
|
|
검색
|
|
그룹/조직도 출력
|
|
선택 유저 출력
|
|
|
|
완료
|
|
대화 전달 액션
|
|
이벤트 seq
|
|
선택 유저 리스트
|
|
취소
|
|
x
|
|
|
|
대화방 멤버 수정 (EditChatMember)
|
|
검색
|
|
그룹/조직도 출력
|
|
기존 대화방 유저[] 체크
|
|
선택 유저 출력
|
|
|
|
그룹 생성
|
|
검색
|
|
그룹/조직도 출력
|
|
선택 유저 출력
|
|
|
|
완료
|
|
그룹 생성 액션
|
|
그룹이름
|
|
선택 유저 리스트
|
|
취소
|
|
x
|
|
그룹 멤버 수정 (EditMember)
|
|
검색
|
|
그룹/조직도 출력
|
|
선택 유저 출력
|
|
|
|
완료
|
|
그룹 수정 액션
|
|
선택 유저 리스트
|
|
기존 그룹 유저 리스트
|
|
취소
|
|
x
|
|
|
|
대화
|
|
|
|
createChatDialogComponent
|
|
selectUserSectionComponent
|
|
tenantSearchComponent
|
|
groupListSectionComponent
|
|
treeSectionComponent
|
|
타입별 다음 단계 정의
|
|
타입별 액션 정의
|
|
|
|
UserSelectDialogType.EditChatMember
|
|
message-write.dialog.component.ts
|
|
if (!!result && !!result.choice && result.choice) {
|
|
// while (receiverList.length) {
|
|
// receiverList.pop();
|
|
// }
|
|
const selectedUserList: UserInfo[] = [];
|
|
result.selectedUserList.forEach(v => {
|
|
selectedUserList.push(v as UserInfo);
|
|
});
|
|
this.curReceiverList = selectedUserList;
|
|
}
|
|
|
|
room-user-list.component.ts
|
|
if (!!result && !!result.choice && result.choice) {
|
|
if (
|
|
!!result.selectedUserList &&
|
|
result.selectedUserList.length > 0 &&
|
|
curRoomUser
|
|
.map(user => user.seq)
|
|
.sort()
|
|
.join('|') ===
|
|
result.selectedUserList
|
|
.map(user => user.seq)
|
|
.sort()
|
|
.join('|')
|
|
) {
|
|
// 변경된 것이 없다면 중지.
|
|
return;
|
|
}
|
|
|
|
// include me here..
|
|
const userSeqs: number[] = this.userInfoList
|
|
.filter(userInfo => userInfo.isJoinRoom)
|
|
.map(userInfo => userInfo.seq);
|
|
if (!!result.selectedUserList && result.selectedUserList.length > 0) {
|
|
result.selectedUserList.forEach(user => {
|
|
if (userSeqs.indexOf(user.seq) < 0) {
|
|
userSeqs.push(user.seq);
|
|
}
|
|
});
|
|
}
|
|
|
|
if (userSeqs.length > 0) {
|
|
this.store.dispatch(
|
|
RoomStore.inviteOrOpen({
|
|
req: {
|
|
divCd: 'Invite',
|
|
userSeqs
|
|
}
|
|
})
|
|
);
|
|
}
|
|
}
|
|
|
|
messages.component.ts
|
|
if (!!result && !!result.choice && result.choice) {
|
|
if (
|
|
!!result.selectedUserList &&
|
|
result.selectedUserList.length > 0 &&
|
|
curRoomUser
|
|
.map((user) => user.seq)
|
|
.sort()
|
|
.join('|') ===
|
|
result.selectedUserList
|
|
.map((user) => user.seq)
|
|
.sort()
|
|
.join('|')
|
|
) {
|
|
// 변경된 것이 없다면 중지.
|
|
return;
|
|
}
|
|
|
|
// include me here..
|
|
const userSeqs: number[] = this.userInfoListSubject.value
|
|
.filter((userInfo) => userInfo.isJoinRoom)
|
|
.map((userInfo) => userInfo.seq);
|
|
|
|
if (
|
|
!!result.selectedUserList &&
|
|
result.selectedUserList.length > 0
|
|
) {
|
|
result.selectedUserList.forEach((user) => {
|
|
if (userSeqs.indexOf(user.seq) < 0) {
|
|
userSeqs.push(user.seq);
|
|
}
|
|
});
|
|
}
|
|
|
|
if (userSeqs.length > 0) {
|
|
// include me
|
|
const myUserSeq = this.loginResSubject.value.userSeq;
|
|
if (!!myUserSeq && userSeqs.indexOf(myUserSeq) < 0) {
|
|
userSeqs.push(myUserSeq);
|
|
}
|
|
|
|
this.store.dispatch(
|
|
RoomStore.inviteOrOpen({
|
|
req: {
|
|
divCd: 'Invite',
|
|
userSeqs
|
|
}
|
|
})
|
|
);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
add$ = createEffect(() =>
|
|
this.actions$.pipe(
|
|
ofType(add),
|
|
withLatestFrom(this.store.pipe(select(BuddySelector.buddies))),
|
|
exhaustMap(([action, buddies]) => {
|
|
return this.buddyProtocolService.add(action.req).pipe(
|
|
map((res: BuddyAddResponse) => {
|
|
return buddy2();
|
|
}),
|
|
catchError(error => of(addFailure({ error })))
|
|
)}
|
|
)
|
|
)
|
|
);
|
|
|
|
|
|
create$ = createEffect(() =>
|
|
this.actions$.pipe(
|
|
ofType(create),
|
|
withLatestFrom(this.store.pipe(select(BuddySelector.buddies))),
|
|
exhaustMap(([action, buddies]) => {
|
|
return this.groupProtocolService
|
|
.add({
|
|
groupName: action.groupName
|
|
})
|
|
.pipe(
|
|
switchMap((res: GroupAddResponse) => {
|
|
const actions: any[] = [];
|
|
|
|
if (!!action.targetUserSeqs && 0 < action.targetUserSeqs.length) {
|
|
const addBuddies: number[] = [];
|
|
action.targetUserSeqs.forEach((item) => {
|
|
if (!buddies[item]) {
|
|
addBuddies.push(Number(item));
|
|
}
|
|
});
|
|
if (addBuddies.length > 0) {
|
|
actions.push(
|
|
BuddyActions.add({
|
|
req: { userSeqs: action.targetUserSeqs }
|
|
})
|
|
);
|
|
}
|
|
actions.push(
|
|
update({
|
|
req: {
|
|
groupSeq: res.groupSeq,
|
|
groupName: res.groupName,
|
|
userSeqs: action.targetUserSeqs
|
|
}
|
|
})
|
|
);
|
|
}
|
|
actions.push(
|
|
createSuccess({ res, targetUserSeqs: action.targetUserSeqs })
|
|
);
|
|
|
|
return actions;
|
|
}),
|
|
catchError((error) => of(createFailure({ error })))
|
|
);
|
|
})
|
|
)
|
|
); |