Skip to content

Commit 05ca3d8

Browse files
committed
Update gallery code path to report combined upload progress
1 parent b105550 commit 05ca3d8

File tree

2 files changed

+50
-32
lines changed

2 files changed

+50
-32
lines changed

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

Lines changed: 48 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -293,6 +293,7 @@ impl SendQueue {
293293

294294
/// Metadata about a thumbnail needed when pushing media uploads to the send
295295
/// queue.
296+
#[derive(Clone, Debug)]
296297
struct QueueThumbnailInfo {
297298
/// Metadata about the thumbnail needed when finishing a media upload.
298299
finish_upload_thumbnail_info: FinishUploadThumbnailInfo,
@@ -607,7 +608,7 @@ impl RoomSendQueue {
607608
match &queued_request.kind {
608609
QueuedRequestKind::MediaUpload { accumulated, .. } => accumulated.len() as u64,
609610
_ => default_index,
610-
};
611+
}
611612
} else {
612613
default_index
613614
}
@@ -1401,8 +1402,13 @@ impl QueueStorage {
14011402
return Ok(());
14021403
};
14031404

1404-
let GalleryItemQueueInfo { content_type, upload_file_txn, file_media_request, thumbnail } =
1405-
first;
1405+
let GalleryItemQueueInfo {
1406+
content_type,
1407+
upload_file_txn,
1408+
file_media_request,
1409+
file_size,
1410+
thumbnail,
1411+
} = first;
14061412

14071413
let thumbnail_info = self
14081414
.push_thumbnail_and_media_uploads(
@@ -1412,6 +1418,7 @@ impl QueueStorage {
14121418
created_at,
14131419
upload_file_txn.clone(),
14141420
file_media_request.clone(),
1421+
*file_size,
14151422
thumbnail.clone(),
14161423
)
14171424
.await?;
@@ -1426,39 +1433,45 @@ impl QueueStorage {
14261433
content_type,
14271434
upload_file_txn,
14281435
file_media_request,
1436+
file_size,
14291437
thumbnail,
14301438
} = item_queue_info;
14311439

1432-
let thumbnail_info =
1433-
if let Some((thumbnail_info, thumbnail_media_request, thumbnail_content_type)) =
1434-
thumbnail
1435-
{
1436-
let upload_thumbnail_txn = thumbnail_info.txn.clone();
1440+
let thumbnail_info = if let Some(QueueThumbnailInfo {
1441+
finish_upload_thumbnail_info: thumbnail_info,
1442+
media_request_parameters: thumbnail_media_request,
1443+
content_type: thumbnail_content_type,
1444+
file_size: thumbnail_file_size,
1445+
}) = thumbnail
1446+
{
1447+
let upload_thumbnail_txn = thumbnail_info.txn.clone();
14371448

1438-
// Save the thumbnail upload request as a dependent request of the last file
1439-
// upload.
1440-
store
1441-
.save_dependent_queued_request(
1442-
&self.room_id,
1443-
&last_upload_file_txn,
1444-
upload_thumbnail_txn.clone().into(),
1445-
created_at,
1446-
DependentQueuedRequestKind::UploadFileOrThumbnail {
1447-
content_type: thumbnail_content_type.to_string(),
1448-
cache_key: thumbnail_media_request.clone(),
1449-
related_to: send_event_txn.clone(),
1450-
parent_is_thumbnail_upload: false,
1451-
is_thumbnail: true,
1452-
},
1453-
)
1454-
.await?;
1449+
// Save the thumbnail upload request as a dependent request of the last file
1450+
// upload.
1451+
store
1452+
.save_dependent_queued_request(
1453+
&self.room_id,
1454+
&last_upload_file_txn,
1455+
upload_thumbnail_txn.clone().into(),
1456+
created_at,
1457+
DependentQueuedRequestKind::UploadFileOrThumbnail {
1458+
content_type: thumbnail_content_type.to_string(),
1459+
cache_key: thumbnail_media_request.clone(),
1460+
related_to: send_event_txn.clone(),
1461+
parent_is_thumbnail_upload: false,
1462+
file_size: *thumbnail_file_size,
1463+
thumbnail_file_size: None,
1464+
media_file_size: Some(*file_size),
1465+
},
1466+
)
1467+
.await?;
14551468

1456-
last_upload_file_txn = upload_thumbnail_txn;
1469+
last_upload_file_txn = upload_thumbnail_txn;
14571470

1458-
Some(thumbnail_info)
1459-
} else {
1460-
None
1461-
};
1471+
Some(thumbnail_info)
1472+
} else {
1473+
None
1474+
};
14621475

14631476
// Save the file upload as a dependent request of the previous upload.
14641477
store
@@ -1472,7 +1485,9 @@ impl QueueStorage {
14721485
cache_key: file_media_request.clone(),
14731486
related_to: send_event_txn.clone(),
14741487
parent_is_thumbnail_upload: thumbnail.is_some(),
1475-
is_thumbnail: false,
1488+
file_size: *file_size,
1489+
thumbnail_file_size: thumbnail.as_ref().map(|t| t.file_size),
1490+
media_file_size: None,
14761491
},
14771492
)
14781493
.await?;
@@ -2133,7 +2148,8 @@ struct GalleryItemQueueInfo {
21332148
content_type: Mime,
21342149
upload_file_txn: OwnedTransactionId,
21352150
file_media_request: MediaRequestParameters,
2136-
thumbnail: Option<(FinishUploadThumbnailInfo, MediaRequestParameters, Mime)>,
2151+
file_size: usize,
2152+
thumbnail: Option<QueueThumbnailInfo>,
21372153
}
21382154

21392155
/// The content of a local echo.

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,7 @@ impl RoomSendQueue {
336336
debug!(filename, %content_type, %upload_file_txn, "uploading a gallery attachment");
337337

338338
let file_media_request = Media::make_local_file_media_request(&upload_file_txn);
339+
let file_size = data.len();
339340

340341
let MediaCacheResult {
341342
upload_thumbnail_txn,
@@ -358,6 +359,7 @@ impl RoomSendQueue {
358359
content_type,
359360
upload_file_txn: upload_file_txn.clone(),
360361
file_media_request,
362+
file_size,
361363
thumbnail: queue_thumbnail_info,
362364
});
363365

0 commit comments

Comments
 (0)