From c8fe185037a3b96250038c78567b8e2094d4af2d Mon Sep 17 00:00:00 2001 From: JamesChenX Date: Thu, 12 Dec 2024 22:10:51 +0800 Subject: [PATCH] Fix the delivery date of forwarded messages should be the server time #1591 + Return an error instead of ok if the message for forwarding was not found --- .../domain/message/service/MessageService.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/turms-service/src/main/java/im/turms/service/domain/message/service/MessageService.java b/turms-service/src/main/java/im/turms/service/domain/message/service/MessageService.java index 2ab26e4c9e..f34bc42bd0 100644 --- a/turms-service/src/main/java/im/turms/service/domain/message/service/MessageService.java +++ b/turms-service/src/main/java/im/turms/service/domain/message/service/MessageService.java @@ -127,6 +127,9 @@ public class MessageService extends BaseService { private static final Logger LOGGER = LoggerFactory.getLogger(MessageService.class); + private static final Mono ERROR_NOT_MESSAGE_RECIPIENT_OR_SENDER_TO_FORWARD_MESSAGE = + Mono.error(ResponseException.get(NOT_MESSAGE_RECIPIENT_OR_SENDER_TO_FORWARD_MESSAGE)); + private static final Method GET_MESSAGES_TO_DELETE_METHOD; private final MessageRepository messageRepository; @@ -1268,8 +1271,7 @@ public Mono authAndCloneAndSaveMessage( message.getTargetId(), message.getSenderId()).flatMap(isMessageRecipientOrSender -> { if (!isMessageRecipientOrSender) { - return Mono.error(ResponseException - .get(NOT_MESSAGE_RECIPIENT_OR_SENDER_TO_FORWARD_MESSAGE)); + return ERROR_NOT_MESSAGE_RECIPIENT_OR_SENDER_TO_FORWARD_MESSAGE; } return authAndSaveMessage(queryRecipientIds, null, @@ -1282,10 +1284,13 @@ public Mono authAndCloneAndSaveMessage( message.getText(), message.getRecords(), message.getBurnAfter(), - message.getDeliveryDate(), + null, referenceId, null); - })); + })) + // We should not tell the client that the message was not found. + // Otherwise, the user can check if any message exists or not. + .switchIfEmpty(ERROR_NOT_MESSAGE_RECIPIENT_OR_SENDER_TO_FORWARD_MESSAGE); } public Mono cloneAndSaveMessage(