Skip to content

Commit 98ded6d

Browse files
committed
chore(send_queue): collect thumbnail-related metadata in a dedicated QueueThumbnailInfo struct for easier extension
Signed-off-by: Johannes Marbach <n0-0ne+github@mailbox.org>
1 parent b609637 commit 98ded6d

File tree

2 files changed

+63
-36
lines changed

2 files changed

+63
-36
lines changed

crates/matrix-sdk/src/send_queue/mod.rs

Lines changed: 53 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,20 @@ impl SendQueue {
291291
}
292292
}
293293

294+
/// Metadata about a thumbnail needed when pushing media uploads to the send
295+
/// queue.
296+
#[derive(Clone, Debug)]
297+
struct QueueThumbnailInfo {
298+
/// Metadata about the thumbnail needed when finishing a media upload.
299+
finish_upload_thumbnail_info: FinishUploadThumbnailInfo,
300+
301+
/// The parameters for the request to retrieve the thumbnail data.
302+
media_request_parameters: MediaRequestParameters,
303+
304+
/// The thumbnail's mime type.
305+
content_type: Mime,
306+
}
307+
294308
/// A specific room's send queue ran into an error, and it has disabled itself.
295309
#[derive(Clone, Debug)]
296310
pub struct SendQueueRoomError {
@@ -1214,7 +1228,7 @@ impl QueueStorage {
12141228
created_at: MilliSecondsSinceUnixEpoch,
12151229
upload_file_txn: OwnedTransactionId,
12161230
file_media_request: MediaRequestParameters,
1217-
thumbnail: Option<(FinishUploadThumbnailInfo, MediaRequestParameters, Mime)>,
1231+
thumbnail: Option<QueueThumbnailInfo>,
12181232
) -> Result<(), RoomSendQueueStorageError> {
12191233
let guard = self.store.lock().await;
12201234
let client = guard.client()?;
@@ -1300,35 +1314,38 @@ impl QueueStorage {
13001314
thumbnail,
13011315
} = item_queue_info;
13021316

1303-
let thumbnail_info =
1304-
if let Some((thumbnail_info, thumbnail_media_request, thumbnail_content_type)) =
1305-
thumbnail
1306-
{
1307-
let upload_thumbnail_txn = thumbnail_info.txn.clone();
1317+
let thumbnail_info = if let Some(QueueThumbnailInfo {
1318+
finish_upload_thumbnail_info: thumbnail_info,
1319+
media_request_parameters: thumbnail_media_request,
1320+
content_type: thumbnail_content_type,
1321+
..
1322+
}) = thumbnail
1323+
{
1324+
let upload_thumbnail_txn = thumbnail_info.txn.clone();
13081325

1309-
// Save the thumbnail upload request as a dependent request of the last file
1310-
// upload.
1311-
store
1312-
.save_dependent_queued_request(
1313-
&self.room_id,
1314-
&last_upload_file_txn,
1315-
upload_thumbnail_txn.clone().into(),
1316-
created_at,
1317-
DependentQueuedRequestKind::UploadFileOrThumbnail {
1318-
content_type: thumbnail_content_type.to_string(),
1319-
cache_key: thumbnail_media_request.clone(),
1320-
related_to: send_event_txn.clone(),
1321-
parent_is_thumbnail_upload: false,
1322-
},
1323-
)
1324-
.await?;
1326+
// Save the thumbnail upload request as a dependent request of the last file
1327+
// upload.
1328+
store
1329+
.save_dependent_queued_request(
1330+
&self.room_id,
1331+
&last_upload_file_txn,
1332+
upload_thumbnail_txn.clone().into(),
1333+
created_at,
1334+
DependentQueuedRequestKind::UploadFileOrThumbnail {
1335+
content_type: thumbnail_content_type.to_string(),
1336+
cache_key: thumbnail_media_request.clone(),
1337+
related_to: send_event_txn.clone(),
1338+
parent_is_thumbnail_upload: false,
1339+
},
1340+
)
1341+
.await?;
13251342

1326-
last_upload_file_txn = upload_thumbnail_txn;
1343+
last_upload_file_txn = upload_thumbnail_txn;
13271344

1328-
Some(thumbnail_info)
1329-
} else {
1330-
None
1331-
};
1345+
Some(thumbnail_info)
1346+
} else {
1347+
None
1348+
};
13321349

13331350
// Save the file upload as a dependent request of the previous upload.
13341351
store
@@ -1386,9 +1403,15 @@ impl QueueStorage {
13861403
created_at: MilliSecondsSinceUnixEpoch,
13871404
upload_file_txn: OwnedTransactionId,
13881405
file_media_request: MediaRequestParameters,
1389-
thumbnail: Option<(FinishUploadThumbnailInfo, MediaRequestParameters, Mime)>,
1406+
thumbnail: Option<QueueThumbnailInfo>,
13901407
) -> Result<Option<FinishUploadThumbnailInfo>, RoomSendQueueStorageError> {
1391-
if let Some((thumbnail_info, thumbnail_media_request, thumbnail_content_type)) = thumbnail {
1408+
if let Some(QueueThumbnailInfo {
1409+
finish_upload_thumbnail_info: thumbnail_info,
1410+
media_request_parameters: thumbnail_media_request,
1411+
content_type: thumbnail_content_type,
1412+
..
1413+
}) = thumbnail
1414+
{
13921415
let upload_thumbnail_txn = thumbnail_info.txn.clone();
13931416

13941417
// Save the thumbnail upload request.
@@ -1980,7 +2003,7 @@ struct GalleryItemQueueInfo {
19802003
content_type: Mime,
19812004
upload_file_txn: OwnedTransactionId,
19822005
file_media_request: MediaRequestParameters,
1983-
thumbnail: Option<(FinishUploadThumbnailInfo, MediaRequestParameters, Mime)>,
2006+
thumbnail: Option<QueueThumbnailInfo>,
19842007
}
19852008

19862009
/// The content of a local echo.

crates/matrix-sdk/src/send_queue/upload.rs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ use ruma::{
4646
};
4747
use tracing::{debug, error, instrument, trace, warn, Span};
4848

49-
use super::{QueueStorage, RoomSendQueue, RoomSendQueueError};
49+
use super::{QueueStorage, QueueThumbnailInfo, RoomSendQueue, RoomSendQueueError};
5050
use crate::{
5151
attachment::{AttachmentConfig, Thumbnail},
5252
room::edit::update_media_caption,
@@ -170,7 +170,7 @@ fn update_gallery_event_after_upload(
170170
struct MediaCacheResult {
171171
upload_thumbnail_txn: Option<OwnedTransactionId>,
172172
event_thumbnail_info: Option<(MediaSource, Box<ThumbnailInfo>)>,
173-
queue_thumbnail_info: Option<(FinishUploadThumbnailInfo, MediaRequestParameters, Mime)>,
173+
queue_thumbnail_info: Option<QueueThumbnailInfo>,
174174
}
175175

176176
impl RoomSendQueue {
@@ -464,11 +464,15 @@ impl RoomSendQueue {
464464
thumbnail_media_request.source.clone(),
465465
thumbnail_info,
466466
)),
467-
queue_thumbnail_info: Some((
468-
FinishUploadThumbnailInfo { txn, width: None, height: None },
469-
thumbnail_media_request,
467+
queue_thumbnail_info: Some(QueueThumbnailInfo {
468+
finish_upload_thumbnail_info: FinishUploadThumbnailInfo {
469+
txn,
470+
width: None,
471+
height: None,
472+
},
473+
media_request_parameters: thumbnail_media_request,
470474
content_type,
471-
)),
475+
}),
472476
})
473477
} else {
474478
Ok(Default::default())

0 commit comments

Comments
 (0)