From aae5ea5d2f902ab4fd31e8e9066a8c57436b024f Mon Sep 17 00:00:00 2001 From: Aditya Agarwal Date: Wed, 26 Nov 2025 17:46:33 +0100 Subject: [PATCH 1/2] chore: add activity copy limit to follow --- .../getstream/core/models/FollowRelation.java | 28 +++++++++++++++++-- .../io/getstream/client/BatchClientTest.java | 13 +++++++++ 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/getstream/core/models/FollowRelation.java b/src/main/java/io/getstream/core/models/FollowRelation.java index 7c0872d5..0e18a2f9 100644 --- a/src/main/java/io/getstream/core/models/FollowRelation.java +++ b/src/main/java/io/getstream/core/models/FollowRelation.java @@ -1,9 +1,11 @@ package io.getstream.core.models; +import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.common.base.MoreObjects; import java.util.Objects; @@ -12,15 +14,26 @@ public final class FollowRelation { private final String source; private final String target; + private final Integer activityCopyLimit; @JsonCreator public FollowRelation( - @JsonProperty("feed_id") String source, @JsonProperty("target_id") String target) { + @JsonProperty("feed_id") String source, + @JsonProperty("target_id") String target, + @JsonProperty("activity_copy_limit") Integer activityCopyLimit) { checkNotNull(source, "FollowRelation 'source' field required"); checkNotNull(target, "FollowRelation 'target' field required"); + if (activityCopyLimit != null) { + checkArgument(activityCopyLimit >= 0, "Activity copy limit must be non negative"); + } this.source = source; this.target = target; + this.activityCopyLimit = activityCopyLimit; + } + + public FollowRelation(String source, String target) { + this(source, target, null); } public String getSource() { @@ -31,17 +44,25 @@ public String getTarget() { return this.target; } + @JsonProperty("activity_copy_limit") + @JsonInclude(JsonInclude.Include.NON_NULL) + public Integer getActivityCopyLimit() { + return this.activityCopyLimit; + } + @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; FollowRelation that = (FollowRelation) o; - return Objects.equals(source, that.source) && Objects.equals(target, that.target); + return Objects.equals(source, that.source) + && Objects.equals(target, that.target) + && Objects.equals(activityCopyLimit, that.activityCopyLimit); } @Override public int hashCode() { - return Objects.hash(source, target); + return Objects.hash(source, target, activityCopyLimit); } @Override @@ -49,6 +70,7 @@ public String toString() { return MoreObjects.toStringHelper(this) .add("source", this.source) .add("target", this.target) + .add("activityCopyLimit", this.activityCopyLimit) .toString(); } } diff --git a/src/test/java/io/getstream/client/BatchClientTest.java b/src/test/java/io/getstream/client/BatchClientTest.java index 66c9bd15..7a88f8ed 100644 --- a/src/test/java/io/getstream/client/BatchClientTest.java +++ b/src/test/java/io/getstream/client/BatchClientTest.java @@ -44,6 +44,19 @@ public void followMany() throws Exception { client.followMany(follows.toArray(new FollowRelation[0])).join(); } + @Test + public void followManyWithPerRelationActivityCopyLimit() throws Exception { + BatchClient client = Client.builder(apiKey, secret).build().batch(); + // Test per-relationship activity_copy_limit + client + .followMany( + new FollowRelation[] { + new FollowRelation("flat:1", "flat:2", 10), + new FollowRelation("aggregated:1", "flat:1", 20) + }) + .join(); + } + @Test public void unfollowMany() throws Exception { BatchClient client = Client.builder(apiKey, secret).build().batch(); From 93a7d56bc2bb0730b54f7cc218aa57ddccb5689b Mon Sep 17 00:00:00 2001 From: Aditya Agarwal Date: Wed, 26 Nov 2025 17:49:50 +0100 Subject: [PATCH 2/2] chore: add activity copy limit to follow --- src/main/java/io/getstream/core/models/FollowRelation.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/getstream/core/models/FollowRelation.java b/src/main/java/io/getstream/core/models/FollowRelation.java index 0e18a2f9..8646722d 100644 --- a/src/main/java/io/getstream/core/models/FollowRelation.java +++ b/src/main/java/io/getstream/core/models/FollowRelation.java @@ -32,7 +32,9 @@ public FollowRelation( this.activityCopyLimit = activityCopyLimit; } - public FollowRelation(String source, String target) { + public FollowRelation( + @JsonProperty("feed_id") String source, + @JsonProperty("target_id") String target) { this(source, target, null); }