diff --git a/src/main/java/io/getstream/chat/java/models/User.java b/src/main/java/io/getstream/chat/java/models/User.java index 622db2c4..27fa608e 100644 --- a/src/main/java/io/getstream/chat/java/models/User.java +++ b/src/main/java/io/getstream/chat/java/models/User.java @@ -15,6 +15,7 @@ import io.getstream.chat.java.models.User.UserMuteRequestData.UserMuteRequest; import io.getstream.chat.java.models.User.UserPartialUpdateRequestData.UserPartialUpdateRequest; import io.getstream.chat.java.models.User.UserQueryBannedRequestData.UserQueryBannedRequest; +import io.getstream.chat.java.models.User.UserQueryFutureChannelBansRequestData.UserQueryFutureChannelBansRequest; import io.getstream.chat.java.models.User.UserReactivateRequestData.UserReactivateRequest; import io.getstream.chat.java.models.User.UserUnmuteRequestData.UserUnmuteRequest; import io.getstream.chat.java.models.User.UserUpsertRequestData.UserUpsertRequest; @@ -214,6 +215,30 @@ public static class Ban { private Date createdAt; } + @Data + @NoArgsConstructor + public static class FutureChannelBan { + @Nullable + @JsonProperty("user") + private User user; + + @Nullable + @JsonProperty("expires") + private Date expires; + + @Nullable + @JsonProperty("reason") + private String reason; + + @Nullable + @JsonProperty("shadow") + private Boolean shadow; + + @NotNull + @JsonProperty("created_at") + private Date createdAt; + } + @Data @NoArgsConstructor public static class OwnUser { @@ -799,6 +824,10 @@ public static class UserBanRequestData { @JsonProperty("user") private UserRequestObject user; + @Nullable + @JsonProperty("ban_from_future_channels") + private Boolean banFromFutureChannels; + public static class UserBanRequest extends StreamRequest { @Override protected Call generateCall(Client client) { @@ -1078,6 +1107,8 @@ public static class UserUnbanRequest extends StreamRequest @Nullable private Boolean shadow; + @Nullable private Boolean removeFutureChannelsBan; + @NotNull public UserUnbanRequest type(@NotNull String type) { this.type = type; @@ -1096,9 +1127,17 @@ public UserUnbanRequest shadow(@NotNull Boolean shadow) { return this; } + @NotNull + public UserUnbanRequest removeFutureChannelsBan(@NotNull Boolean removeFutureChannelsBan) { + this.removeFutureChannelsBan = removeFutureChannelsBan; + return this; + } + @Override protected Call generateCall(Client client) { - return client.create(UserService.class).unban(targetUserId, type, id, shadow); + return client + .create(UserService.class) + .unban(targetUserId, type, id, shadow, removeFutureChannelsBan); } } @@ -1171,6 +1210,47 @@ public static class UserQueryBannedResponse extends StreamResponseObject { private List bans; } + @Builder( + builderClassName = "UserQueryFutureChannelBansRequest", + builderMethodName = "", + buildMethodName = "internalBuild") + @Getter + @EqualsAndHashCode + public static class UserQueryFutureChannelBansRequestData { + @Nullable + @JsonProperty("user_id") + private String userId; + + @Nullable + @JsonProperty("exclude_expired_bans") + private Boolean excludeExpiredBans; + + @Nullable + @JsonProperty("limit") + private Integer limit; + + @Nullable + @JsonProperty("offset") + private Integer offset; + + public static class UserQueryFutureChannelBansRequest + extends StreamRequest { + @Override + protected Call generateCall(Client client) { + return client.create(UserService.class).queryFutureChannelBans(this.internalBuild()); + } + } + } + + @Data + @NoArgsConstructor + @EqualsAndHashCode(callSuper = true) + public static class UserQueryFutureChannelBansResponse extends StreamResponseObject { + @NotNull + @JsonProperty("bans") + private List bans; + } + @Data @NoArgsConstructor @EqualsAndHashCode(callSuper = true) @@ -1305,6 +1385,16 @@ public static UserQueryBannedRequest queryBanned() { return new UserQueryBannedRequest(); } + /** + * Creates a query future channel bans request + * + * @return the created request + */ + @NotNull + public static UserQueryFutureChannelBansRequest queryFutureChannelBans() { + return new UserQueryFutureChannelBansRequest(); + } + /** * Creates a deactivate request * diff --git a/src/main/java/io/getstream/chat/java/services/UserService.java b/src/main/java/io/getstream/chat/java/services/UserService.java index d6032e30..e01d6725 100644 --- a/src/main/java/io/getstream/chat/java/services/UserService.java +++ b/src/main/java/io/getstream/chat/java/services/UserService.java @@ -65,5 +65,10 @@ Call unban( @NotNull @Query("target_user_id") String targetUserId, @Nullable @Query("type") String channelType, @Nullable @Query("id") String channelId, - @Nullable @Query("shadow") Boolean shadow); + @Nullable @Query("shadow") Boolean shadow, + @Nullable @Query("remove_future_channels_ban") Boolean removeFutureChannelsBan); + + @GET("query_future_channel_bans") + Call queryFutureChannelBans( + @NotNull @ToJson @Query("payload") UserQueryFutureChannelBansRequestData requestData); }