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 destination:String,
15 checksum:Option<String>,
16) -> Result<DownloadResultDTO::Struct, String> {
17 dev_log!("grpc", "[WindAirCommands] DownloadUpdate called: {} -> {}", url, destination);
18
19 let air_address = GetAirAddress::Fn()?;
20 let client = GetOrCreateAirClient::Fn(air_address).await?;
21
22 let request_id = uuid::Uuid::new_v4().to_string();
23
24 let file_info = client
25 .download_update(
26 request_id,
27 url,
28 destination,
29 checksum.unwrap_or_default(),
30 std::collections::HashMap::new(),
31 )
32 .await
33 .map_err(|e| format!("Update download failed: {:?}", e))?;
34
35 let result = DownloadResultDTO::Struct {
36 success:true,
37 file_path:file_info.file_path,
38 file_size:file_info.file_size,
39 checksum:file_info.checksum,
40 };
41
42 dev_log!(
43 "grpc",
44 "[WindAirCommands] Update download completed: success={}",
45 result.success
46 );
47 Ok(result)
48}