feat(tui): surface the failure reason on failed downloads

Carry a human-readable reason on DownloadStatus::Failed so it flows
through the existing status channel to the TUI. The download Info pane
now shows an Error line for a failed download (connect failure, peer
disconnect, truncated transfer, peer-reported upload failure, or the
underlying transfer error). Failures without a known reason render as
before.
This commit is contained in:
michel
2026-07-19 19:36:15 +02:00
parent 4809dd7059
commit ae28f4236a
9 changed files with 114 additions and 34 deletions
+4 -2
View File
@@ -149,7 +149,9 @@ pub fn collect_failed_tokens(
d.username == username && filename.is_none_or(|f| d.filename == *f)
})
.map(|d| {
let _ = d.sender.send(DownloadStatus::Failed);
let _ = d.sender.send(DownloadStatus::Failed(Some(
"Peer reported the upload failed".to_string(),
)));
d.token
})
.collect()
@@ -301,7 +303,7 @@ mod tests {
assert_eq!(tokens, vec![1]);
assert!(matches!(
rx_match.try_recv().unwrap(),
DownloadStatus::Failed
DownloadStatus::Failed(_)
));
}
}