From dd7205315db21cc36b8d2e8e3372018123985aff Mon Sep 17 00:00:00 2001 From: Rafael Marinho Date: Tue, 16 Sep 2025 09:01:14 +0200 Subject: [PATCH 01/16] feat[CHA-1223]: support delivery receipts --- .../models/DeliveredMessageConfirmation.java | 22 +++ .../java/models/MarkDeliveredOptions.java | 88 ++++++++++++ .../chat/java/services/ChannelService.java | 5 + .../chat/java/DeliveryReceiptsTest.java | 129 ++++++++++++++++++ 4 files changed, 244 insertions(+) create mode 100644 src/main/java/io/getstream/chat/java/models/DeliveredMessageConfirmation.java create mode 100644 src/main/java/io/getstream/chat/java/models/MarkDeliveredOptions.java create mode 100644 src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java diff --git a/src/main/java/io/getstream/chat/java/models/DeliveredMessageConfirmation.java b/src/main/java/io/getstream/chat/java/models/DeliveredMessageConfirmation.java new file mode 100644 index 000000000..cbaf6e4b7 --- /dev/null +++ b/src/main/java/io/getstream/chat/java/models/DeliveredMessageConfirmation.java @@ -0,0 +1,22 @@ +package io.getstream.chat.java.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.*; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +@Data +@NoArgsConstructor +public class DeliveredMessageConfirmation { + @NotNull + @JsonProperty("cid") + private String cid; + + @NotNull + @JsonProperty("id") + private String id; + + @Nullable + @JsonProperty("parent_id") + private String parentId; +} diff --git a/src/main/java/io/getstream/chat/java/models/MarkDeliveredOptions.java b/src/main/java/io/getstream/chat/java/models/MarkDeliveredOptions.java new file mode 100644 index 000000000..5823e9374 --- /dev/null +++ b/src/main/java/io/getstream/chat/java/models/MarkDeliveredOptions.java @@ -0,0 +1,88 @@ +package io.getstream.chat.java.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.getstream.chat.java.models.framework.StreamRequest; +import io.getstream.chat.java.models.framework.StreamResponseObject; +import io.getstream.chat.java.services.ChannelService; +import io.getstream.chat.java.services.framework.Client; +import java.util.List; +import lombok.*; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import retrofit2.Call; + +@Data +@NoArgsConstructor +public class MarkDeliveredOptions { + @NotNull + @JsonProperty("latest_delivered_messages") + private List latestDeliveredMessages; + + @Nullable + @JsonProperty("user") + private User user; + + @Nullable + @JsonProperty("user_id") + private String userId; + + @Data + @NoArgsConstructor + @EqualsAndHashCode(callSuper = true) + public static class MarkDeliveredResponse extends StreamResponseObject {} + + public static class MarkDeliveredRequest extends StreamRequest { + private MarkDeliveredOptions options; + + public MarkDeliveredRequest() {} + + public MarkDeliveredRequest(MarkDeliveredOptions options) { + this.options = options; + } + + public MarkDeliveredRequest options(MarkDeliveredOptions options) { + this.options = options; + return this; + } + + @Override + protected Call generateCall(Client client) { + return client.create(ChannelService.class).markChannelsDelivered(options); + } + } + + /** + * Creates a mark channels delivered request + * + * @return the created request + */ + @NotNull + public static MarkDeliveredRequest markChannelsDelivered() { + return new MarkDeliveredRequest(); + } + + /** + * Creates a mark channels delivered request with options + * + * @param options the mark delivered options + * @return the created request + */ + @NotNull + public static MarkDeliveredRequest markChannelsDelivered(MarkDeliveredOptions options) { + return new MarkDeliveredRequest(options); + } + + /** + * Creates a mark channels delivered request with a list of delivered message confirmations + * + * @param latestDeliveredMessages the list of delivered message confirmations + * @return the created request + */ + @NotNull + public static MarkDeliveredRequest markChannelsDelivered( + List latestDeliveredMessages) { + MarkDeliveredOptions options = new MarkDeliveredOptions(); + options.setLatestDeliveredMessages(latestDeliveredMessages); + return new MarkDeliveredRequest(options); + } +} diff --git a/src/main/java/io/getstream/chat/java/services/ChannelService.java b/src/main/java/io/getstream/chat/java/services/ChannelService.java index fc59def59..e83dd81d0 100644 --- a/src/main/java/io/getstream/chat/java/services/ChannelService.java +++ b/src/main/java/io/getstream/chat/java/services/ChannelService.java @@ -2,6 +2,7 @@ import io.getstream.chat.java.models.Channel; import io.getstream.chat.java.models.Channel.*; +import io.getstream.chat.java.models.MarkDeliveredOptions; import io.getstream.chat.java.models.framework.StreamResponseObject; import io.getstream.chat.java.services.framework.ToJson; import org.jetbrains.annotations.NotNull; @@ -103,4 +104,8 @@ Call updateMemberPartial( @NotNull @Path("id") String channelId, @NotNull @Path("user_id") String userId, @NotNull @Body ChannelMemberPartialUpdateRequestData updateMemberPartialRequestData); + + @POST("channels/delivered") + Call markChannelsDelivered( + @NotNull @Body MarkDeliveredOptions markDeliveredOptions); } diff --git a/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java b/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java new file mode 100644 index 000000000..e3ee897e4 --- /dev/null +++ b/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java @@ -0,0 +1,129 @@ +package io.getstream.chat.java; + +import io.getstream.chat.java.exceptions.StreamException; +import io.getstream.chat.java.models.DeliveredMessageConfirmation; +import io.getstream.chat.java.models.MarkDeliveredOptions; +import io.getstream.chat.java.models.Message; +import io.getstream.chat.java.models.Message.MessageRequestObject; +import io.getstream.chat.java.models.Message.MessageType; +import java.util.Arrays; +import java.util.List; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +/** Tests for the delivery receipts functionality. */ +public class DeliveryReceiptsTest extends BasicTest { + + @DisplayName("Can mark channels as delivered") + @Test + void whenMarkingChannelsDelivered_thenNoException() throws StreamException { + // Send a test message first + MessageRequestObject messageRequest = + MessageRequestObject.builder() + .text("Test message for delivery receipts") + .userId(testUserRequestObject.getId()) + .type(MessageType.REGULAR) + .build(); + + Message message = + Message.send(testChannel.getType(), testChannel.getId()) + .message(messageRequest) + .request() + .getMessage(); + + // Create delivered message confirmation + DeliveredMessageConfirmation confirmation = new DeliveredMessageConfirmation(); + confirmation.setCid(testChannel.getCId()); + confirmation.setId(message.getId()); + + // Mark channels as delivered + MarkDeliveredOptions.MarkDeliveredResponse response = + MarkDeliveredOptions.markChannelsDelivered(Arrays.asList(confirmation)).request(); + + // Verify response is not null (successful call) + Assertions.assertNotNull(response); + } + + @DisplayName("Can mark channels as delivered with options") + @Test + void whenMarkingChannelsDeliveredWithOptions_thenNoException() throws StreamException { + // Send a test message first + MessageRequestObject messageRequest = + MessageRequestObject.builder() + .text("Test message for delivery receipts with options") + .userId(testUserRequestObject.getId()) + .type(MessageType.REGULAR) + .build(); + + Message message = + Message.send(testChannel.getType(), testChannel.getId()) + .message(messageRequest) + .request() + .getMessage(); + + // Create delivered message confirmation + DeliveredMessageConfirmation confirmation = new DeliveredMessageConfirmation(); + confirmation.setCid(testChannel.getCId()); + confirmation.setId(message.getId()); + + // Create mark delivered options + MarkDeliveredOptions options = new MarkDeliveredOptions(); + options.setLatestDeliveredMessages(Arrays.asList(confirmation)); + options.setUserId(testUserRequestObject.getId()); + + // Mark channels as delivered + MarkDeliveredOptions.MarkDeliveredResponse response = + MarkDeliveredOptions.markChannelsDelivered(options).request(); + + // Verify response is not null (successful call) + Assertions.assertNotNull(response); + } + + @DisplayName("Can mark channels as delivered with multiple messages") + @Test + void whenMarkingChannelsDeliveredWithMultipleMessages_thenNoException() throws StreamException { + // Send multiple test messages + List messages = + Arrays.asList( + Message.send(testChannel.getType(), testChannel.getId()) + .message( + MessageRequestObject.builder() + .text("Test message 1") + .userId(testUserRequestObject.getId()) + .type(MessageType.REGULAR) + .build()) + .request() + .getMessage(), + Message.send(testChannel.getType(), testChannel.getId()) + .message( + MessageRequestObject.builder() + .text("Test message 2") + .userId(testUserRequestObject.getId()) + .type(MessageType.REGULAR) + .build()) + .request() + .getMessage()); + + // Create delivered message confirmations + List confirmations = + Arrays.asList( + createConfirmation(testChannel.getCId(), messages.get(0).getId()), + createConfirmation(testChannel.getCId(), messages.get(1).getId())); + + // Mark channels as delivered + MarkDeliveredOptions.MarkDeliveredResponse response = + MarkDeliveredOptions.markChannelsDelivered(confirmations).request(); + + // Verify response is not null (successful call) + Assertions.assertNotNull(response); + } + + private DeliveredMessageConfirmation createConfirmation(String cid, String messageId) { + DeliveredMessageConfirmation confirmation = new DeliveredMessageConfirmation(); + confirmation.setCid(cid); + confirmation.setId(messageId); + return confirmation; + } +} + From 2b1e0f4a68eed7931f2c0cf28326aa9c381e0d5f Mon Sep 17 00:00:00 2001 From: Rafael Marinho Date: Tue, 16 Sep 2025 09:29:29 +0200 Subject: [PATCH 02/16] clean up --- src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java b/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java index e3ee897e4..08ddf5d6d 100644 --- a/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java +++ b/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java @@ -126,4 +126,3 @@ private DeliveredMessageConfirmation createConfirmation(String cid, String messa return confirmation; } } - From 607dce25fd515bb7bb09f7401037077eb9f7cb1b Mon Sep 17 00:00:00 2001 From: Rafael Marinho Date: Fri, 3 Oct 2025 14:34:13 +0200 Subject: [PATCH 03/16] fix unit test --- .../java/io/getstream/chat/java/DeliveryReceiptsTest.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java b/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java index 08ddf5d6d..40cecc0aa 100644 --- a/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java +++ b/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java @@ -37,9 +37,14 @@ void whenMarkingChannelsDelivered_thenNoException() throws StreamException { confirmation.setCid(testChannel.getCId()); confirmation.setId(message.getId()); + // Create mark delivered options with userId + MarkDeliveredOptions options = new MarkDeliveredOptions(); + options.setLatestDeliveredMessages(Arrays.asList(confirmation)); + options.setUserId(testUserRequestObject.getId()); + // Mark channels as delivered MarkDeliveredOptions.MarkDeliveredResponse response = - MarkDeliveredOptions.markChannelsDelivered(Arrays.asList(confirmation)).request(); + MarkDeliveredOptions.markChannelsDelivered(options).request(); // Verify response is not null (successful call) Assertions.assertNotNull(response); From 4ea44674deb10801416f528b0a1ea806485936ed Mon Sep 17 00:00:00 2001 From: Rafael Marinho Date: Fri, 3 Oct 2025 14:36:50 +0200 Subject: [PATCH 04/16] fix unit test --- .../java/io/getstream/chat/java/DeliveryReceiptsTest.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java b/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java index 40cecc0aa..0c9caac43 100644 --- a/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java +++ b/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java @@ -116,9 +116,14 @@ void whenMarkingChannelsDeliveredWithMultipleMessages_thenNoException() throws S createConfirmation(testChannel.getCId(), messages.get(0).getId()), createConfirmation(testChannel.getCId(), messages.get(1).getId())); + // Create mark delivered options with userId + MarkDeliveredOptions options = new MarkDeliveredOptions(); + options.setLatestDeliveredMessages(confirmations); + options.setUserId(testUserRequestObject.getId()); + // Mark channels as delivered MarkDeliveredOptions.MarkDeliveredResponse response = - MarkDeliveredOptions.markChannelsDelivered(confirmations).request(); + MarkDeliveredOptions.markChannelsDelivered(options).request(); // Verify response is not null (successful call) Assertions.assertNotNull(response); From a8322a8eab6897dd88ad0ddb8a00f1e1c8d6b960 Mon Sep 17 00:00:00 2001 From: Rafael Marinho Date: Fri, 3 Oct 2025 14:50:05 +0200 Subject: [PATCH 05/16] fix unit tests --- .../chat/java/DeliveryReceiptsTest.java | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java b/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java index 0c9caac43..850381353 100644 --- a/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java +++ b/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java @@ -6,6 +6,7 @@ import io.getstream.chat.java.models.Message; import io.getstream.chat.java.models.Message.MessageRequestObject; import io.getstream.chat.java.models.Message.MessageType; +import io.getstream.chat.java.models.User; import java.util.Arrays; import java.util.List; import org.junit.jupiter.api.Assertions; @@ -37,10 +38,14 @@ void whenMarkingChannelsDelivered_thenNoException() throws StreamException { confirmation.setCid(testChannel.getCId()); confirmation.setId(message.getId()); - // Create mark delivered options with userId + // Create mark delivered options with user object MarkDeliveredOptions options = new MarkDeliveredOptions(); options.setLatestDeliveredMessages(Arrays.asList(confirmation)); - options.setUserId(testUserRequestObject.getId()); + + // Create a minimal User object with just the ID + User user = new User(); + user.setId(testUserRequestObject.getId()); + options.setUser(user); // Mark channels as delivered MarkDeliveredOptions.MarkDeliveredResponse response = @@ -72,10 +77,14 @@ void whenMarkingChannelsDeliveredWithOptions_thenNoException() throws StreamExce confirmation.setCid(testChannel.getCId()); confirmation.setId(message.getId()); - // Create mark delivered options + // Create mark delivered options with user object MarkDeliveredOptions options = new MarkDeliveredOptions(); options.setLatestDeliveredMessages(Arrays.asList(confirmation)); - options.setUserId(testUserRequestObject.getId()); + + // Create a minimal User object with just the ID + User user = new User(); + user.setId(testUserRequestObject.getId()); + options.setUser(user); // Mark channels as delivered MarkDeliveredOptions.MarkDeliveredResponse response = @@ -116,10 +125,14 @@ void whenMarkingChannelsDeliveredWithMultipleMessages_thenNoException() throws S createConfirmation(testChannel.getCId(), messages.get(0).getId()), createConfirmation(testChannel.getCId(), messages.get(1).getId())); - // Create mark delivered options with userId + // Create mark delivered options with user object MarkDeliveredOptions options = new MarkDeliveredOptions(); options.setLatestDeliveredMessages(confirmations); - options.setUserId(testUserRequestObject.getId()); + + // Create a minimal User object with just the ID + User user = new User(); + user.setId(testUserRequestObject.getId()); + options.setUser(user); // Mark channels as delivered MarkDeliveredOptions.MarkDeliveredResponse response = From a90d662ebaf904ddd1a2c239e6e78d43988ce39f Mon Sep 17 00:00:00 2001 From: Rafael Marinho Date: Fri, 3 Oct 2025 14:56:40 +0200 Subject: [PATCH 06/16] fix unit test --- .../getstream/chat/java/DeliveryReceiptsTest.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java b/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java index 850381353..897aaa443 100644 --- a/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java +++ b/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java @@ -38,14 +38,15 @@ void whenMarkingChannelsDelivered_thenNoException() throws StreamException { confirmation.setCid(testChannel.getCId()); confirmation.setId(message.getId()); - // Create mark delivered options with user object + // Create mark delivered options with both user and userId MarkDeliveredOptions options = new MarkDeliveredOptions(); options.setLatestDeliveredMessages(Arrays.asList(confirmation)); - // Create a minimal User object with just the ID + // Set both user object and userId string User user = new User(); user.setId(testUserRequestObject.getId()); options.setUser(user); + options.setUserId(testUserRequestObject.getId()); // Mark channels as delivered MarkDeliveredOptions.MarkDeliveredResponse response = @@ -77,14 +78,15 @@ void whenMarkingChannelsDeliveredWithOptions_thenNoException() throws StreamExce confirmation.setCid(testChannel.getCId()); confirmation.setId(message.getId()); - // Create mark delivered options with user object + // Create mark delivered options with both user and userId MarkDeliveredOptions options = new MarkDeliveredOptions(); options.setLatestDeliveredMessages(Arrays.asList(confirmation)); - // Create a minimal User object with just the ID + // Set both user object and userId string User user = new User(); user.setId(testUserRequestObject.getId()); options.setUser(user); + options.setUserId(testUserRequestObject.getId()); // Mark channels as delivered MarkDeliveredOptions.MarkDeliveredResponse response = @@ -125,14 +127,15 @@ void whenMarkingChannelsDeliveredWithMultipleMessages_thenNoException() throws S createConfirmation(testChannel.getCId(), messages.get(0).getId()), createConfirmation(testChannel.getCId(), messages.get(1).getId())); - // Create mark delivered options with user object + // Create mark delivered options with both user and userId MarkDeliveredOptions options = new MarkDeliveredOptions(); options.setLatestDeliveredMessages(confirmations); - // Create a minimal User object with just the ID + // Set both user object and userId string User user = new User(); user.setId(testUserRequestObject.getId()); options.setUser(user); + options.setUserId(testUserRequestObject.getId()); // Mark channels as delivered MarkDeliveredOptions.MarkDeliveredResponse response = From 142be4b4d4607bfb2c096c49fcceff338de20374 Mon Sep 17 00:00:00 2001 From: Rafael Marinho Date: Fri, 3 Oct 2025 15:20:09 +0200 Subject: [PATCH 07/16] fix unit tests --- .../getstream/chat/java/models/MarkDeliveredOptions.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/io/getstream/chat/java/models/MarkDeliveredOptions.java b/src/main/java/io/getstream/chat/java/models/MarkDeliveredOptions.java index 5823e9374..4af0c2886 100644 --- a/src/main/java/io/getstream/chat/java/models/MarkDeliveredOptions.java +++ b/src/main/java/io/getstream/chat/java/models/MarkDeliveredOptions.java @@ -45,6 +45,14 @@ public MarkDeliveredRequest options(MarkDeliveredOptions options) { return this; } + public MarkDeliveredRequest userId(String userId) { + if (this.options == null) { + this.options = new MarkDeliveredOptions(); + } + this.options.setUserId(userId); + return this; + } + @Override protected Call generateCall(Client client) { return client.create(ChannelService.class).markChannelsDelivered(options); From 1cbd626051f851fc6120a7ffacf8706a2876cbe5 Mon Sep 17 00:00:00 2001 From: Rafael Marinho Date: Fri, 3 Oct 2025 15:39:27 +0200 Subject: [PATCH 08/16] fix unit tests --- .../chat/java/DeliveryReceiptsTest.java | 36 ++++++------------- 1 file changed, 11 insertions(+), 25 deletions(-) diff --git a/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java b/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java index 897aaa443..980eab6ea 100644 --- a/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java +++ b/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java @@ -50,7 +50,9 @@ void whenMarkingChannelsDelivered_thenNoException() throws StreamException { // Mark channels as delivered MarkDeliveredOptions.MarkDeliveredResponse response = - MarkDeliveredOptions.markChannelsDelivered(options).request(); + MarkDeliveredOptions.markChannelsDelivered(Arrays.asList(confirmation)) + .userId(testUserRequestObject.getId()) + .request(); // Verify response is not null (successful call) Assertions.assertNotNull(response); @@ -78,19 +80,11 @@ void whenMarkingChannelsDeliveredWithOptions_thenNoException() throws StreamExce confirmation.setCid(testChannel.getCId()); confirmation.setId(message.getId()); - // Create mark delivered options with both user and userId - MarkDeliveredOptions options = new MarkDeliveredOptions(); - options.setLatestDeliveredMessages(Arrays.asList(confirmation)); - - // Set both user object and userId string - User user = new User(); - user.setId(testUserRequestObject.getId()); - options.setUser(user); - options.setUserId(testUserRequestObject.getId()); - - // Mark channels as delivered + // Mark channels as delivered with user_id as parameter MarkDeliveredOptions.MarkDeliveredResponse response = - MarkDeliveredOptions.markChannelsDelivered(options).request(); + MarkDeliveredOptions.markChannelsDelivered(Arrays.asList(confirmation)) + .userId(testUserRequestObject.getId()) + .request(); // Verify response is not null (successful call) Assertions.assertNotNull(response); @@ -127,19 +121,11 @@ void whenMarkingChannelsDeliveredWithMultipleMessages_thenNoException() throws S createConfirmation(testChannel.getCId(), messages.get(0).getId()), createConfirmation(testChannel.getCId(), messages.get(1).getId())); - // Create mark delivered options with both user and userId - MarkDeliveredOptions options = new MarkDeliveredOptions(); - options.setLatestDeliveredMessages(confirmations); - - // Set both user object and userId string - User user = new User(); - user.setId(testUserRequestObject.getId()); - options.setUser(user); - options.setUserId(testUserRequestObject.getId()); - - // Mark channels as delivered + // Mark channels as delivered with user_id as parameter MarkDeliveredOptions.MarkDeliveredResponse response = - MarkDeliveredOptions.markChannelsDelivered(options).request(); + MarkDeliveredOptions.markChannelsDelivered(confirmations) + .userId(testUserRequestObject.getId()) + .request(); // Verify response is not null (successful call) Assertions.assertNotNull(response); From 905ae88dc0b4b398650c92fd03c17e49fde47e72 Mon Sep 17 00:00:00 2001 From: Rafael Marinho Date: Fri, 3 Oct 2025 15:53:15 +0200 Subject: [PATCH 09/16] fix unit tests --- .../io/getstream/chat/java/models/MarkDeliveredOptions.java | 3 ++- .../java/io/getstream/chat/java/services/ChannelService.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/getstream/chat/java/models/MarkDeliveredOptions.java b/src/main/java/io/getstream/chat/java/models/MarkDeliveredOptions.java index 4af0c2886..ea3b700bb 100644 --- a/src/main/java/io/getstream/chat/java/models/MarkDeliveredOptions.java +++ b/src/main/java/io/getstream/chat/java/models/MarkDeliveredOptions.java @@ -33,6 +33,7 @@ public static class MarkDeliveredResponse extends StreamResponseObject {} public static class MarkDeliveredRequest extends StreamRequest { private MarkDeliveredOptions options; + private String userId; public MarkDeliveredRequest() {} @@ -55,7 +56,7 @@ public MarkDeliveredRequest userId(String userId) { @Override protected Call generateCall(Client client) { - return client.create(ChannelService.class).markChannelsDelivered(options); + return client.create(ChannelService.class).markChannelsDelivered(options, userId); } } diff --git a/src/main/java/io/getstream/chat/java/services/ChannelService.java b/src/main/java/io/getstream/chat/java/services/ChannelService.java index e83dd81d0..5139215b5 100644 --- a/src/main/java/io/getstream/chat/java/services/ChannelService.java +++ b/src/main/java/io/getstream/chat/java/services/ChannelService.java @@ -107,5 +107,6 @@ Call updateMemberPartial( @POST("channels/delivered") Call markChannelsDelivered( - @NotNull @Body MarkDeliveredOptions markDeliveredOptions); + @NotNull @Body MarkDeliveredOptions markDeliveredOptions, + @NotNull @Query("user_id") String userId); } From 29208a6c633920d6ac40f652bb08606c10e43ebf Mon Sep 17 00:00:00 2001 From: Rafael Marinho Date: Fri, 3 Oct 2025 16:17:07 +0200 Subject: [PATCH 10/16] fix unit tests --- .../java/models/MarkDeliveredOptions.java | 5 +--- .../chat/java/DeliveryReceiptsTest.java | 23 +++++++------------ 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/src/main/java/io/getstream/chat/java/models/MarkDeliveredOptions.java b/src/main/java/io/getstream/chat/java/models/MarkDeliveredOptions.java index ea3b700bb..8b58cc11b 100644 --- a/src/main/java/io/getstream/chat/java/models/MarkDeliveredOptions.java +++ b/src/main/java/io/getstream/chat/java/models/MarkDeliveredOptions.java @@ -47,10 +47,7 @@ public MarkDeliveredRequest options(MarkDeliveredOptions options) { } public MarkDeliveredRequest userId(String userId) { - if (this.options == null) { - this.options = new MarkDeliveredOptions(); - } - this.options.setUserId(userId); + this.userId = userId; return this; } diff --git a/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java b/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java index 980eab6ea..9f7272152 100644 --- a/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java +++ b/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java @@ -6,7 +6,6 @@ import io.getstream.chat.java.models.Message; import io.getstream.chat.java.models.Message.MessageRequestObject; import io.getstream.chat.java.models.Message.MessageType; -import io.getstream.chat.java.models.User; import java.util.Arrays; import java.util.List; import org.junit.jupiter.api.Assertions; @@ -38,17 +37,7 @@ void whenMarkingChannelsDelivered_thenNoException() throws StreamException { confirmation.setCid(testChannel.getCId()); confirmation.setId(message.getId()); - // Create mark delivered options with both user and userId - MarkDeliveredOptions options = new MarkDeliveredOptions(); - options.setLatestDeliveredMessages(Arrays.asList(confirmation)); - - // Set both user object and userId string - User user = new User(); - user.setId(testUserRequestObject.getId()); - options.setUser(user); - options.setUserId(testUserRequestObject.getId()); - - // Mark channels as delivered + // Mark channels as delivered using the fluent API MarkDeliveredOptions.MarkDeliveredResponse response = MarkDeliveredOptions.markChannelsDelivered(Arrays.asList(confirmation)) .userId(testUserRequestObject.getId()) @@ -80,9 +69,13 @@ void whenMarkingChannelsDeliveredWithOptions_thenNoException() throws StreamExce confirmation.setCid(testChannel.getCId()); confirmation.setId(message.getId()); - // Mark channels as delivered with user_id as parameter + // Create mark delivered options + MarkDeliveredOptions options = new MarkDeliveredOptions(); + options.setLatestDeliveredMessages(Arrays.asList(confirmation)); + + // Mark channels as delivered using the fluent API MarkDeliveredOptions.MarkDeliveredResponse response = - MarkDeliveredOptions.markChannelsDelivered(Arrays.asList(confirmation)) + MarkDeliveredOptions.markChannelsDelivered(options) .userId(testUserRequestObject.getId()) .request(); @@ -121,7 +114,7 @@ void whenMarkingChannelsDeliveredWithMultipleMessages_thenNoException() throws S createConfirmation(testChannel.getCId(), messages.get(0).getId()), createConfirmation(testChannel.getCId(), messages.get(1).getId())); - // Mark channels as delivered with user_id as parameter + // Mark channels as delivered using the fluent API MarkDeliveredOptions.MarkDeliveredResponse response = MarkDeliveredOptions.markChannelsDelivered(confirmations) .userId(testUserRequestObject.getId()) From e2f2e6f1a762fa729d22ba7e60128e9402694f57 Mon Sep 17 00:00:00 2001 From: Rafael Marinho Date: Sat, 4 Oct 2025 08:05:00 +0200 Subject: [PATCH 11/16] refactor --- .../getstream/chat/java/models/Channel.java | 32 +++++ .../java/models/MarkDeliveredOptions.java | 94 ------------- .../chat/java/services/ChannelService.java | 6 +- .../io/getstream/chat/java/ChannelTest.java | 7 + .../chat/java/DeliveryReceiptsTest.java | 133 ------------------ 5 files changed, 41 insertions(+), 231 deletions(-) delete mode 100644 src/main/java/io/getstream/chat/java/models/MarkDeliveredOptions.java delete mode 100644 src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java diff --git a/src/main/java/io/getstream/chat/java/models/Channel.java b/src/main/java/io/getstream/chat/java/models/Channel.java index 9156dcb5d..ef3dca903 100644 --- a/src/main/java/io/getstream/chat/java/models/Channel.java +++ b/src/main/java/io/getstream/chat/java/models/Channel.java @@ -17,6 +17,7 @@ import io.getstream.chat.java.models.Channel.ChannelTruncateRequestData.ChannelTruncateRequest; import io.getstream.chat.java.models.Channel.ChannelUnMuteRequestData.ChannelUnMuteRequest; import io.getstream.chat.java.models.Channel.ChannelUpdateRequestData.ChannelUpdateRequest; +import io.getstream.chat.java.models.Channel.MarkDeliveredRequestData.MarkDeliveredRequest; import io.getstream.chat.java.models.ChannelType.BlocklistBehavior; import io.getstream.chat.java.models.ChannelType.ChannelTypeWithCommands; import io.getstream.chat.java.models.Message.MessageRequestObject; @@ -1202,6 +1203,27 @@ protected Call generateCall(Client client) { } } + @Builder( + builderClassName = "MarkDeliveredRequest", + builderMethodName = "", + buildMethodName = "internalBuild") + public static class MarkDeliveredRequestData { + @Nullable + @JsonProperty("user_id") + private String userId; + + @Nullable + @JsonProperty("user") + private UserRequestObject user; + + public static class MarkDeliveredRequest extends StreamRequest { + @Override + protected Call generateCall(Client client) { + return client.create(ChannelService.class).markDelivered(this.internalBuild()); + } + } + } + @Data @NoArgsConstructor @EqualsAndHashCode(callSuper = true) @@ -1757,4 +1779,14 @@ public static ChannelMemberPartialUpdateRequest unarchive( @NotNull String type, @NotNull String id, @NotNull String userId) { return new ChannelMemberPartialUpdateRequest(type, id, userId).setValue("archived", false); } + + /** + * Creates a mark delivered request + * + * @return the created request + */ + @NotNull + public static MarkDeliveredRequest markDelivered() { + return new MarkDeliveredRequest(); + } } diff --git a/src/main/java/io/getstream/chat/java/models/MarkDeliveredOptions.java b/src/main/java/io/getstream/chat/java/models/MarkDeliveredOptions.java deleted file mode 100644 index 8b58cc11b..000000000 --- a/src/main/java/io/getstream/chat/java/models/MarkDeliveredOptions.java +++ /dev/null @@ -1,94 +0,0 @@ -package io.getstream.chat.java.models; - -import com.fasterxml.jackson.annotation.JsonProperty; -import io.getstream.chat.java.models.framework.StreamRequest; -import io.getstream.chat.java.models.framework.StreamResponseObject; -import io.getstream.chat.java.services.ChannelService; -import io.getstream.chat.java.services.framework.Client; -import java.util.List; -import lombok.*; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import retrofit2.Call; - -@Data -@NoArgsConstructor -public class MarkDeliveredOptions { - @NotNull - @JsonProperty("latest_delivered_messages") - private List latestDeliveredMessages; - - @Nullable - @JsonProperty("user") - private User user; - - @Nullable - @JsonProperty("user_id") - private String userId; - - @Data - @NoArgsConstructor - @EqualsAndHashCode(callSuper = true) - public static class MarkDeliveredResponse extends StreamResponseObject {} - - public static class MarkDeliveredRequest extends StreamRequest { - private MarkDeliveredOptions options; - private String userId; - - public MarkDeliveredRequest() {} - - public MarkDeliveredRequest(MarkDeliveredOptions options) { - this.options = options; - } - - public MarkDeliveredRequest options(MarkDeliveredOptions options) { - this.options = options; - return this; - } - - public MarkDeliveredRequest userId(String userId) { - this.userId = userId; - return this; - } - - @Override - protected Call generateCall(Client client) { - return client.create(ChannelService.class).markChannelsDelivered(options, userId); - } - } - - /** - * Creates a mark channels delivered request - * - * @return the created request - */ - @NotNull - public static MarkDeliveredRequest markChannelsDelivered() { - return new MarkDeliveredRequest(); - } - - /** - * Creates a mark channels delivered request with options - * - * @param options the mark delivered options - * @return the created request - */ - @NotNull - public static MarkDeliveredRequest markChannelsDelivered(MarkDeliveredOptions options) { - return new MarkDeliveredRequest(options); - } - - /** - * Creates a mark channels delivered request with a list of delivered message confirmations - * - * @param latestDeliveredMessages the list of delivered message confirmations - * @return the created request - */ - @NotNull - public static MarkDeliveredRequest markChannelsDelivered( - List latestDeliveredMessages) { - MarkDeliveredOptions options = new MarkDeliveredOptions(); - options.setLatestDeliveredMessages(latestDeliveredMessages); - return new MarkDeliveredRequest(options); - } -} diff --git a/src/main/java/io/getstream/chat/java/services/ChannelService.java b/src/main/java/io/getstream/chat/java/services/ChannelService.java index 5139215b5..a529254cc 100644 --- a/src/main/java/io/getstream/chat/java/services/ChannelService.java +++ b/src/main/java/io/getstream/chat/java/services/ChannelService.java @@ -2,7 +2,6 @@ import io.getstream.chat.java.models.Channel; import io.getstream.chat.java.models.Channel.*; -import io.getstream.chat.java.models.MarkDeliveredOptions; import io.getstream.chat.java.models.framework.StreamResponseObject; import io.getstream.chat.java.services.framework.ToJson; import org.jetbrains.annotations.NotNull; @@ -106,7 +105,6 @@ Call updateMemberPartial( @NotNull @Body ChannelMemberPartialUpdateRequestData updateMemberPartialRequestData); @POST("channels/delivered") - Call markChannelsDelivered( - @NotNull @Body MarkDeliveredOptions markDeliveredOptions, - @NotNull @Query("user_id") String userId); + Call markDelivered( + @NotNull @Body MarkDeliveredRequestData markDeliveredOptions); } diff --git a/src/test/java/io/getstream/chat/java/ChannelTest.java b/src/test/java/io/getstream/chat/java/ChannelTest.java index c63dccf6c..862a526bb 100644 --- a/src/test/java/io/getstream/chat/java/ChannelTest.java +++ b/src/test/java/io/getstream/chat/java/ChannelTest.java @@ -624,4 +624,11 @@ void whenPartialUpdateMember_thenNoException() { Assertions.assertEquals("updated_value1", updatedMember.getAdditionalFields().get("field1")); Assertions.assertEquals("value2", updatedMember.getAdditionalFields().get("field2")); } + + @DisplayName("Can mark messages delivered") + @Test + void whenMarkingDelivered_thenNoException() { + Assertions.assertDoesNotThrow( + () -> Channel.markDelivered().user(testUserRequestObject).request()); + } } diff --git a/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java b/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java deleted file mode 100644 index 9f7272152..000000000 --- a/src/test/java/io/getstream/chat/java/DeliveryReceiptsTest.java +++ /dev/null @@ -1,133 +0,0 @@ -package io.getstream.chat.java; - -import io.getstream.chat.java.exceptions.StreamException; -import io.getstream.chat.java.models.DeliveredMessageConfirmation; -import io.getstream.chat.java.models.MarkDeliveredOptions; -import io.getstream.chat.java.models.Message; -import io.getstream.chat.java.models.Message.MessageRequestObject; -import io.getstream.chat.java.models.Message.MessageType; -import java.util.Arrays; -import java.util.List; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; - -/** Tests for the delivery receipts functionality. */ -public class DeliveryReceiptsTest extends BasicTest { - - @DisplayName("Can mark channels as delivered") - @Test - void whenMarkingChannelsDelivered_thenNoException() throws StreamException { - // Send a test message first - MessageRequestObject messageRequest = - MessageRequestObject.builder() - .text("Test message for delivery receipts") - .userId(testUserRequestObject.getId()) - .type(MessageType.REGULAR) - .build(); - - Message message = - Message.send(testChannel.getType(), testChannel.getId()) - .message(messageRequest) - .request() - .getMessage(); - - // Create delivered message confirmation - DeliveredMessageConfirmation confirmation = new DeliveredMessageConfirmation(); - confirmation.setCid(testChannel.getCId()); - confirmation.setId(message.getId()); - - // Mark channels as delivered using the fluent API - MarkDeliveredOptions.MarkDeliveredResponse response = - MarkDeliveredOptions.markChannelsDelivered(Arrays.asList(confirmation)) - .userId(testUserRequestObject.getId()) - .request(); - - // Verify response is not null (successful call) - Assertions.assertNotNull(response); - } - - @DisplayName("Can mark channels as delivered with options") - @Test - void whenMarkingChannelsDeliveredWithOptions_thenNoException() throws StreamException { - // Send a test message first - MessageRequestObject messageRequest = - MessageRequestObject.builder() - .text("Test message for delivery receipts with options") - .userId(testUserRequestObject.getId()) - .type(MessageType.REGULAR) - .build(); - - Message message = - Message.send(testChannel.getType(), testChannel.getId()) - .message(messageRequest) - .request() - .getMessage(); - - // Create delivered message confirmation - DeliveredMessageConfirmation confirmation = new DeliveredMessageConfirmation(); - confirmation.setCid(testChannel.getCId()); - confirmation.setId(message.getId()); - - // Create mark delivered options - MarkDeliveredOptions options = new MarkDeliveredOptions(); - options.setLatestDeliveredMessages(Arrays.asList(confirmation)); - - // Mark channels as delivered using the fluent API - MarkDeliveredOptions.MarkDeliveredResponse response = - MarkDeliveredOptions.markChannelsDelivered(options) - .userId(testUserRequestObject.getId()) - .request(); - - // Verify response is not null (successful call) - Assertions.assertNotNull(response); - } - - @DisplayName("Can mark channels as delivered with multiple messages") - @Test - void whenMarkingChannelsDeliveredWithMultipleMessages_thenNoException() throws StreamException { - // Send multiple test messages - List messages = - Arrays.asList( - Message.send(testChannel.getType(), testChannel.getId()) - .message( - MessageRequestObject.builder() - .text("Test message 1") - .userId(testUserRequestObject.getId()) - .type(MessageType.REGULAR) - .build()) - .request() - .getMessage(), - Message.send(testChannel.getType(), testChannel.getId()) - .message( - MessageRequestObject.builder() - .text("Test message 2") - .userId(testUserRequestObject.getId()) - .type(MessageType.REGULAR) - .build()) - .request() - .getMessage()); - - // Create delivered message confirmations - List confirmations = - Arrays.asList( - createConfirmation(testChannel.getCId(), messages.get(0).getId()), - createConfirmation(testChannel.getCId(), messages.get(1).getId())); - - // Mark channels as delivered using the fluent API - MarkDeliveredOptions.MarkDeliveredResponse response = - MarkDeliveredOptions.markChannelsDelivered(confirmations) - .userId(testUserRequestObject.getId()) - .request(); - - // Verify response is not null (successful call) - Assertions.assertNotNull(response); - } - - private DeliveredMessageConfirmation createConfirmation(String cid, String messageId) { - DeliveredMessageConfirmation confirmation = new DeliveredMessageConfirmation(); - confirmation.setCid(cid); - confirmation.setId(messageId); - return confirmation; - } -} From 37bf5de615f19155196b495681c2c16cf6202323 Mon Sep 17 00:00:00 2001 From: Rafael Marinho Date: Sat, 4 Oct 2025 08:20:26 +0200 Subject: [PATCH 12/16] add user_id to query --- src/main/java/io/getstream/chat/java/models/Channel.java | 2 +- .../java/io/getstream/chat/java/services/ChannelService.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/getstream/chat/java/models/Channel.java b/src/main/java/io/getstream/chat/java/models/Channel.java index ef3dca903..e3f120671 100644 --- a/src/main/java/io/getstream/chat/java/models/Channel.java +++ b/src/main/java/io/getstream/chat/java/models/Channel.java @@ -1219,7 +1219,7 @@ public static class MarkDeliveredRequestData { public static class MarkDeliveredRequest extends StreamRequest { @Override protected Call generateCall(Client client) { - return client.create(ChannelService.class).markDelivered(this.internalBuild()); + return client.create(ChannelService.class).markDelivered(this.internalBuild(), userId); } } } diff --git a/src/main/java/io/getstream/chat/java/services/ChannelService.java b/src/main/java/io/getstream/chat/java/services/ChannelService.java index a529254cc..55ca0ea75 100644 --- a/src/main/java/io/getstream/chat/java/services/ChannelService.java +++ b/src/main/java/io/getstream/chat/java/services/ChannelService.java @@ -106,5 +106,6 @@ Call updateMemberPartial( @POST("channels/delivered") Call markDelivered( - @NotNull @Body MarkDeliveredRequestData markDeliveredOptions); + @NotNull @Body MarkDeliveredRequestData markDeliveredOptions, + @Query("user_id") String userId); } From 3fe95ccc500eb2701991870977de4a7d6e15bfd2 Mon Sep 17 00:00:00 2001 From: Rafael Marinho Date: Sat, 4 Oct 2025 08:28:06 +0200 Subject: [PATCH 13/16] fix --- src/test/java/io/getstream/chat/java/ChannelTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/io/getstream/chat/java/ChannelTest.java b/src/test/java/io/getstream/chat/java/ChannelTest.java index 862a526bb..a96cec908 100644 --- a/src/test/java/io/getstream/chat/java/ChannelTest.java +++ b/src/test/java/io/getstream/chat/java/ChannelTest.java @@ -629,6 +629,6 @@ void whenPartialUpdateMember_thenNoException() { @Test void whenMarkingDelivered_thenNoException() { Assertions.assertDoesNotThrow( - () -> Channel.markDelivered().user(testUserRequestObject).request()); + () -> Channel.markDelivered().userId(testUserRequestObject.getId()).request()); } } From 7e6cba998da63d84e07f353c500d5316f5c8155c Mon Sep 17 00:00:00 2001 From: Rafael Marinho Date: Sat, 4 Oct 2025 08:38:28 +0200 Subject: [PATCH 14/16] add payload --- .../io/getstream/chat/java/models/Channel.java | 17 +++++++++++++++++ .../io/getstream/chat/java/ChannelTest.java | 15 ++++++++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/getstream/chat/java/models/Channel.java b/src/main/java/io/getstream/chat/java/models/Channel.java index e3f120671..08c6cb666 100644 --- a/src/main/java/io/getstream/chat/java/models/Channel.java +++ b/src/main/java/io/getstream/chat/java/models/Channel.java @@ -1216,6 +1216,10 @@ public static class MarkDeliveredRequestData { @JsonProperty("user") private UserRequestObject user; + @Nullable + @JsonProperty("last_delivered_messages") + private List lastDeliveredMessages; + public static class MarkDeliveredRequest extends StreamRequest { @Override protected Call generateCall(Client client) { @@ -1514,6 +1518,19 @@ public static class ChannelPartialUpdateResponse extends StreamResponseObject { private List members; } + @Data + @NoArgsConstructor + @AllArgsConstructor + public static class LastDeliveredMessage { + @NotNull + @JsonProperty("cid") + private String cid; + + @NotNull + @JsonProperty("message_id") + private String messageId; + } + /** * Creates a get or create request * diff --git a/src/test/java/io/getstream/chat/java/ChannelTest.java b/src/test/java/io/getstream/chat/java/ChannelTest.java index a96cec908..1d514a0eb 100644 --- a/src/test/java/io/getstream/chat/java/ChannelTest.java +++ b/src/test/java/io/getstream/chat/java/ChannelTest.java @@ -625,10 +625,19 @@ void whenPartialUpdateMember_thenNoException() { Assertions.assertEquals("value2", updatedMember.getAdditionalFields().get("field2")); } - @DisplayName("Can mark messages delivered") + @DisplayName("Can mark messages delivered with last delivered messages") @Test - void whenMarkingDelivered_thenNoException() { + void whenMarkingDeliveredWithLastDeliveredMessages_thenNoException() { + var lastDeliveredMessages = + List.of( + new Channel.LastDeliveredMessage("messaging:test-channel-1", "message-1"), + new Channel.LastDeliveredMessage("messaging:test-channel-2", "message-2")); + Assertions.assertDoesNotThrow( - () -> Channel.markDelivered().userId(testUserRequestObject.getId()).request()); + () -> + Channel.markDelivered() + .userId(testUserRequestObject.getId()) + .lastDeliveredMessages(lastDeliveredMessages) + .request()); } } From 60102d496fd71df5f4885524056471489e12a140 Mon Sep 17 00:00:00 2001 From: Rafael Marinho Date: Sat, 4 Oct 2025 09:01:47 +0200 Subject: [PATCH 15/16] fix payload --- src/main/java/io/getstream/chat/java/models/Channel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/getstream/chat/java/models/Channel.java b/src/main/java/io/getstream/chat/java/models/Channel.java index 08c6cb666..c81362f05 100644 --- a/src/main/java/io/getstream/chat/java/models/Channel.java +++ b/src/main/java/io/getstream/chat/java/models/Channel.java @@ -1527,7 +1527,7 @@ public static class LastDeliveredMessage { private String cid; @NotNull - @JsonProperty("message_id") + @JsonProperty("id") private String messageId; } From d45e5a161abcf6335312b1f230d94bac991b2f5f Mon Sep 17 00:00:00 2001 From: Rafael Marinho Date: Mon, 6 Oct 2025 08:46:57 +0200 Subject: [PATCH 16/16] fix payload name --- .../java/io/getstream/chat/java/models/Channel.java | 6 +++--- src/test/java/io/getstream/chat/java/ChannelTest.java | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/io/getstream/chat/java/models/Channel.java b/src/main/java/io/getstream/chat/java/models/Channel.java index c81362f05..f24e27087 100644 --- a/src/main/java/io/getstream/chat/java/models/Channel.java +++ b/src/main/java/io/getstream/chat/java/models/Channel.java @@ -1217,8 +1217,8 @@ public static class MarkDeliveredRequestData { private UserRequestObject user; @Nullable - @JsonProperty("last_delivered_messages") - private List lastDeliveredMessages; + @JsonProperty("latest_delivered_messages") + private List latestDeliveredMessages; public static class MarkDeliveredRequest extends StreamRequest { @Override @@ -1521,7 +1521,7 @@ public static class ChannelPartialUpdateResponse extends StreamResponseObject { @Data @NoArgsConstructor @AllArgsConstructor - public static class LastDeliveredMessage { + public static class LatestDeliveredMessage { @NotNull @JsonProperty("cid") private String cid; diff --git a/src/test/java/io/getstream/chat/java/ChannelTest.java b/src/test/java/io/getstream/chat/java/ChannelTest.java index 1d514a0eb..373c4dc5a 100644 --- a/src/test/java/io/getstream/chat/java/ChannelTest.java +++ b/src/test/java/io/getstream/chat/java/ChannelTest.java @@ -625,19 +625,19 @@ void whenPartialUpdateMember_thenNoException() { Assertions.assertEquals("value2", updatedMember.getAdditionalFields().get("field2")); } - @DisplayName("Can mark messages delivered with last delivered messages") + @DisplayName("Can mark messages delivered with latest delivered messages") @Test void whenMarkingDeliveredWithLastDeliveredMessages_thenNoException() { - var lastDeliveredMessages = + var latestDeliveredMessages = List.of( - new Channel.LastDeliveredMessage("messaging:test-channel-1", "message-1"), - new Channel.LastDeliveredMessage("messaging:test-channel-2", "message-2")); + new Channel.LatestDeliveredMessage("messaging:test-channel-1", "message-1"), + new Channel.LatestDeliveredMessage("messaging:test-channel-2", "message-2")); Assertions.assertDoesNotThrow( () -> Channel.markDelivered() .userId(testUserRequestObject.getId()) - .lastDeliveredMessages(lastDeliveredMessages) + .latestDeliveredMessages(latestDeliveredMessages) .request()); } }