Mountain/IPC/WindAirCommands/
DownloadUpdate.rs1
2use crate::{
6 IPC::WindAirCommands::{DownloadResultDTO, GetAirAddress, GetOrCreateAirClient},
7 dev_log,
8};
9
10#[tauri::command]
11pub async fn DownloadUpdate(
12 url:String,
13
14 destination:String,
15
16 checksum:Option<String>,
17) -> Result<DownloadResultDTO::Struct, String> {
18 dev_log!("grpc", "[WindAirCommands] DownloadUpdate called: {} -> {}", url, destination);
19
20 let air_address = GetAirAddress::Fn()?;
21
22 let client = GetOrCreateAirClient::Fn(air_address).await?;
23
24 let request_id = uuid::Uuid::new_v4().to_string();
25
26 let file_info = client
27 .download_update(
28 request_id,
29 url,
30 destination,
31 checksum.unwrap_or_default(),
32 std::collections::HashMap::new(),
33 )
34 .await
35 .map_err(|e| format!("Update download failed: {:?}", e))?;
36
37 let result = DownloadResultDTO::Struct {
38 success:true,
39
40 file_path:file_info.file_path,
41
42 file_size:file_info.file_size,
43
44 checksum:file_info.checksum,
45 };
46
47 dev_log!(
48 "grpc",
49 "[WindAirCommands] Update download completed: success={}",
50 result.success
51 );
52
53 Ok(result)
54}