|
1 | 1 | package kr.co.pennyway.socket.controller; |
2 | 2 |
|
| 3 | +import jakarta.validation.constraints.NotNull; |
3 | 4 | import kr.co.pennyway.socket.command.SendMessageCommand; |
4 | 5 | import kr.co.pennyway.socket.common.annotation.PreAuthorize; |
5 | 6 | import kr.co.pennyway.socket.common.security.authenticate.UserPrincipal; |
6 | 7 | import kr.co.pennyway.socket.dto.ChatMessageDto; |
7 | 8 | import kr.co.pennyway.socket.service.ChatMessageSendService; |
| 9 | +import kr.co.pennyway.socket.service.LastMessageIdSaveService; |
8 | 10 | import lombok.RequiredArgsConstructor; |
9 | 11 | import lombok.extern.slf4j.Slf4j; |
10 | 12 | import org.springframework.messaging.handler.annotation.DestinationVariable; |
|
17 | 19 | @RequiredArgsConstructor |
18 | 20 | public class ChatMessageController { |
19 | 21 | private final ChatMessageSendService chatMessageSendService; |
| 22 | + private final LastMessageIdSaveService lastMessageIdSaveService; |
20 | 23 |
|
21 | 24 | @MessageMapping("chat.message.{chatRoomId}") |
22 | 25 | @PreAuthorize("#isAuthenticated(#principal) and @chatRoomAccessChecker.hasPermission(#chatRoomId, #principal)") |
23 | 26 | public void sendMessage(@DestinationVariable Long chatRoomId, @Validated ChatMessageDto.Request payload, UserPrincipal principal) { |
24 | 27 | chatMessageSendService.execute(SendMessageCommand.createUserMessage(chatRoomId, payload.content(), payload.contentType(), principal.getUserId())); |
25 | 28 | } |
| 29 | + |
| 30 | + @MessageMapping("chat.message.{chatRoomId}.read.{lastReadMessageId}") |
| 31 | + @PreAuthorize("#isAuthenticated(#principal) and @chatRoomAccessChecker.hasPermission(#chatRoomId, #principal)") |
| 32 | + public void readMessage(@DestinationVariable(value = "chatRoomId") @Validated @NotNull Long chatRoomId, |
| 33 | + @DestinationVariable(value = "lastReadMessageId") @Validated @NotNull Long lastReadMessageId, |
| 34 | + UserPrincipal principal |
| 35 | + ) { |
| 36 | + lastMessageIdSaveService.execute(principal.getUserId(), chatRoomId, lastReadMessageId); |
| 37 | + } |
26 | 38 | } |
0 commit comments