summaryrefslogtreecommitdiffhomepage
path: root/packages/desktop/src-tauri/src/server.rs
diff options
context:
space:
mode:
Diffstat (limited to 'packages/desktop/src-tauri/src/server.rs')
-rw-r--r--packages/desktop/src-tauri/src/server.rs45
1 files changed, 44 insertions, 1 deletions
diff --git a/packages/desktop/src-tauri/src/server.rs b/packages/desktop/src-tauri/src/server.rs
index 81382f100..81e0595af 100644
--- a/packages/desktop/src-tauri/src/server.rs
+++ b/packages/desktop/src-tauri/src/server.rs
@@ -8,9 +8,20 @@ use tokio::task::JoinHandle;
use crate::{
cli,
- constants::{DEFAULT_SERVER_URL_KEY, SETTINGS_STORE},
+ constants::{DEFAULT_SERVER_URL_KEY, SETTINGS_STORE, WSL_ENABLED_KEY},
};
+#[derive(Clone, serde::Serialize, serde::Deserialize, specta::Type, Debug)]
+pub struct WslConfig {
+ pub enabled: bool,
+}
+
+impl Default for WslConfig {
+ fn default() -> Self {
+ Self { enabled: false }
+ }
+}
+
#[tauri::command]
#[specta::specta]
pub fn get_default_server_url(app: AppHandle) -> Result<Option<String>, String> {
@@ -48,6 +59,38 @@ pub async fn set_default_server_url(app: AppHandle, url: Option<String>) -> Resu
Ok(())
}
+#[tauri::command]
+#[specta::specta]
+pub fn get_wsl_config(app: AppHandle) -> Result<WslConfig, String> {
+ let store = app
+ .store(SETTINGS_STORE)
+ .map_err(|e| format!("Failed to open settings store: {}", e))?;
+
+ let enabled = store
+ .get(WSL_ENABLED_KEY)
+ .as_ref()
+ .and_then(|v| v.as_bool())
+ .unwrap_or(false);
+
+ Ok(WslConfig { enabled })
+}
+
+#[tauri::command]
+#[specta::specta]
+pub fn set_wsl_config(app: AppHandle, config: WslConfig) -> Result<(), String> {
+ let store = app
+ .store(SETTINGS_STORE)
+ .map_err(|e| format!("Failed to open settings store: {}", e))?;
+
+ store.set(WSL_ENABLED_KEY, serde_json::Value::Bool(config.enabled));
+
+ store
+ .save()
+ .map_err(|e| format!("Failed to save settings: {}", e))?;
+
+ Ok(())
+}
+
pub async fn get_saved_server_url(app: &tauri::AppHandle) -> Option<String> {
if let Some(url) = get_default_server_url(app.clone()).ok().flatten() {
tracing::info!(%url, "Using desktop-specific custom URL");