Skip to main content

DevelopmentNodeEnvironment_MicrosoftVSCodeDependency_22NodeVersion_Bundle_Clean_Debug_ElectronProfile_EsbuildCompiler_Mountain/IPC/WindAirCommands/
DownloadUpdate.rs

1//! `DownloadUpdate` Tauri command - hand off update-package
2//! download to Air, returning a `DownloadResultDTO::Struct`.
3
4use 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}