托盘
This commit is contained in:
@@ -3,7 +3,7 @@ use std::collections::HashMap;
|
||||
use tauri::{AppHandle, State};
|
||||
use tauri_plugin_opener::OpenerExt;
|
||||
|
||||
use super::engine::DownloadEngine;
|
||||
use super::engine::{CheckUrlResult, DownloadEngine};
|
||||
use super::task::{DownloadTask, DownloaderSettings};
|
||||
|
||||
/// 获取所有任务
|
||||
@@ -12,6 +12,39 @@ pub fn downloader_get_tasks(engine: State<'_, DownloadEngine>) -> Vec<DownloadTa
|
||||
engine.get_tasks()
|
||||
}
|
||||
|
||||
/// 检查 URL 重复性并探测文件信息(添加下载前调用)
|
||||
#[tauri::command]
|
||||
pub async fn downloader_check_url(
|
||||
engine: State<'_, DownloadEngine>,
|
||||
url: String,
|
||||
dir: Option<String>,
|
||||
headers: Option<HashMap<String, String>>,
|
||||
) -> Result<CheckUrlResult, String> {
|
||||
let headers = headers.unwrap_or_default();
|
||||
let (probe, duplicate, existing) = engine.check_url(&url, dir.as_deref(), &headers).await;
|
||||
let result = match probe {
|
||||
Ok(p) => CheckUrlResult {
|
||||
ok: true,
|
||||
error: None,
|
||||
filename: p.filename.clone(),
|
||||
total_size: p.total_size,
|
||||
supports_resume: p.supports_resume,
|
||||
duplicate,
|
||||
existing,
|
||||
},
|
||||
Err(e) => CheckUrlResult {
|
||||
ok: false,
|
||||
error: Some(e),
|
||||
filename: None,
|
||||
total_size: None,
|
||||
supports_resume: false,
|
||||
duplicate,
|
||||
existing,
|
||||
},
|
||||
};
|
||||
Ok(result)
|
||||
}
|
||||
|
||||
/// 添加下载任务
|
||||
#[tauri::command]
|
||||
pub async fn downloader_add_task(
|
||||
@@ -20,8 +53,9 @@ pub async fn downloader_add_task(
|
||||
filename: Option<String>,
|
||||
dir: Option<String>,
|
||||
headers: Option<HashMap<String, String>>,
|
||||
auto_rename: Option<bool>,
|
||||
) -> Result<String, String> {
|
||||
engine.add_task(url, filename, dir, headers.unwrap_or_default()).await
|
||||
engine.add_task(url, filename, dir, headers.unwrap_or_default(), auto_rename.unwrap_or(false)).await
|
||||
}
|
||||
|
||||
/// 暂停任务
|
||||
|
||||
Reference in New Issue
Block a user