Mountain/Binary/IPC/WindConfigurationCommand.rs
1//! # WindConfigurationCommand
2//!
3//! Retrieves Wind desktop configuration via IPC.
4//!
5//! ## RESPONSIBILITIES
6//!
7//! ### Configuration Retrieval
8//! - Get Wind desktop configuration from ConfigurationBridge
9//! - Return structured configuration data
10//! - Handle configuration retrieval errors
11//!
12//! ## ARCHITECTURAL ROLE
13//!
14//! ### Position in Mountain
15//! - IPC wrapper command in Binary subsystem
16//! - Bridge to ConfigurationBridge for Wind config
17//!
18//! ### Dependencies
19//! - crate::IPC::ConfigurationBridge: Configuration management
20//! - tauri: IPC framework
21//! - serde_json: JSON serialization
22//!
23//! ### Dependents
24//! - Wind frontend: Retrieves desktop configuration
25//! - Tauri IPC handler: Routes configuration requests
26//!
27//! ## SECURITY
28//!
29//! ### Considerations
30//! - Configuration may contain sensitive information
31//! - Ensure access control for sensitive configuration keys
32//!
33//! ## PERFORMANCE
34//!
35//! ### Considerations
36//! - Configuration is typically cached, fast retrieval
37//! - Consider caching in memory for frequently accessed config
38
39use serde_json::{Value, to_value};
40use tauri::AppHandle;
41
42/// Get Wind desktop configuration.
43///
44/// Retrieves the Wind desktop configuration for frontend initialization.
45///
46/// # Arguments
47///
48/// * `app_handle` - Tauri application handle
49///
50/// # Returns
51///
52/// Returns Wind configuration JSON, or an error string.
53///
54/// # Errors
55///
56/// Returns an error if:
57/// - Configuration cannot be loaded
58/// - Serialization fails
59#[tauri::command]
60pub async fn MountainGetWindDesktopConfiguration(app_handle:AppHandle) -> Result<Value, String> {
61 let config = crate::IPC::ConfigurationBridge::mountain_get_wind_desktop_configuration(app_handle).await?;
62 to_value(&config).map_err(|e| format!("Failed to serialize configuration: {}", e))
63}