mirror of
https://github.com/youwen5/iamb.git
synced 2025-06-20 05:39:52 -07:00
Prevent sending duplicate reaction events (#240)
This commit is contained in:
parent
72d35431de
commit
aba72aa64d
2 changed files with 23 additions and 0 deletions
16
src/base.rs
16
src/base.rs
|
@ -1149,6 +1149,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.
|
||||
|
|
|
@ -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)?;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue