Skip to content

Commit f656c31

Browse files
feat: [CHA-1699] add Future Channel Bans support
- Add banFromFutureChannels field to UserBanRequestData - Add removeFutureChannelsBan method and parameter to UserUnbanRequest - Add FutureChannelBan class for query response - Add UserQueryFutureChannelBansRequest and UserQueryFutureChannelBansResponse - Add queryFutureChannelBans factory method and service endpoint
1 parent c9979b5 commit f656c31

2 files changed

Lines changed: 94 additions & 2 deletions

File tree

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

Lines changed: 88 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import io.getstream.chat.java.models.User.UserMuteRequestData.UserMuteRequest;
1616
import io.getstream.chat.java.models.User.UserPartialUpdateRequestData.UserPartialUpdateRequest;
1717
import io.getstream.chat.java.models.User.UserQueryBannedRequestData.UserQueryBannedRequest;
18+
import io.getstream.chat.java.models.User.UserQueryFutureChannelBansRequestData.UserQueryFutureChannelBansRequest;
1819
import io.getstream.chat.java.models.User.UserReactivateRequestData.UserReactivateRequest;
1920
import io.getstream.chat.java.models.User.UserUnmuteRequestData.UserUnmuteRequest;
2021
import io.getstream.chat.java.models.User.UserUpsertRequestData.UserUpsertRequest;
@@ -214,6 +215,30 @@ public static class Ban {
214215
private Date createdAt;
215216
}
216217

218+
@Data
219+
@NoArgsConstructor
220+
public static class FutureChannelBan {
221+
@Nullable
222+
@JsonProperty("user")
223+
private User user;
224+
225+
@Nullable
226+
@JsonProperty("expires")
227+
private Date expires;
228+
229+
@Nullable
230+
@JsonProperty("reason")
231+
private String reason;
232+
233+
@Nullable
234+
@JsonProperty("shadow")
235+
private Boolean shadow;
236+
237+
@NotNull
238+
@JsonProperty("created_at")
239+
private Date createdAt;
240+
}
241+
217242
@Data
218243
@NoArgsConstructor
219244
public static class OwnUser {
@@ -799,6 +824,10 @@ public static class UserBanRequestData {
799824
@JsonProperty("user")
800825
private UserRequestObject user;
801826

827+
@Nullable
828+
@JsonProperty("ban_from_future_channels")
829+
private Boolean banFromFutureChannels;
830+
802831
public static class UserBanRequest extends StreamRequest<StreamResponseObject> {
803832
@Override
804833
protected Call<StreamResponseObject> generateCall(Client client) {
@@ -1078,6 +1107,8 @@ public static class UserUnbanRequest extends StreamRequest<StreamResponseObject>
10781107

10791108
@Nullable private Boolean shadow;
10801109

1110+
@Nullable private Boolean removeFutureChannelsBan;
1111+
10811112
@NotNull
10821113
public UserUnbanRequest type(@NotNull String type) {
10831114
this.type = type;
@@ -1096,9 +1127,15 @@ public UserUnbanRequest shadow(@NotNull Boolean shadow) {
10961127
return this;
10971128
}
10981129

1130+
@NotNull
1131+
public UserUnbanRequest removeFutureChannelsBan(@NotNull Boolean removeFutureChannelsBan) {
1132+
this.removeFutureChannelsBan = removeFutureChannelsBan;
1133+
return this;
1134+
}
1135+
10991136
@Override
11001137
protected Call<StreamResponseObject> generateCall(Client client) {
1101-
return client.create(UserService.class).unban(targetUserId, type, id, shadow);
1138+
return client.create(UserService.class).unban(targetUserId, type, id, shadow, removeFutureChannelsBan);
11021139
}
11031140
}
11041141

@@ -1171,6 +1208,46 @@ public static class UserQueryBannedResponse extends StreamResponseObject {
11711208
private List<Ban> bans;
11721209
}
11731210

1211+
@Builder(
1212+
builderClassName = "UserQueryFutureChannelBansRequest",
1213+
builderMethodName = "",
1214+
buildMethodName = "internalBuild")
1215+
@Getter
1216+
@EqualsAndHashCode
1217+
public static class UserQueryFutureChannelBansRequestData {
1218+
@Nullable
1219+
@JsonProperty("user_id")
1220+
private String userId;
1221+
1222+
@Nullable
1223+
@JsonProperty("exclude_expired_bans")
1224+
private Boolean excludeExpiredBans;
1225+
1226+
@Nullable
1227+
@JsonProperty("limit")
1228+
private Integer limit;
1229+
1230+
@Nullable
1231+
@JsonProperty("offset")
1232+
private Integer offset;
1233+
1234+
public static class UserQueryFutureChannelBansRequest extends StreamRequest<UserQueryFutureChannelBansResponse> {
1235+
@Override
1236+
protected Call<UserQueryFutureChannelBansResponse> generateCall(Client client) {
1237+
return client.create(UserService.class).queryFutureChannelBans(this.internalBuild());
1238+
}
1239+
}
1240+
}
1241+
1242+
@Data
1243+
@NoArgsConstructor
1244+
@EqualsAndHashCode(callSuper = true)
1245+
public static class UserQueryFutureChannelBansResponse extends StreamResponseObject {
1246+
@NotNull
1247+
@JsonProperty("bans")
1248+
private List<FutureChannelBan> bans;
1249+
}
1250+
11741251
@Data
11751252
@NoArgsConstructor
11761253
@EqualsAndHashCode(callSuper = true)
@@ -1305,6 +1382,16 @@ public static UserQueryBannedRequest queryBanned() {
13051382
return new UserQueryBannedRequest();
13061383
}
13071384

1385+
/**
1386+
* Creates a query future channel bans request
1387+
*
1388+
* @return the created request
1389+
*/
1390+
@NotNull
1391+
public static UserQueryFutureChannelBansRequest queryFutureChannelBans() {
1392+
return new UserQueryFutureChannelBansRequest();
1393+
}
1394+
13081395
/**
13091396
* Creates a deactivate request
13101397
*

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,5 +65,10 @@ Call<StreamResponseObject> unban(
6565
@NotNull @Query("target_user_id") String targetUserId,
6666
@Nullable @Query("type") String channelType,
6767
@Nullable @Query("id") String channelId,
68-
@Nullable @Query("shadow") Boolean shadow);
68+
@Nullable @Query("shadow") Boolean shadow,
69+
@Nullable @Query("remove_future_channels_ban") Boolean removeFutureChannelsBan);
70+
71+
@GET("query_future_channel_bans")
72+
Call<UserQueryFutureChannelBansResponse> queryFutureChannelBans(
73+
@NotNull @ToJson @Query("payload") UserQueryFutureChannelBansRequestData requestData);
6974
}

0 commit comments

Comments
 (0)