Skip to content

Commit 7b667e6

Browse files
committed
Update gallery code path to report combined upload progress
1 parent c824b3c commit 7b667e6

File tree

2 files changed

+50
-30
lines changed

2 files changed

+50
-30
lines changed

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

Lines changed: 48 additions & 30 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
}
@@ -1395,8 +1396,13 @@ impl QueueStorage {
13951396
return Ok(());
13961397
};
13971398

1398-
let GalleryItemQueueInfo { content_type, upload_file_txn, file_media_request, thumbnail } =
1399-
first;
1399+
let GalleryItemQueueInfo {
1400+
content_type,
1401+
upload_file_txn,
1402+
file_media_request,
1403+
file_size,
1404+
thumbnail,
1405+
} = first;
14001406

14011407
let thumbnail_info = self
14021408
.push_thumbnail_and_media_uploads(
@@ -1406,6 +1412,7 @@ impl QueueStorage {
14061412
created_at,
14071413
upload_file_txn.clone(),
14081414
file_media_request.clone(),
1415+
*file_size,
14091416
thumbnail.clone(),
14101417
)
14111418
.await?;
@@ -1420,38 +1427,45 @@ impl QueueStorage {
14201427
content_type,
14211428
upload_file_txn,
14221429
file_media_request,
1430+
file_size,
14231431
thumbnail,
14241432
} = item_queue_info;
14251433

1426-
let thumbnail_info =
1427-
if let Some((thumbnail_info, thumbnail_media_request, thumbnail_content_type)) =
1428-
thumbnail
1429-
{
1430-
let upload_thumbnail_txn = thumbnail_info.txn.clone();
1434+
let thumbnail_info = if let Some(QueueThumbnailInfo {
1435+
finish_upload_thumbnail_info: thumbnail_info,
1436+
media_request_parameters: thumbnail_media_request,
1437+
content_type: thumbnail_content_type,
1438+
file_size: thumbnail_file_size,
1439+
}) = thumbnail
1440+
{
1441+
let upload_thumbnail_txn = thumbnail_info.txn.clone();
14311442

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

1449-
last_upload_file_txn = upload_thumbnail_txn;
1463+
last_upload_file_txn = upload_thumbnail_txn;
14501464

1451-
Some(thumbnail_info)
1452-
} else {
1453-
None
1454-
};
1465+
Some(thumbnail_info)
1466+
} else {
1467+
None
1468+
};
14551469

14561470
// Save the file upload as a dependent request of the previous upload.
14571471
store
@@ -1465,6 +1479,9 @@ impl QueueStorage {
14651479
cache_key: file_media_request.clone(),
14661480
related_to: send_event_txn.clone(),
14671481
parent_is_thumbnail_upload: thumbnail.is_some(),
1482+
file_size: *file_size,
1483+
thumbnail_file_size: thumbnail.as_ref().map(|t| t.file_size),
1484+
media_file_size: None,
14681485
},
14691486
)
14701487
.await?;
@@ -2125,7 +2142,8 @@ struct GalleryItemQueueInfo {
21252142
content_type: Mime,
21262143
upload_file_txn: OwnedTransactionId,
21272144
file_media_request: MediaRequestParameters,
2128-
thumbnail: Option<(FinishUploadThumbnailInfo, MediaRequestParameters, Mime)>,
2145+
file_size: usize,
2146+
thumbnail: Option<QueueThumbnailInfo>,
21292147
}
21302148

21312149
/// 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)