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