From 0aa0e605ce89cddf178150968eb851a84b1372f3 Mon Sep 17 00:00:00 2001 From: RobDavenport Date: Thu, 25 Apr 2024 12:53:48 +0900 Subject: [PATCH] improve download manaager --- .../src/modes/arcade_mode/download_window.rs | 14 +++++++++++--- gamercade_app/src/task_manager/http.rs | 6 ++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/gamercade_app/src/modes/arcade_mode/download_window.rs b/gamercade_app/src/modes/arcade_mode/download_window.rs index e9c0fd2..278533a 100644 --- a/gamercade_app/src/modes/arcade_mode/download_window.rs +++ b/gamercade_app/src/modes/arcade_mode/download_window.rs @@ -20,21 +20,29 @@ impl DownloadWindow { let lock = context.task_manager.http.state.blocking_lock(); lock.rom_downloads.iter().for_each(|(key, value)| { + let game_name = context + .directory + .cached_games + .iter() + .find(|game| game.id == *key) + .map(|game| game.title.as_str()) + .unwrap_or("Unknown Game"); + match value.download_status { DownloadStatus::Starting => { - ui.label(format!("{key}: Starting...")); + ui.label(format!("{game_name}: Starting...")); } DownloadStatus::InProgress { bytes_downloaded, total_bytes, } => { ui.label(format!( - "{key}: {}", + "{game_name}: {}", bytes_downloaded as f32 / total_bytes as f32 )); } DownloadStatus::Done(_) => { - ui.label(format!("{key}: Done")); + ui.label(format!("{game_name}: Done")); } } }); diff --git a/gamercade_app/src/task_manager/http.rs b/gamercade_app/src/task_manager/http.rs index 75df97a..ea0873e 100644 --- a/gamercade_app/src/task_manager/http.rs +++ b/gamercade_app/src/task_manager/http.rs @@ -180,6 +180,12 @@ fn download_file( } } Ok(None) => { + // Download is done + + // Remove it from the active download list. + let mut lock = state.lock().await; + lock.rom_downloads.remove(&request.game_id); + // Create the directory let _ = tokio::fs::create_dir_all(GAME_DIR).await;