diff --git a/src-tauri/src/web/handlers/system_settings.rs b/src-tauri/src/web/handlers/system_settings.rs index 17a6fa4..4645ae1 100644 --- a/src-tauri/src/web/handlers/system_settings.rs +++ b/src-tauri/src/web/handlers/system_settings.rs @@ -1,4 +1,5 @@ use axum::{extract::Extension, Json}; +use serde::Deserialize; use tauri::Manager; use crate::app_error::AppCommandError; @@ -12,6 +13,20 @@ const SYSTEM_PROXY_SETTINGS_KEY: &str = "system_proxy_settings"; const SYSTEM_LANGUAGE_SETTINGS_KEY: &str = "system_language_settings"; const LANGUAGE_SETTINGS_UPDATED_EVENT: &str = "app://language-settings-updated"; +// Wrapper structs to match Tauri's named parameter convention. +// Frontend sends `{ settings: }` which Tauri `invoke()` unwraps automatically, +// but in web mode the entire JSON body arrives as-is. + +#[derive(Deserialize)] +pub struct UpdateProxySettingsParams { + pub settings: SystemProxySettings, +} + +#[derive(Deserialize)] +pub struct UpdateLanguageSettingsParams { + pub settings: SystemLanguageSettings, +} + // --------------------------------------------------------------------------- // Read handlers // --------------------------------------------------------------------------- @@ -39,8 +54,9 @@ pub async fn get_system_language_settings( pub async fn update_system_proxy_settings( Extension(app): Extension, - Json(settings): Json, + Json(params): Json, ) -> Result, AppCommandError> { + let settings = params.settings; let db = app.state::(); // TODO: call normalize_proxy_settings once it is made pub(crate) in @@ -64,8 +80,9 @@ pub async fn update_system_proxy_settings( pub async fn update_system_language_settings( Extension(app): Extension, - Json(settings): Json, + Json(params): Json, ) -> Result, AppCommandError> { + let settings = params.settings; let db = app.state::(); let serialized = serde_json::to_string(&settings).map_err(|e| { diff --git a/src-tauri/src/web/handlers/version_control.rs b/src-tauri/src/web/handlers/version_control.rs index 41604cb..6151932 100644 --- a/src-tauri/src/web/handlers/version_control.rs +++ b/src-tauri/src/web/handlers/version_control.rs @@ -41,6 +41,16 @@ pub struct SaveAccountTokenParams { pub token: String, } +#[derive(Deserialize)] +pub struct UpdateGitSettingsParams { + pub settings: GitSettings, +} + +#[derive(Deserialize)] +pub struct UpdateGitHubAccountsParams { + pub settings: GitHubAccountsSettings, +} + // --------------------------------------------------------------------------- // Git detection // --------------------------------------------------------------------------- @@ -84,8 +94,9 @@ pub async fn get_git_settings( pub async fn update_git_settings( Extension(app): Extension, - Json(settings): Json, + Json(params): Json, ) -> Result, AppCommandError> { + let settings = params.settings; let db = app.state::(); let serialized = serde_json::to_string(&settings).map_err(|e| { AppCommandError::invalid_input("Failed to serialize git settings") @@ -125,8 +136,9 @@ pub async fn get_github_accounts( pub async fn update_github_accounts( Extension(app): Extension, - Json(settings): Json, + Json(params): Json, ) -> Result, AppCommandError> { + let settings = params.settings; let db = app.state::(); let serialized = serde_json::to_string(&settings).map_err(|e| { AppCommandError::invalid_input("Failed to serialize GitHub accounts")