private async Task <IActionResult> UnReact(PublicId toId, string undo, ReactionType t) { var user = await GetCurrentUserAsync(); BaseObject toActivity = null; if (string.IsNullOrWhiteSpace(undo)) { toActivity = await _activityStream.Get(new ActivityStreamFilter("outbox") { id = user.PublicId, includeReplies = false, targetId = toId }.FixType(t.ToString())); } else { toActivity = await _activityStream.Get(new ActivityStreamFilter("outbox") { id = user.PublicId, includeReplies = false, activityId = new PublicId(undo) }); } if (toActivity == null) { throw new ArgumentNullException(nameof(toActivity)); } else if (toActivity is Error error) { return(BadRequest(error.summary ?? error.content)); } else { await _activityStream.Undo(user, toActivity); } ViewData["PartialName"] = "Button/ReactButton"; return(View("_NoLayout", new ReactViewModel() { HasReacted = false, Enabled = true, ToId = toId, Type = t, ViewerId = user.UserId, Count = await _reactions.GetCount(toId, t), })); }