Skip to content

Commit

Permalink
fix: do not allow for duplicate reactions
Browse files Browse the repository at this point in the history
  • Loading branch information
Kladki committed Mar 30, 2024
1 parent 82645c8 commit a0f216f
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/base.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1146,6 +1146,22 @@ impl RoomInfo {

return top;
}

/// Checks if a given user has reacted with the given emoji on the given event
pub fn user_reactions_contains(
&mut self,
user_id: &UserId,
event_id: &EventId,
emoji: &str,
) -> bool {
if let Some(reactions) = self.reactions.get(event_id) {
reactions
.values()
.any(|(annotation, user)| annotation == emoji && user == user_id)
} else {
false
}
}
}

/// Generate a [CompletionMap] for Emoji shortcodes.
Expand Down
7 changes: 7 additions & 0 deletions src/windows/room/chat.rs
Original file line number Diff line number Diff line change
Expand Up @@ -372,6 +372,13 @@ impl ChatState {
},
};

if info.user_reactions_contains(&settings.profile.user_id, &event_id, &emoji) {
let msg = format!("You’ve already reacted to this message with {}", emoji);
let err = UIError::Failure(msg);

return Err(err);
}

let reaction = Annotation::new(event_id, emoji);
let msg = ReactionEventContent::new(reaction);
let _ = room.send(msg).await.map_err(IambError::from)?;
Expand Down

0 comments on commit a0f216f

Please sign in to comment.