diff --git a/src/main/java/com/goorm/team9/icontact/domain/chat/dto/response/ChatMessageDto.java b/src/main/java/com/goorm/team9/icontact/domain/chat/dto/response/ChatMessageDto.java index a0f11aa..545b4dc 100644 --- a/src/main/java/com/goorm/team9/icontact/domain/chat/dto/response/ChatMessageDto.java +++ b/src/main/java/com/goorm/team9/icontact/domain/chat/dto/response/ChatMessageDto.java @@ -21,6 +21,7 @@ public class ChatMessageDto { private Long senderId; private String senderNickname; private String content; + private String recipientNickname; private ChatMessageType type; private LocalDateTime timeStamp; diff --git a/src/main/java/com/goorm/team9/icontact/domain/chat/service/ChatMessageService.java b/src/main/java/com/goorm/team9/icontact/domain/chat/service/ChatMessageService.java index 2a3f4ba..606ec19 100644 --- a/src/main/java/com/goorm/team9/icontact/domain/chat/service/ChatMessageService.java +++ b/src/main/java/com/goorm/team9/icontact/domain/chat/service/ChatMessageService.java @@ -63,11 +63,16 @@ public void sendMessage(ChatMessageDto chatMessageDto) { } } + String recipientNickname = chatMessageDto.getRecipientNickname(); + + boolean isRecipientInRoom = webSocketSessionService.isUserInRoom(chatRoom.getRoomId(), recipientNickname); + ChatMessage chatMessage = ChatMessage.builder() .chatRoom(chatRoom) .sender(sender) .content(chatMessageDto.getContent()) .type(chatMessageDto.getType()) + .isRead(isRecipientInRoom) .build(); chatMessageRepository.save(chatMessage); diff --git a/src/main/java/com/goorm/team9/icontact/domain/chat/service/WebSocketSessionService.java b/src/main/java/com/goorm/team9/icontact/domain/chat/service/WebSocketSessionService.java index d366967..f10fe29 100644 --- a/src/main/java/com/goorm/team9/icontact/domain/chat/service/WebSocketSessionService.java +++ b/src/main/java/com/goorm/team9/icontact/domain/chat/service/WebSocketSessionService.java @@ -66,6 +66,11 @@ public boolean isUserOnline(String nickname) { .anyMatch(userMap -> userMap.containsKey(nickname)); } + public boolean isUserInRoom(Long roomId, String nickname) { + return chatRoomSessions.getOrDefault(roomId, Map.of()) + .containsKey(nickname); + } + public void sendPrivateMessage(String nickname, String destination, Object payload) { chatRoomSessions.values().forEach(userMap -> { WebSocketSession session = userMap.get(nickname);