From b95a4ee6dd549f9c6a39b97706a3394d1445af79 Mon Sep 17 00:00:00 2001 From: Slava Bobik Date: Mon, 10 Mar 2025 10:27:39 +0100 Subject: [PATCH] feat(server): added deleted by filed --- DOCS.md | 6 +++++ .../getstream/chat/java/models/Message.java | 10 +++++++- .../chat/java/services/MessageService.java | 4 ++- .../io/getstream/chat/java/MessageTest.java | 25 +++++++++++++++++++ 4 files changed, 43 insertions(+), 2 deletions(-) diff --git a/DOCS.md b/DOCS.md index 7622bfbdb..8a3166a56 100644 --- a/DOCS.md +++ b/DOCS.md @@ -1208,6 +1208,12 @@ Message.delete(messageId).request(); // hard delete the message (works only server-side) Message.delete(messageId).hard(true).request(); + +// delete the message with a specific user as the deleter +Message.delete(messageId).deletedBy(userId).request(); + +// combine parameters +Message.delete(messageId).hard(true).deletedBy(userId).request(); ``` **Upload file or image** diff --git a/src/main/java/io/getstream/chat/java/models/Message.java b/src/main/java/io/getstream/chat/java/models/Message.java index 0cf5beea3..f037c063a 100644 --- a/src/main/java/io/getstream/chat/java/models/Message.java +++ b/src/main/java/io/getstream/chat/java/models/Message.java @@ -794,15 +794,23 @@ public static class MessageDeleteRequest extends StreamRequest generateCall(Client client) { - return client.create(MessageService.class).delete(this.id, this.hard); + return client.create(MessageService.class).delete(this.id, this.hard, this.deletedBy); } } diff --git a/src/main/java/io/getstream/chat/java/services/MessageService.java b/src/main/java/io/getstream/chat/java/services/MessageService.java index c57aa79e5..e8550c23b 100644 --- a/src/main/java/io/getstream/chat/java/services/MessageService.java +++ b/src/main/java/io/getstream/chat/java/services/MessageService.java @@ -91,7 +91,9 @@ Call deleteImage( @DELETE("messages/{id}") Call delete( - @NotNull @Path("id") String id, @Nullable @Query("hard") Boolean hard); + @NotNull @Path("id") String id, + @Nullable @Query("hard") Boolean hard, + @Nullable @Query("deleted_by") String deletedBy); @GET("messages/{id}") Call get( diff --git a/src/test/java/io/getstream/chat/java/MessageTest.java b/src/test/java/io/getstream/chat/java/MessageTest.java index a2a18f526..a793531e3 100644 --- a/src/test/java/io/getstream/chat/java/MessageTest.java +++ b/src/test/java/io/getstream/chat/java/MessageTest.java @@ -530,6 +530,31 @@ void whenDeletingMessage_thenIsDeleted() { Assertions.assertNotNull(deletedMessage.getDeletedAt()); } + @DisplayName("Can delete a message with deletedBy specified") + @Test + void whenDeletingMessageWithDeletedBy_thenIsDeletedWithSpecifiedUser() { + String text = "This is a message to be deleted with deletedBy"; + MessageRequestObject messageRequest = + MessageRequestObject.builder().text(text).userId(testUserRequestObject.getId()).build(); + Message message = + Assertions.assertDoesNotThrow( + () -> + Message.send(testChannel.getType(), testChannel.getId()) + .message(messageRequest) + .request()) + .getMessage(); + Assertions.assertNull(message.getDeletedAt()); + + String deletedByUserId = "test-deleted-by-user"; + Message deletedMessage = + Assertions.assertDoesNotThrow( + () -> Message.delete(message.getId()).deletedBy(deletedByUserId).request()) + .getMessage(); + Assertions.assertNotNull(deletedMessage.getDeletedAt()); + // Additional assertions can be added here once the backend supports checking the deletedBy + // field + } + @DisplayName("Can retrieve many messages") @Test void whenRetrievingManyMessage_thenAreRetrieved() {