diff --git a/crates/matrix-sdk/CHANGELOG.md b/crates/matrix-sdk/CHANGELOG.md index 52e288092a8..700e86901e9 100644 --- a/crates/matrix-sdk/CHANGELOG.md +++ b/crates/matrix-sdk/CHANGELOG.md @@ -290,6 +290,8 @@ simpler methods: ([#4879](https://github.com/matrix-org/matrix-rust-sdk/pull/4879)) - `Oidc::issuer()` was removed. - The `issuer` field of `UserSession` was removed. +- `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 diff --git a/crates/matrix-sdk/src/send_queue/mod.rs b/crates/matrix-sdk/src/send_queue/mod.rs index ae746645e11..7ad431afe57 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, }; @@ -1338,7 +1338,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, @@ -1395,10 +1395,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, @@ -1911,7 +1911,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, @@ -1919,7 +1919,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(()) @@ -1936,7 +1936,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 { @@ -2069,7 +2069,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 @@ -2166,7 +2166,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 29a09d325af..c41c3a314c0 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, };