From 042af93430c63f82f5315f9baef958153232f637 Mon Sep 17 00:00:00 2001 From: Johannes Marbach Date: Mon, 7 Apr 2025 20:10:00 +0200 Subject: [PATCH 1/2] refactor(send_queue): vectorize media handles on SendHandle Signed-off-by: Johannes Marbach --- crates/matrix-sdk/src/send_queue/mod.rs | 18 +++++++++--------- crates/matrix-sdk/src/send_queue/upload.rs | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/crates/matrix-sdk/src/send_queue/mod.rs b/crates/matrix-sdk/src/send_queue/mod.rs index 9379c4249b1..ac6e4d07234 100644 --- a/crates/matrix-sdk/src/send_queue/mod.rs +++ b/crates/matrix-sdk/src/send_queue/mod.rs @@ -455,7 +455,7 @@ impl RoomSendQueue { let send_handle = SendHandle { room: self.clone(), transaction_id: transaction_id.clone(), - media_handles: None, + media_handles: vec![], created_at, }; @@ -1336,7 +1336,7 @@ impl QueueStorage { send_handle: SendHandle { room: room.clone(), transaction_id: queued.transaction_id, - media_handles: None, + media_handles: vec![], created_at: queued.created_at, }, send_error: queued.error, @@ -1393,10 +1393,10 @@ impl QueueStorage { send_handle: SendHandle { room: room.clone(), transaction_id: dep.own_transaction_id.into(), - media_handles: Some(MediaHandles { + media_handles: vec![MediaHandles { upload_thumbnail_txn: thumbnail_info.map(|info| info.txn), upload_file_txn: file_upload, - }), + }], created_at: dep.created_at, }, send_error: None, @@ -1909,7 +1909,7 @@ pub struct SendHandle { transaction_id: OwnedTransactionId, /// Additional handles for a media upload. - media_handles: Option, + media_handles: Vec, /// The time at which the event to be sent has been created. pub created_at: MilliSecondsSinceUnixEpoch, @@ -1917,7 +1917,7 @@ pub struct SendHandle { impl SendHandle { fn nyi_for_uploads(&self) -> Result<(), RoomSendQueueStorageError> { - if self.media_handles.is_some() { + if !self.media_handles.is_empty() { Err(RoomSendQueueStorageError::OperationNotImplementedYet) } else { Ok(()) @@ -1934,7 +1934,7 @@ impl SendHandle { let queue = &self.room.inner.queue; - if let Some(handles) = &self.media_handles { + for handles in &self.media_handles { if queue.abort_upload(&self.transaction_id, handles).await? { // Propagate a cancelled update. let _ = self.room.inner.updates.send(RoomSendQueueUpdate::CancelledLocalEvent { @@ -2067,7 +2067,7 @@ impl SendHandle { // one entry will be updated in the store. The other two are either // done, or dependent requests. - if let Some(handles) = &self.media_handles { + for handles in &self.media_handles { room.queue .mark_as_unwedged(&handles.upload_file_txn) .await @@ -2164,7 +2164,7 @@ impl SendReactionHandle { let handle = SendHandle { room: self.room.clone(), transaction_id: self.transaction_id.clone().into(), - media_handles: None, + media_handles: vec![], created_at: MilliSecondsSinceUnixEpoch::now(), }; diff --git a/crates/matrix-sdk/src/send_queue/upload.rs b/crates/matrix-sdk/src/send_queue/upload.rs index 5e281dff08d..c8f42e16bd1 100644 --- a/crates/matrix-sdk/src/send_queue/upload.rs +++ b/crates/matrix-sdk/src/send_queue/upload.rs @@ -223,7 +223,7 @@ impl RoomSendQueue { let send_handle = SendHandle { room: self.clone(), transaction_id: send_event_txn.clone().into(), - media_handles: Some(MediaHandles { upload_thumbnail_txn, upload_file_txn }), + media_handles: vec![MediaHandles { upload_thumbnail_txn, upload_file_txn }], created_at, }; From 486db543aa8f829f6e4e9924497013af42c0fc3d Mon Sep 17 00:00:00 2001 From: Johannes Marbach Date: Mon, 7 Apr 2025 20:31:10 +0200 Subject: [PATCH 2/2] Add changelog --- crates/matrix-sdk/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crates/matrix-sdk/CHANGELOG.md b/crates/matrix-sdk/CHANGELOG.md index d13c7fb3459..291fe93aedd 100644 --- a/crates/matrix-sdk/CHANGELOG.md +++ b/crates/matrix-sdk/CHANGELOG.md @@ -235,6 +235,8 @@ simpler methods: ([#4831](https://github.com/matrix-org/matrix-rust-sdk/pull/4831)) - [**breaking**] `Client::store` is renamed `state_store` ([#4851](https://github.com/matrix-org/matrix-rust-sdk/pull/4851)) +- `SendHandle::media_handles` was generalized into a vector + ([#4898](https://github.com/matrix-org/matrix-rust-sdk/pull/4898)) ## [0.10.0] - 2025-02-04