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 ea31bc30..78cb4344 100644 --- a/src/main/java/io/getstream/chat/java/models/Channel.java +++ b/src/main/java/io/getstream/chat/java/models/Channel.java @@ -601,6 +601,10 @@ public static class ChannelUpdateRequestData { @JsonProperty("hide_history") private Boolean hideHistory; + @Nullable + @JsonProperty("hide_history_before") + private Date hideHistoryBefore; + @Nullable @JsonProperty("data") private ChannelRequestObject data; diff --git a/src/test/java/io/getstream/chat/java/ChannelTest.java b/src/test/java/io/getstream/chat/java/ChannelTest.java index 373c4dc5..8cff6063 100644 --- a/src/test/java/io/getstream/chat/java/ChannelTest.java +++ b/src/test/java/io/getstream/chat/java/ChannelTest.java @@ -8,9 +8,13 @@ import io.getstream.chat.java.models.Sort.Direction; import io.getstream.chat.java.models.User; import io.getstream.chat.java.models.User.ChannelMute; +import io.getstream.chat.java.models.User.UserRequestObject; import java.util.Arrays; +import java.util.Calendar; import java.util.Date; +import java.util.GregorianCalendar; import java.util.List; +import java.util.TimeZone; import java.util.stream.Collectors; import org.apache.commons.lang3.RandomStringUtils; import org.junit.jupiter.api.Assertions; @@ -640,4 +644,47 @@ void whenMarkingDeliveredWithLastDeliveredMessages_thenNoException() { .latestDeliveredMessages(latestDeliveredMessages) .request()); } + + @DisplayName("hide_messages_before is set when adding member with hide_history_before") + @Test + void whenAddingMemberWithHideHistoryBefore_thenHideMessagesBeforeIsSet() { + // Create new test user + UserRequestObject newMember = + UserRequestObject.builder() + .id(RandomStringUtils.randomAlphabetic(10)) + .name("New Member 1") + .build(); + + Assertions.assertDoesNotThrow(() -> User.upsert().user(newMember).request()); + + // Create test channel + Channel channel = Assertions.assertDoesNotThrow(() -> createRandomChannel()).getChannel(); + + // Create a static timestamp for hide_history_before + Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC")); + calendar.set(2025, Calendar.JANUARY, 15, 10, 30, 0); + calendar.set(Calendar.MILLISECOND, 0); + Date hideBeforeTimestamp = calendar.getTime(); + + // Add ember with hide_history_before + Assertions.assertDoesNotThrow( + () -> + Channel.update(channel.getType(), channel.getId()) + .addMember(newMember.getId()) + .hideHistoryBefore(hideBeforeTimestamp) + .request()); + + // Query channel with state for newMember - should have hide_messages_before set + String userToken = User.createToken(newMember.getId(), null, null); + ChannelGetResponse channelResponse = + Assertions.assertDoesNotThrow( + () -> + Channel.getOrCreate(channel.getType(), channel.getId()) + .state(true) + .withUserToken(userToken) + .request()); + + Assertions.assertNotNull(channelResponse.getHideMessagesBefore()); + Assertions.assertEquals(hideBeforeTimestamp, channelResponse.getHideMessagesBefore()); + } }