Skip to content

Commit e5e52ad

Browse files
rafaelmf3Rafael Marinho
andauthored
feat[CHA-1223]: support delivery receipts (#197)
* feat[CHA-1223]: support delivery receipts * clean up * fix unit test * fix unit test * fix unit tests * fix unit test * fix unit tests * fix unit tests * fix unit tests * fix unit tests * refactor * add user_id to query * fix * add payload * fix payload * fix payload name --------- Co-authored-by: Rafael Marinho <rafael.marinho@getstream.io>
1 parent 7a1c402 commit e5e52ad

File tree

4 files changed

+92
-0
lines changed

4 files changed

+92
-0
lines changed

src/main/java/io/getstream/chat/java/models/Channel.java

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import io.getstream.chat.java.models.Channel.ChannelTruncateRequestData.ChannelTruncateRequest;
1818
import io.getstream.chat.java.models.Channel.ChannelUnMuteRequestData.ChannelUnMuteRequest;
1919
import io.getstream.chat.java.models.Channel.ChannelUpdateRequestData.ChannelUpdateRequest;
20+
import io.getstream.chat.java.models.Channel.MarkDeliveredRequestData.MarkDeliveredRequest;
2021
import io.getstream.chat.java.models.ChannelType.BlocklistBehavior;
2122
import io.getstream.chat.java.models.ChannelType.ChannelTypeWithCommands;
2223
import io.getstream.chat.java.models.Message.MessageRequestObject;
@@ -1202,6 +1203,31 @@ protected Call<ChannelMemberResponse> generateCall(Client client) {
12021203
}
12031204
}
12041205

1206+
@Builder(
1207+
builderClassName = "MarkDeliveredRequest",
1208+
builderMethodName = "",
1209+
buildMethodName = "internalBuild")
1210+
public static class MarkDeliveredRequestData {
1211+
@Nullable
1212+
@JsonProperty("user_id")
1213+
private String userId;
1214+
1215+
@Nullable
1216+
@JsonProperty("user")
1217+
private UserRequestObject user;
1218+
1219+
@Nullable
1220+
@JsonProperty("latest_delivered_messages")
1221+
private List<LatestDeliveredMessage> latestDeliveredMessages;
1222+
1223+
public static class MarkDeliveredRequest extends StreamRequest<StreamResponseObject> {
1224+
@Override
1225+
protected Call<StreamResponseObject> generateCall(Client client) {
1226+
return client.create(ChannelService.class).markDelivered(this.internalBuild(), userId);
1227+
}
1228+
}
1229+
}
1230+
12051231
@Data
12061232
@NoArgsConstructor
12071233
@EqualsAndHashCode(callSuper = true)
@@ -1492,6 +1518,19 @@ public static class ChannelPartialUpdateResponse extends StreamResponseObject {
14921518
private List<ChannelMember> members;
14931519
}
14941520

1521+
@Data
1522+
@NoArgsConstructor
1523+
@AllArgsConstructor
1524+
public static class LatestDeliveredMessage {
1525+
@NotNull
1526+
@JsonProperty("cid")
1527+
private String cid;
1528+
1529+
@NotNull
1530+
@JsonProperty("id")
1531+
private String messageId;
1532+
}
1533+
14951534
/**
14961535
* Creates a get or create request
14971536
*
@@ -1757,4 +1796,14 @@ public static ChannelMemberPartialUpdateRequest unarchive(
17571796
@NotNull String type, @NotNull String id, @NotNull String userId) {
17581797
return new ChannelMemberPartialUpdateRequest(type, id, userId).setValue("archived", false);
17591798
}
1799+
1800+
/**
1801+
* Creates a mark delivered request
1802+
*
1803+
* @return the created request
1804+
*/
1805+
@NotNull
1806+
public static MarkDeliveredRequest markDelivered() {
1807+
return new MarkDeliveredRequest();
1808+
}
17601809
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package io.getstream.chat.java.models;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import lombok.*;
5+
import org.jetbrains.annotations.NotNull;
6+
import org.jetbrains.annotations.Nullable;
7+
8+
@Data
9+
@NoArgsConstructor
10+
public class DeliveredMessageConfirmation {
11+
@NotNull
12+
@JsonProperty("cid")
13+
private String cid;
14+
15+
@NotNull
16+
@JsonProperty("id")
17+
private String id;
18+
19+
@Nullable
20+
@JsonProperty("parent_id")
21+
private String parentId;
22+
}

src/main/java/io/getstream/chat/java/services/ChannelService.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,4 +103,9 @@ Call<ChannelMemberResponse> updateMemberPartial(
103103
@NotNull @Path("id") String channelId,
104104
@NotNull @Path("user_id") String userId,
105105
@NotNull @Body ChannelMemberPartialUpdateRequestData updateMemberPartialRequestData);
106+
107+
@POST("channels/delivered")
108+
Call<StreamResponseObject> markDelivered(
109+
@NotNull @Body MarkDeliveredRequestData markDeliveredOptions,
110+
@Query("user_id") String userId);
106111
}

src/test/java/io/getstream/chat/java/ChannelTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -624,4 +624,20 @@ void whenPartialUpdateMember_thenNoException() {
624624
Assertions.assertEquals("updated_value1", updatedMember.getAdditionalFields().get("field1"));
625625
Assertions.assertEquals("value2", updatedMember.getAdditionalFields().get("field2"));
626626
}
627+
628+
@DisplayName("Can mark messages delivered with latest delivered messages")
629+
@Test
630+
void whenMarkingDeliveredWithLastDeliveredMessages_thenNoException() {
631+
var latestDeliveredMessages =
632+
List.of(
633+
new Channel.LatestDeliveredMessage("messaging:test-channel-1", "message-1"),
634+
new Channel.LatestDeliveredMessage("messaging:test-channel-2", "message-2"));
635+
636+
Assertions.assertDoesNotThrow(
637+
() ->
638+
Channel.markDelivered()
639+
.userId(testUserRequestObject.getId())
640+
.latestDeliveredMessages(latestDeliveredMessages)
641+
.request());
642+
}
627643
}

0 commit comments

Comments
 (0)