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