Skip to content

Commit 6c1922c

Browse files
authored
feat: add id based to target update (#90)
1 parent e0d9c52 commit 6c1922c

File tree

3 files changed

+40
-2
lines changed

3 files changed

+40
-2
lines changed

src/IStreamFeed.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,5 +109,15 @@ Task<UpdateToTargetsResponse> UpdateActivityToTargetsAsync(ForeignIdTime foreign
109109
IEnumerable<string> adds = null,
110110
IEnumerable<string> newTargets = null,
111111
IEnumerable<string> removed = null);
112+
113+
/// <summary>
114+
/// Updates the "to" targets for the provided activity, with the options passed
115+
/// as argument for replacing, adding, or removing to targets.
116+
/// </summary>
117+
/// <remarks>https://getstream.io/activity-feeds/docs/dotnet-csharp/feeds_101/?language=csharp</remarks>
118+
Task<UpdateToTargetsResponse> UpdateActivityToTargetsAsync(string id,
119+
IEnumerable<string> adds = null,
120+
IEnumerable<string> newTargets = null,
121+
IEnumerable<string> removed = null);
112122
}
113123
}

src/StreamFeed.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,34 @@ public async Task<GenericGetResponse<Activity>> GetActivitiesAsync(int offset =
126126
throw StreamException.FromResponse(response);
127127
}
128128

129+
public async Task<UpdateToTargetsResponse> UpdateActivityToTargetsAsync(string id,
130+
IEnumerable<string> adds = null,
131+
IEnumerable<string> newTargets = null,
132+
IEnumerable<string> removed = null)
133+
{
134+
adds?.ForEach(FeedIdValidator.ThrowIfFeedIdIsInvalid);
135+
newTargets?.ForEach(FeedIdValidator.ThrowIfFeedIdIsInvalid);
136+
removed?.ForEach(FeedIdValidator.ThrowIfFeedIdIsInvalid);
137+
138+
var payload = new
139+
{
140+
id = id,
141+
added_targets = adds,
142+
new_targets = newTargets,
143+
removed_targets = removed,
144+
};
145+
146+
var endpoint = $"feed_targets/{_feedSlug}/{_userId}/activity_to_targets/";
147+
var request = _client.BuildAppRequest(endpoint, HttpMethod.Post);
148+
request.SetJsonBody(StreamJsonConverter.SerializeObject(payload));
149+
var response = await _client.MakeRequestAsync(request);
150+
151+
if (response.StatusCode == HttpStatusCode.Created)
152+
return StreamJsonConverter.DeserializeObject<UpdateToTargetsResponse>(response.Content);
153+
154+
throw StreamException.FromResponse(response);
155+
}
156+
129157
public async Task<UpdateToTargetsResponse> UpdateActivityToTargetsAsync(ForeignIdTime foreignIdTime,
130158
IEnumerable<string> adds = null,
131159
IEnumerable<string> newTargets = null,

tests/ActivityTests/UpdateActivityTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ public async Task TestUpdateToTargets()
135135

136136
// remove 1
137137
var remove = targets[0];
138-
updateResp = await this.UserFeed.UpdateActivityToTargetsAsync(fidTime, null, null, new[] { remove });
138+
updateResp = await this.UserFeed.UpdateActivityToTargetsAsync(insertedAct.Id, null, null, new[] { remove });
139139
Assert.AreEqual(insertedAct.Id, updateResp.Activity.Id);
140140
Assert.AreEqual(1, updateResp.Removed.Count);
141141
Assert.AreEqual(remove, updateResp.Removed[0]);
@@ -277,4 +277,4 @@ public async Task TestActivityPartialUpdateByID()
277277
Assert.AreEqual("zyx", updatedAct.GetData<string>("custom_thing"));
278278
}
279279
}
280-
}
280+
}

0 commit comments

Comments
 (0)