From 3f977b79fa74b39a7a0a39fdd72a63d7fb80c866 Mon Sep 17 00:00:00 2001 From: Joe Groocock Date: Wed, 8 Jan 2025 00:14:05 +0000 Subject: [PATCH] feat(timeline): allow sending mentions along with media Since 8205da898e11c34b77b13fe4794d0b2e1bcdd2a8 it has been possible to attach (intentional) mentions to _edited_ media captions, but the send_$mediatype() timeline APIs provided no way to send them with the initial event. This fixes that. Signed-off-by: Joe Groocock --- bindings/matrix-sdk-ffi/src/timeline/mod.rs | 22 ++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/bindings/matrix-sdk-ffi/src/timeline/mod.rs b/bindings/matrix-sdk-ffi/src/timeline/mod.rs index 2c4798a63..bcb486f30 100644 --- a/bindings/matrix-sdk-ffi/src/timeline/mod.rs +++ b/bindings/matrix-sdk-ffi/src/timeline/mod.rs @@ -298,6 +298,7 @@ impl Timeline { image_info: ImageInfo, caption: Option, formatted_caption: Option, + mentions: Option, progress_watcher: Option>, use_send_queue: bool, ) -> Arc { @@ -313,7 +314,8 @@ impl Timeline { .thumbnail(thumbnail) .info(attachment_info) .caption(caption) - .formatted_caption(formatted_caption); + .formatted_caption(formatted_caption) + .mentions(mentions.map(Into::into)); self.send_attachment( url, @@ -334,6 +336,7 @@ impl Timeline { video_info: VideoInfo, caption: Option, formatted_caption: Option, + mentions: Option, progress_watcher: Option>, use_send_queue: bool, ) -> Arc { @@ -349,7 +352,8 @@ impl Timeline { .thumbnail(thumbnail) .info(attachment_info) .caption(caption) - .formatted_caption(formatted_caption.map(Into::into)); + .formatted_caption(formatted_caption.map(Into::into)) + .mentions(mentions.map(Into::into)); self.send_attachment( url, @@ -362,12 +366,14 @@ impl Timeline { })) } + #[allow(clippy::too_many_arguments)] pub fn send_audio( self: Arc, url: String, audio_info: AudioInfo, caption: Option, formatted_caption: Option, + mentions: Option, progress_watcher: Option>, use_send_queue: bool, ) -> Arc { @@ -381,7 +387,8 @@ impl Timeline { let attachment_config = AttachmentConfig::new() .info(attachment_info) .caption(caption) - .formatted_caption(formatted_caption.map(Into::into)); + .formatted_caption(formatted_caption.map(Into::into)) + .mentions(mentions.map(Into::into)); self.send_attachment( url, @@ -401,6 +408,7 @@ impl Timeline { audio_info: AudioInfo, waveform: Vec, caption: Option, + mentions: Option, formatted_caption: Option, progress_watcher: Option>, use_send_queue: bool, @@ -416,7 +424,8 @@ impl Timeline { let attachment_config = AttachmentConfig::new() .info(attachment_info) .caption(caption) - .formatted_caption(formatted_caption.map(Into::into)); + .formatted_caption(formatted_caption.map(Into::into)) + .mentions(mentions.map(Into::into)); self.send_attachment( url, @@ -429,12 +438,14 @@ impl Timeline { })) } + #[allow(clippy::too_many_arguments)] pub fn send_file( self: Arc, url: String, file_info: FileInfo, caption: Option, formatted_caption: Option, + mentions: Option, progress_watcher: Option>, use_send_queue: bool, ) -> Arc { @@ -448,7 +459,8 @@ impl Timeline { let attachment_config = AttachmentConfig::new() .info(attachment_info) .caption(caption) - .formatted_caption(formatted_caption.map(Into::into)); + .formatted_caption(formatted_caption.map(Into::into)) + .mentions(mentions.map(Into::into)); self.send_attachment( url,