diff --git a/bindings/matrix-sdk-ffi/src/lib.rs b/bindings/matrix-sdk-ffi/src/lib.rs index e93057ad4..b4888d02f 100644 --- a/bindings/matrix-sdk-ffi/src/lib.rs +++ b/bindings/matrix-sdk-ffi/src/lib.rs @@ -120,12 +120,12 @@ mod uniffi_types { }, timeline::{ AudioInfo, AudioMessageContent, EmoteMessageContent, EncryptedMessage, EventSendState, - EventTimelineItem, FileInfo, FileMessageContent, FormattedBody, ImageInfo, - ImageMessageContent, InsertData, MembershipChange, Message, MessageFormat, MessageType, - NoticeMessageContent, OtherState, ProfileTimelineDetails, Reaction, SetData, - TextMessageContent, ThumbnailInfo, TimelineChange, TimelineDiff, TimelineItem, - TimelineItemContent, TimelineItemContentKind, VideoInfo, VideoMessageContent, - VirtualTimelineItem, + EventTimelineItem, EventTimelineItemDebugInfo, FileInfo, FileMessageContent, + FormattedBody, ImageInfo, ImageMessageContent, InsertData, MembershipChange, Message, + MessageFormat, MessageType, NoticeMessageContent, OtherState, ProfileTimelineDetails, + Reaction, SetData, TextMessageContent, ThumbnailInfo, TimelineChange, TimelineDiff, + TimelineItem, TimelineItemContent, TimelineItemContentKind, VideoInfo, + VideoMessageContent, VirtualTimelineItem, }, ClientError, }; diff --git a/bindings/matrix-sdk-ffi/src/timeline.rs b/bindings/matrix-sdk-ffi/src/timeline.rs index 962eb30e8..13fdd7a59 100644 --- a/bindings/matrix-sdk-ffi/src/timeline.rs +++ b/bindings/matrix-sdk-ffi/src/timeline.rs @@ -304,8 +304,22 @@ impl EventTimelineItem { } } - pub fn raw(&self) -> Option { - self.0.original_json().map(|r| r.json().get().to_owned()) + pub fn debug_info(&self) -> EventTimelineItemDebugInfo { + use matrix_sdk::room::timeline::EventTimelineItem::*; + + let (original_json, latest_edit_json) = match &self.0 { + Local(_) => (None, None), + Remote(event) => ( + Some(event.original_json().json().get().to_owned()), + event.latest_edit_json().map(|raw| raw.json().get().to_owned()), + ), + }; + + EventTimelineItemDebugInfo { + model: format!("{:#?}", self.0), + original_json, + latest_edit_json, + } } pub fn local_send_state(&self) -> Option { @@ -316,10 +330,13 @@ impl EventTimelineItem { Remote(_) => None, } } +} - pub fn fmt_debug(&self) -> String { - format!("{:#?}", self.0) - } +#[derive(uniffi::Record)] +pub struct EventTimelineItemDebugInfo { + model: String, + original_json: Option, + latest_edit_json: Option, } #[derive(uniffi::Enum)]