aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src-tauri/src/core/downloader.rs
diff options
context:
space:
mode:
author简律纯 <i@jyunko.cn>2026-01-14 15:54:39 +0800
committerGitHub <noreply@github.com>2026-01-14 15:54:39 +0800
commitce4b0c2053d5d16f7091d74840d4a502401f1a4e (patch)
tree170667359ecb773800cd334e4176341cf09306b2 /src-tauri/src/core/downloader.rs
parentfd6d7ffef4a1c6b093ad1d5b83579ab27ef5327e (diff)
parent505e3485f3dfa31969651f7f281fde33e9843fe8 (diff)
downloadDropOut-ce4b0c2053d5d16f7091d74840d4a502401f1a4e.tar.gz
DropOut-ce4b0c2053d5d16f7091d74840d4a502401f1a4e.zip
Merge pull request #25 from HsiangNianian/main
Diffstat (limited to 'src-tauri/src/core/downloader.rs')
-rw-r--r--src-tauri/src/core/downloader.rs40
1 files changed, 34 insertions, 6 deletions
diff --git a/src-tauri/src/core/downloader.rs b/src-tauri/src/core/downloader.rs
index 7ff81ad..3add9b7 100644
--- a/src-tauri/src/core/downloader.rs
+++ b/src-tauri/src/core/downloader.rs
@@ -69,7 +69,10 @@ impl GlobalProgress {
/// Add downloaded bytes and return updated snapshot
fn add_bytes(&self, delta: u64) -> ProgressSnapshot {
- let total_bytes = self.total_downloaded_bytes.fetch_add(delta, Ordering::Relaxed) + delta;
+ let total_bytes = self
+ .total_downloaded_bytes
+ .fetch_add(delta, Ordering::Relaxed)
+ + delta;
ProgressSnapshot {
completed_files: self.completed_files.load(Ordering::Relaxed),
total_files: self.total_files,
@@ -101,10 +104,14 @@ fn emit_progress(
);
}
-pub async fn download_files(window: Window, tasks: Vec<DownloadTask>, max_concurrent: usize) -> Result<(), String> {
+pub async fn download_files(
+ window: Window,
+ tasks: Vec<DownloadTask>,
+ max_concurrent: usize,
+) -> Result<(), String> {
// Clamp max_concurrent to a valid range (1-128) to prevent edge cases
let max_concurrent = max_concurrent.clamp(1, 128);
-
+
let client = reqwest::Client::new();
let semaphore = Arc::new(Semaphore::new(max_concurrent));
let progress = Arc::new(GlobalProgress::new(tasks.len()));
@@ -141,7 +148,14 @@ pub async fn download_files(window: Window, tasks: Vec<DownloadTask>, max_concur
if skipped_size > 0 {
let _ = progress.add_bytes(skipped_size);
}
- emit_progress(&window, &file_name, "Skipped", 0, 0, &progress.inc_completed());
+ emit_progress(
+ &window,
+ &file_name,
+ "Skipped",
+ 0,
+ 0,
+ &progress.inc_completed(),
+ );
return Ok(());
}
}
@@ -170,7 +184,14 @@ pub async fn download_files(window: Window, tasks: Vec<DownloadTask>, max_concur
}
downloaded += chunk.len() as u64;
let snapshot = progress.add_bytes(chunk.len() as u64);
- emit_progress(&window, &file_name, "Downloading", downloaded, total_size, &snapshot);
+ emit_progress(
+ &window,
+ &file_name,
+ "Downloading",
+ downloaded,
+ total_size,
+ &snapshot,
+ );
}
Ok(None) => break,
Err(e) => return Err(format!("Download error: {}", e)),
@@ -180,7 +201,14 @@ pub async fn download_files(window: Window, tasks: Vec<DownloadTask>, max_concur
Err(e) => return Err(format!("Request error: {}", e)),
}
- emit_progress(&window, &file_name, "Finished", 0, 0, &progress.inc_completed());
+ emit_progress(
+ &window,
+ &file_name,
+ "Finished",
+ 0,
+ 0,
+ &progress.inc_completed(),
+ );
Ok(())
}
});