mirror of
https://github.com/nimbold/Firelink.git
synced 2026-08-07 09:53:17 +00:00
fix: resolve download state, toast UI, and checksum cleanup loopholes
- Prevent backward state transitions for downloads in frontend store. - Add Downloading event emission upon aria2 unpause. - Fix toast container visual bleed on exit by adding overflow-hidden. - Add retry backoff for deleted files to prevent Windows file lock errors. - Lowercase checksum hash types before passing to aria2. - Clean up lingering files upon checksum verification failure. - Convert Tauri AppHandle arguments to support generic runtimes.
This commit is contained in:
+15
-1
@@ -483,6 +483,15 @@ impl<R: tauri::Runtime> QueueManager<R> {
|
||||
self.release_registered_id(id).await;
|
||||
}
|
||||
PendingOutcome::Error(error) => {
|
||||
if error.to_ascii_lowercase().contains("checksum") {
|
||||
log::warn!("Checksum error detected for {}, cleaning up assets", id);
|
||||
if let Ok(primary_path) = crate::download_ownership::primary_path_for_id(&self.app_handle, id) {
|
||||
if let Some(path) = primary_path.as_deref() {
|
||||
let _ = crate::remove_download_assets(path, &self.app_handle).await;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
self.clear_aria2_retry_state(id).await;
|
||||
self.forget_aria2_gid(id).await;
|
||||
self.emit_failed(id, error);
|
||||
@@ -868,7 +877,12 @@ impl SidecarSpawner for ProductionSpawner {
|
||||
options.insert("http-passwd".to_string(), serde_json::json!(pass));
|
||||
}
|
||||
if let Some(chk) = &payload.checksum {
|
||||
options.insert("checksum".to_string(), serde_json::json!(chk));
|
||||
let formatted_chk = if let Some((algo, digest)) = chk.split_once('=') {
|
||||
format!("{}={}", algo.to_ascii_lowercase(), digest)
|
||||
} else {
|
||||
chk.clone()
|
||||
};
|
||||
options.insert("checksum".to_string(), serde_json::json!(formatted_chk));
|
||||
}
|
||||
if let Some(ua) = &payload.user_agent {
|
||||
options.insert("user-agent".to_string(), serde_json::json!(ua));
|
||||
|
||||
Reference in New Issue
Block a user