public async Task <ReactionShort> RemoveAsync(string publicationId, string userId) { var result = await reactionsApi.DeleteByAuthorAsync( KeysBuilder.PublicationReactionsKey(publicationId), userId); return(ToReactionShort(result, null)); }
public async Task DeleteAsync(string publicationId) { await Reactions.RemoveManyAsync(KeysBuilder.PublicationReactionsKey(publicationId)); await Comments.DeleteManyAsync(publicationId); await publicationsApi.DeleteAsync(publicationId); }
public async Task <ReactionShort> AddOrUpdateAsync(string publicationId, ReactionType reactionType, string userId) { var result = await reactionsApi.UpsertAsync( KeysBuilder.PublicationReactionsKey(publicationId), reactionType.ToString(), userId); return(ToReactionShort(result, new UserReaction(reactionType))); }
private async Task <Dictionary <string, Dictionary <ReactionType, int> > > LoadReactionsAsync(IEnumerable <string> publicationIds) { var keys = publicationIds.Select(KeysBuilder.PublicationReactionsKey).ToList(); var query = new ReactionsQuery(keys); var reactions = await reactionsApi.GetGroupedReactionsAsync(query); return(publicationIds .ToDictionary(id => id, id => { var r = reactions.ContainsKey(KeysBuilder.PublicationReactionsKey(id)) ? reactions[KeysBuilder.PublicationReactionsKey(id)] : new Dictionary <string, int>(); return r.Keys .Select(k => (Enum.Parse <ReactionType>(k), r[k])) .ToDictionary(o => o.Item1, o => o.Item2); }));