diff --git a/bindings/matrix-sdk-ffi/src/event.rs b/bindings/matrix-sdk-ffi/src/event.rs index e4dcefafc..beab2748a 100644 --- a/bindings/matrix-sdk-ffi/src/event.rs +++ b/bindings/matrix-sdk-ffi/src/event.rs @@ -1,7 +1,7 @@ use anyhow::{bail, Context}; use ruma::events::{ - AnySyncMessageLikeEvent, AnySyncStateEvent, AnySyncTimelineEvent, AnyTimelineEvent, - MessageLikeEventContent as RumaMessageLikeEventContent, RedactContent, + room::message::Relation, AnySyncMessageLikeEvent, AnySyncStateEvent, AnySyncTimelineEvent, + AnyTimelineEvent, MessageLikeEventContent as RumaMessageLikeEventContent, RedactContent, RedactedStateEventContent, StaticStateEventContent, SyncMessageLikeEvent, SyncStateEvent, }; @@ -128,7 +128,7 @@ pub enum MessageLikeEventContent { KeyVerificationDone, ReactionContent { related_event_id: String }, RoomEncrypted, - RoomMessage { message_type: MessageType }, + RoomMessage { message_type: MessageType, in_reply_to_event_id: Option }, RoomRedaction, Sticker, } @@ -172,8 +172,14 @@ impl TryFrom for MessageLikeEventContent { AnySyncMessageLikeEvent::RoomEncrypted(_) => MessageLikeEventContent::RoomEncrypted, AnySyncMessageLikeEvent::RoomMessage(content) => { let original_content = get_message_like_event_original_content(content)?; + let in_reply_to_event_id = + original_content.relates_to.and_then(|relation| match relation { + Relation::Reply { in_reply_to } => Some(in_reply_to.event_id.to_string()), + _ => None, + }); MessageLikeEventContent::RoomMessage { message_type: original_content.msgtype.try_into()?, + in_reply_to_event_id, } } AnySyncMessageLikeEvent::RoomRedaction(_) => MessageLikeEventContent::RoomRedaction,