Simplify code in AddReaction

This commit is contained in:
Dominic Villemure
2024-08-25 10:35:06 -04:00
parent 79c87f2091
commit c395cea0f5

View File

@@ -48,30 +48,21 @@ public class AddReaction(
{ {
var content = await context.Contents.SingleAsync(x => x.Id == req.ContentId, ct); var content = await context.Contents.SingleAsync(x => x.Id == req.ContentId, ct);
var reactionEnum = req.Reaction.ToEnum<Reaction>(); var reactionEnum = req.Reaction.ToEnum<Reaction>();
var currentReaction = content.Reactions.SingleOrDefault(x => x.UserId == req.UserId);
var hasReacted = content.Reactions.Any(x => x.UserId == req.UserId); // Already reacted or reaction didn't change, do nothing
if (currentReaction != null && currentReaction.Reaction == reactionEnum)
if (hasReacted)
{ {
var currentReaction = content.Reactions.Single(x => x.UserId == req.UserId); return;
if (currentReaction.Reaction == reactionEnum) return; }
if (reactionEnum.HasValue) // User has already reacted, remove the existing reaction
if (currentReaction != null)
{ {
content.Reactions.Remove(currentReaction); content.Reactions.Remove(currentReaction);
var reaction = new ContentReaction
{
Reaction = reactionEnum.Value,
UserId = req.UserId,
UserName = req.UserName
};
content.Reactions.Add(reaction);
} }
}
else // If the new reaction is valid, add or update the reaction
{
if (reactionEnum.HasValue) if (reactionEnum.HasValue)
{ {
var reaction = new ContentReaction var reaction = new ContentReaction
@@ -83,7 +74,6 @@ public class AddReaction(
content.Reactions.Add(reaction); content.Reactions.Add(reaction);
} }
}
await context.SaveChangesAsync(ct); await context.SaveChangesAsync(ct);
} }