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;
|
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.
|
/// 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 reaction = Annotation::new(event_id, emoji);
|
||||||
let msg = ReactionEventContent::new(reaction);
|
let msg = ReactionEventContent::new(reaction);
|
||||||
let _ = room.send(msg).await.map_err(IambError::from)?;
|
let _ = room.send(msg).await.map_err(IambError::from)?;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue