diff --git a/src/IReactions.cs b/src/IReactions.cs index 3abb40e..971b766 100644 --- a/src/IReactions.cs +++ b/src/IReactions.cs @@ -59,6 +59,6 @@ public interface IReactions /// Updates a reaction. /// https://getstream.io/activity-feeds/docs/dotnet-csharp/reactions_introduction/?language=csharp - Task UpdateAsync(string reactionId, IDictionary data = null, IEnumerable targetFeeds = null); + Task UpdateAsync(string reactionId, IDictionary data = null, IEnumerable targetFeeds = null, string moderationTemplate = null); } } \ No newline at end of file diff --git a/src/Reactions.cs b/src/Reactions.cs index 0dbc0e3..52e3f1f 100644 --- a/src/Reactions.cs +++ b/src/Reactions.cs @@ -130,13 +130,14 @@ private async Task FilterInternalAsync(ReactionFiltering filtering return response; } - public async Task UpdateAsync(string reactionId, IDictionary data = null, IEnumerable targetFeeds = null) + public async Task UpdateAsync(string reactionId, IDictionary data = null, IEnumerable targetFeeds = null, string moderationTemplate = null) { var r = new Reaction { Id = reactionId, Data = data, TargetFeeds = targetFeeds, + ModerationTemplate = moderationTemplate, }; var request = _client.BuildAppRequest($"reaction/{reactionId}/", HttpMethod.Put); diff --git a/tests/ModerationTests.cs b/tests/ModerationTests.cs index 479c440..4effff3 100644 --- a/tests/ModerationTests.cs +++ b/tests/ModerationTests.cs @@ -63,6 +63,30 @@ public async Task TestReactionModeration() Assert.AreEqual("complete", response.Status); Assert.AreEqual("remove", response.RecommendedAction); + + var updatedData = new Dictionary() { { "field", "updated" }, { "number", 3 }, { "text", "pissoar" }, }; + var updatedReaction = await Client.Reactions.UpdateAsync(r.Id, updatedData, null, "moderation_config_1_reaction"); + + Assert.NotNull(updatedReaction); + Assert.AreEqual(updatedReaction.Id, r.Id); + Assert.AreEqual(updatedReaction.Data["field"], "updated"); + Assert.AreEqual(updatedReaction.Data["number"], 3); + + var updatedResponse = updatedReaction.GetModerationResponse(); + Assert.AreEqual("complete", updatedResponse.Status); + Assert.AreEqual("remove", updatedResponse.RecommendedAction); + + var updatedData2 = new Dictionary() { { "field", "updated" }, { "number", 3 }, { "text", "hello" }, }; + var updatedReaction2 = await Client.Reactions.UpdateAsync(r.Id, updatedData2, null, "moderation_config_1_reaction"); + + Assert.NotNull(updatedReaction2); + Assert.AreEqual(updatedReaction2.Id, r.Id); + Assert.AreEqual(updatedReaction2.Data["field"], "updated"); + Assert.AreEqual(updatedReaction2.Data["number"], 3); + + var updatedResponse2 = updatedReaction2.GetModerationResponse(); + Assert.AreEqual("complete", updatedResponse2.Status); + Assert.AreEqual("remove", updatedResponse2.RecommendedAction); } [Test] @@ -132,4 +156,4 @@ public async Task TestFlagReaction() Assert.NotNull(response); } } -} \ No newline at end of file +}