mirror of
https://github.com/matrix-org/matrix-rust-sdk.git
synced 2026-05-08 16:04:13 -04:00
feat(ffi): Add LocalEventTimelineItemSendState + EventTimelineItem::local_send_state.
This commit is contained in:
@@ -91,11 +91,12 @@ mod uniffi_types {
|
||||
},
|
||||
timeline::{
|
||||
EmoteMessageContent, EncryptedMessage, EventTimelineItem, FileInfo, FileMessageContent,
|
||||
FormattedBody, ImageInfo, ImageMessageContent, InsertAtData, MembershipChange, Message,
|
||||
MessageFormat, MessageType, NoticeMessageContent, OtherState, Profile, Reaction,
|
||||
TextMessageContent, ThumbnailInfo, TimelineChange, TimelineDiff, TimelineItem,
|
||||
TimelineItemContent, TimelineItemContentKind, UpdateAtData, VideoInfo,
|
||||
VideoMessageContent, VirtualTimelineItem,
|
||||
FormattedBody, ImageInfo, ImageMessageContent, InsertAtData,
|
||||
LocalEventTimelineItemSendState, MembershipChange, Message, MessageFormat, MessageType,
|
||||
NoticeMessageContent, OtherState, Profile, Reaction, TextMessageContent, ThumbnailInfo,
|
||||
TimelineChange, TimelineDiff, TimelineItem, TimelineItemContent,
|
||||
TimelineItemContentKind, UpdateAtData, VideoInfo, VideoMessageContent,
|
||||
VirtualTimelineItem,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@@ -170,6 +170,32 @@ impl TimelineItem {
|
||||
}
|
||||
}
|
||||
|
||||
/// This type represents the “send state” of a local event timeline item.
|
||||
#[derive(Clone, uniffi::Enum)]
|
||||
pub enum LocalEventTimelineItemSendState {
|
||||
/// The local event has not been sent yet.
|
||||
NotSendYet,
|
||||
/// The local event has been sent to the server, but unsucessfully: The
|
||||
/// sending has failed.
|
||||
SendingFailed,
|
||||
/// The local event has been sent successfully to the server.
|
||||
Sent,
|
||||
}
|
||||
|
||||
impl From<matrix_sdk::room::timeline::LocalEventTimelineItemSendState>
|
||||
for LocalEventTimelineItemSendState
|
||||
{
|
||||
fn from(value: matrix_sdk::room::timeline::LocalEventTimelineItemSendState) -> Self {
|
||||
use matrix_sdk::room::timeline::LocalEventTimelineItemSendState::*;
|
||||
|
||||
match value {
|
||||
NotSentYet => Self::NotSendYet,
|
||||
SendingFailed => Self::SendingFailed,
|
||||
Sent => Self::Sent,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(uniffi::Object)]
|
||||
pub struct EventTimelineItem(pub(crate) matrix_sdk::room::timeline::EventTimelineItem);
|
||||
|
||||
@@ -234,6 +260,15 @@ impl EventTimelineItem {
|
||||
self.0.raw().map(|r| r.json().get().to_owned())
|
||||
}
|
||||
|
||||
pub fn local_send_state(&self) -> Option<LocalEventTimelineItemSendState> {
|
||||
use matrix_sdk::room::timeline::EventTimelineItem::*;
|
||||
|
||||
match &self.0 {
|
||||
Local(local_event) => Some(local_event.send_state.into()),
|
||||
Remote(_) => None,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn fmt_debug(&self) -> String {
|
||||
format!("{:#?}", self.0)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user