xmpp: *Message events now include an optional id

Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
This commit is contained in:
Maxime “pep” Buquet 2023-02-26 20:09:20 +01:00
commit c759516508
No known key found for this signature in database
GPG key ID: DEDA74AEECA9D0F2
2 changed files with 17 additions and 7 deletions

View file

@ -51,7 +51,7 @@ async fn main() -> Result<(), Option<()>> {
Event::ContactChanged(contact) => { Event::ContactChanged(contact) => {
println!("Contact {} changed.", contact.jid); println!("Contact {} changed.", contact.jid);
} }
Event::ChatMessage(jid, body) => { Event::ChatMessage(_id, jid, body) => {
println!("Message from {}: {}", jid, body.0); println!("Message from {}: {}", jid, body.0);
} }
Event::JoinRoom(jid, conference) => { Event::JoinRoom(jid, conference) => {
@ -81,7 +81,7 @@ async fn main() -> Result<(), Option<()>> {
Event::RoomLeft(jid) => { Event::RoomLeft(jid) => {
println!("Left room {}.", jid); println!("Left room {}.", jid);
} }
Event::RoomMessage(jid, nick, body) => { Event::RoomMessage(_id, jid, nick, body) => {
println!("Message in room {} from {}: {}", jid, nick, body.0); println!("Message in room {} from {}: {}", jid, nick, body.0);
} }
Event::AvatarRetrieved(jid, path) => { Event::AvatarRetrieved(jid, path) => {

View file

@ -72,6 +72,7 @@ pub enum ClientFeature {
JoinRooms, JoinRooms,
} }
pub type Id = Option<String>;
pub type RoomNick = String; pub type RoomNick = String;
#[derive(Debug)] #[derive(Debug)]
@ -83,14 +84,14 @@ pub enum Event {
ContactChanged(RosterItem), ContactChanged(RosterItem),
#[cfg(feature = "avatars")] #[cfg(feature = "avatars")]
AvatarRetrieved(Jid, String), AvatarRetrieved(Jid, String),
ChatMessage(BareJid, Body), ChatMessage(Id, BareJid, Body),
JoinRoom(BareJid, Conference), JoinRoom(BareJid, Conference),
LeaveRoom(BareJid), LeaveRoom(BareJid),
LeaveAllRooms, LeaveAllRooms,
RoomJoined(BareJid), RoomJoined(BareJid),
RoomLeft(BareJid), RoomLeft(BareJid),
RoomMessage(BareJid, RoomNick, Body), RoomMessage(Id, BareJid, RoomNick, Body),
ServiceMessage(BareJid, Body), ServiceMessage(Id, BareJid, Body),
HttpUploadedFile(String), HttpUploadedFile(String),
} }
@ -336,16 +337,25 @@ impl Agent {
MessageType::Groupchat => { MessageType::Groupchat => {
let event = match from.clone() { let event = match from.clone() {
Jid::Full(full) => Event::RoomMessage( Jid::Full(full) => Event::RoomMessage(
message.id.clone(),
from.clone().into(), from.clone().into(),
full.resource, full.resource,
body.clone(), body.clone(),
), ),
Jid::Bare(bare) => Event::ServiceMessage(bare, body.clone()), Jid::Bare(bare) => Event::ServiceMessage(
message.id.clone(),
bare,
body.clone(),
),
}; };
events.push(event) events.push(event)
} }
MessageType::Chat | MessageType::Normal => { MessageType::Chat | MessageType::Normal => {
let event = Event::ChatMessage(from.clone().into(), body.clone()); let event = Event::ChatMessage(
message.id.clone(),
from.clone().into(),
body.clone(),
);
events.push(event) events.push(event)
} }
_ => (), _ => (),