Skip to content

Commit 686c83f

Browse files
authored
Merge pull request #70 from oodd-team/OD-164
chatRoom 수정
2 parents 779108e + 105f0d5 commit 686c83f

File tree

1 file changed

+31
-14
lines changed

1 file changed

+31
-14
lines changed

src/chat-room/chat-room.service.ts

+31-14
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { InjectRepository } from '@nestjs/typeorm';
33
import { ChatRoom } from 'src/common/entities/chat-room.entity';
44
import { Matching } from 'src/common/entities/matching.entity';
55
import { StatusEnum } from 'src/common/enum/entityStatus';
6+
import { MatchingRequestStatusEnum } from 'src/common/enum/matchingRequestStatus';
67
import { DataNotFoundException } from 'src/common/exception/service.exception';
78
import { CreateMatchingReqeust } from 'src/matching/dto/matching.request';
89
import { Repository, QueryRunner } from 'typeorm';
@@ -20,30 +21,46 @@ export class ChatRoomService {
2021
.leftJoinAndSelect('chatRoom.fromUser', 'fromUser')
2122
.leftJoinAndSelect('chatRoom.toUser', 'toUser')
2223
.leftJoinAndSelect('chatRoom.chatMessages', 'chatMessages')
23-
.where('chatRoom.fromUserId = :userId OR chatRoom.toUserId = :userId', {
24-
userId,
25-
})
26-
.andWhere('chatRoom.status = :status', { status: 'activated' })
27-
.andWhere('chatRoom.requestStatus = :requestStatus', {
28-
requestStatus: 'accepted',
29-
})
24+
.addSelect([
25+
'fromUser.id',
26+
'fromUser.nickname',
27+
'fromUser.profilePictureUrl',
28+
])
29+
.addSelect(['toUser.id', 'toUser.nickname', 'toUser.profilePictureUrl'])
30+
.where(
31+
'(chatRoom.fromUserId = :userId OR chatRoom.toUserId = :userId) AND chatRoom.status = :status AND chatRoom.requestStatus = :requestStatus',
32+
{
33+
userId,
34+
status: StatusEnum.ACTIVATED,
35+
requestStatus: MatchingRequestStatusEnum.ACCEPTED,
36+
},
37+
)
3038
.orderBy('chatMessages.createdAt', 'DESC')
3139
.getMany();
40+
if (!chatRooms || chatRooms.length === 0) {
41+
return [];
42+
}
3243

3344
// 각 채팅방에서 최신 메시지를 선택
3445
const chatRoomsWithLatestMessages = chatRooms.map((room) => {
3546
const otherUser =
36-
room.fromUser.id === userId ? room.toUser : room.fromUser;
47+
room.fromUser && room.fromUser.id === userId
48+
? room.toUser
49+
: room.fromUser;
50+
// fromUser나 toUser가 null인 경우, otherUser를 빈 객체로 설정
51+
const otherUserInfo = otherUser
52+
? {
53+
id: otherUser.id,
54+
nickname: otherUser.nickname,
55+
profilePictureUrl: otherUser.profilePictureUrl,
56+
}
57+
: {};
58+
3759
const latestMessage =
3860
room.chatMessages.length > 0 ? room.chatMessages[0] : null; // 가장 최근 메시지 선택
39-
4061
return {
4162
id: room.id,
42-
otherUser: {
43-
id: otherUser.id,
44-
nickname: otherUser.nickname,
45-
profilePictureUrl: otherUser.profilePictureUrl,
46-
},
63+
otherUser: otherUserInfo,
4764
latestMessage: latestMessage,
4865
};
4966
});

0 commit comments

Comments
 (0)