Exemple #1
0
        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),
            }));
        }