From d4ed0dd683f789c38a8204c275940fce87bb685e Mon Sep 17 00:00:00 2001 From: SpiritCroc Date: Sat, 30 Dec 2023 09:18:56 +0100 Subject: [PATCH] Expose filename and formatted body fields for media In relevance to MSC2530 captions --- Cargo.toml | 2 +- bindings/matrix-sdk-ffi/src/ruma.rs | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 93abb93d8a3..443f401d8d2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,7 +35,7 @@ futures-executor = "0.3.21" futures-util = { version = "0.3.26", default-features = false, features = ["alloc"] } http = "0.2.6" itertools = "0.12.0" -ruma = { version = "0.9.3", features = ["client-api-c", "compat-upload-signatures", "compat-user-id", "compat-arbitrary-length-ids", "unstable-msc3401"] } +ruma = { git = "https://github.com/SchildiChat/ruma", rev = "dc260081", features = ["client-api-c", "compat-upload-signatures", "compat-user-id", "compat-arbitrary-length-ids", "unstable-msc3401"] } ruma-common = "0.12.0" once_cell = "1.16.0" rand = "0.8.5" diff --git a/bindings/matrix-sdk-ffi/src/ruma.rs b/bindings/matrix-sdk-ffi/src/ruma.rs index cc0e317e860..fc85768e3f9 100644 --- a/bindings/matrix-sdk-ffi/src/ruma.rs +++ b/bindings/matrix-sdk-ffi/src/ruma.rs @@ -174,18 +174,25 @@ impl TryFrom for RumaMessageType { } MessageType::Image { content } => Self::Image( RumaImageMessageEventContent::new(content.body, (*content.source).clone()) + .formatted(content.formatted.map(Into::into)) + .filename(content.filename) .info(content.info.map(Into::into).map(Box::new)), ), MessageType::Audio { content } => Self::Audio( RumaAudioMessageEventContent::new(content.body, (*content.source).clone()) + .formatted(content.formatted.map(Into::into)) + .filename(content.filename) .info(content.info.map(Into::into).map(Box::new)), ), MessageType::Video { content } => Self::Video( RumaVideoMessageEventContent::new(content.body, (*content.source).clone()) + .formatted(content.formatted.map(Into::into)) + .filename(content.filename) .info(content.info.map(Into::into).map(Box::new)), ), MessageType::File { content } => Self::File( RumaFileMessageEventContent::new(content.body, (*content.source).clone()) + .formatted(content.formatted.map(Into::into)) .filename(content.filename) .info(content.info.map(Into::into).map(Box::new)), ), @@ -221,6 +228,8 @@ impl From for MessageType { RumaMessageType::Image(c) => MessageType::Image { content: ImageMessageContent { body: c.body.clone(), + formatted: c.formatted.as_ref().map(Into::into), + filename: c.filename.clone(), source: Arc::new(c.source.clone()), info: c.info.as_deref().map(Into::into), }, @@ -228,6 +237,8 @@ impl From for MessageType { RumaMessageType::Audio(c) => MessageType::Audio { content: AudioMessageContent { body: c.body.clone(), + formatted: c.formatted.as_ref().map(Into::into), + filename: c.filename.clone(), source: Arc::new(c.source.clone()), info: c.info.as_deref().map(Into::into), audio: c.audio.map(Into::into), @@ -237,6 +248,8 @@ impl From for MessageType { RumaMessageType::Video(c) => MessageType::Video { content: VideoMessageContent { body: c.body.clone(), + formatted: c.formatted.as_ref().map(Into::into), + filename: c.filename.clone(), source: Arc::new(c.source.clone()), info: c.info.as_deref().map(Into::into), }, @@ -244,6 +257,7 @@ impl From for MessageType { RumaMessageType::File(c) => MessageType::File { content: FileMessageContent { body: c.body.clone(), + formatted: c.formatted.as_ref().map(Into::into), filename: c.filename.clone(), source: Arc::new(c.source.clone()), info: c.info.as_deref().map(Into::into), @@ -295,6 +309,8 @@ pub struct EmoteMessageContent { #[derive(Clone, uniffi::Record)] pub struct ImageMessageContent { pub body: String, + pub formatted: Option, + pub filename: Option, pub source: Arc, pub info: Option, } @@ -302,6 +318,8 @@ pub struct ImageMessageContent { #[derive(Clone, uniffi::Record)] pub struct AudioMessageContent { pub body: String, + pub formatted: Option, + pub filename: Option, pub source: Arc, pub info: Option, pub audio: Option, @@ -311,6 +329,8 @@ pub struct AudioMessageContent { #[derive(Clone, uniffi::Record)] pub struct VideoMessageContent { pub body: String, + pub formatted: Option, + pub filename: Option, pub source: Arc, pub info: Option, } @@ -318,6 +338,7 @@ pub struct VideoMessageContent { #[derive(Clone, uniffi::Record)] pub struct FileMessageContent { pub body: String, + pub formatted: Option, pub filename: Option, pub source: Arc, pub info: Option,