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