From 3f5390ef2b8d661b4471b7847fafc2bb937365cd Mon Sep 17 00:00:00 2001 From: ferhat elmas Date: Fri, 24 Jun 2022 15:16:49 +0200 Subject: [PATCH] feat: add id based to target update --- src/IStreamFeed.cs | 10 ++++++++ src/StreamFeed.cs | 28 ++++++++++++++++++++++ tests/ActivityTests/UpdateActivityTests.cs | 4 ++-- 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/IStreamFeed.cs b/src/IStreamFeed.cs index e9d4cc2..1fc0cd9 100644 --- a/src/IStreamFeed.cs +++ b/src/IStreamFeed.cs @@ -109,5 +109,15 @@ Task UpdateActivityToTargetsAsync(ForeignIdTime foreign IEnumerable adds = null, IEnumerable newTargets = null, IEnumerable removed = null); + + /// + /// Updates the "to" targets for the provided activity, with the options passed + /// as argument for replacing, adding, or removing to targets. + /// + /// https://getstream.io/activity-feeds/docs/dotnet-csharp/feeds_101/?language=csharp + Task UpdateActivityToTargetsAsync(string id, + IEnumerable adds = null, + IEnumerable newTargets = null, + IEnumerable removed = null); } } diff --git a/src/StreamFeed.cs b/src/StreamFeed.cs index eab310a..e6d2ecb 100644 --- a/src/StreamFeed.cs +++ b/src/StreamFeed.cs @@ -126,6 +126,34 @@ public async Task> GetActivitiesAsync(int offset = throw StreamException.FromResponse(response); } + public async Task UpdateActivityToTargetsAsync(string id, + IEnumerable adds = null, + IEnumerable newTargets = null, + IEnumerable removed = null) + { + adds?.ForEach(FeedIdValidator.ThrowIfFeedIdIsInvalid); + newTargets?.ForEach(FeedIdValidator.ThrowIfFeedIdIsInvalid); + removed?.ForEach(FeedIdValidator.ThrowIfFeedIdIsInvalid); + + var payload = new + { + id = id, + added_targets = adds, + new_targets = newTargets, + removed_targets = removed, + }; + + var endpoint = $"feed_targets/{_feedSlug}/{_userId}/activity_to_targets/"; + var request = _client.BuildAppRequest(endpoint, HttpMethod.Post); + request.SetJsonBody(StreamJsonConverter.SerializeObject(payload)); + var response = await _client.MakeRequestAsync(request); + + if (response.StatusCode == HttpStatusCode.Created) + return StreamJsonConverter.DeserializeObject(response.Content); + + throw StreamException.FromResponse(response); + } + public async Task UpdateActivityToTargetsAsync(ForeignIdTime foreignIdTime, IEnumerable adds = null, IEnumerable newTargets = null, diff --git a/tests/ActivityTests/UpdateActivityTests.cs b/tests/ActivityTests/UpdateActivityTests.cs index d5b4477..1671e6c 100644 --- a/tests/ActivityTests/UpdateActivityTests.cs +++ b/tests/ActivityTests/UpdateActivityTests.cs @@ -135,7 +135,7 @@ public async Task TestUpdateToTargets() // remove 1 var remove = targets[0]; - updateResp = await this.UserFeed.UpdateActivityToTargetsAsync(fidTime, null, null, new[] { remove }); + updateResp = await this.UserFeed.UpdateActivityToTargetsAsync(insertedAct.Id, null, null, new[] { remove }); Assert.AreEqual(insertedAct.Id, updateResp.Activity.Id); Assert.AreEqual(1, updateResp.Removed.Count); Assert.AreEqual(remove, updateResp.Removed[0]); @@ -277,4 +277,4 @@ public async Task TestActivityPartialUpdateByID() Assert.AreEqual("zyx", updatedAct.GetData("custom_thing")); } } -} \ No newline at end of file +}