mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-07-25 13:45:03 +08:00
fe190081eb
Fixed two critical issues: 1. **Blocking Issue - restart_app return type error** - Fixed compilation error where restart_app() didn't return a value - Used async spawn with 100ms delay to allow response before restart - Prevents "unreachable code" compiler error 2. **High Priority - Import SQL doesn't refresh AppSettings cache** - Added reload_settings() function to refresh in-memory settings cache - Integrated into import flow to ensure imported settings take effect - Prevents imported settings being overwritten by stale memory cache - Affects: language, config directories, auto-launch, custom endpoints Changes: - src/commands/settings.rs: Async delayed restart with proper return value - src/settings.rs: New reload_settings() to sync memory cache from DB - src/commands/import_export.rs: Call reload_settings() after SQL import Verified: cargo clippy --lib and pnpm typecheck both pass
62 lines
1.9 KiB
Rust
62 lines
1.9 KiB
Rust
#![allow(non_snake_case)]
|
|
|
|
use tauri::AppHandle;
|
|
|
|
/// 获取设置
|
|
#[tauri::command]
|
|
pub async fn get_settings() -> Result<crate::settings::AppSettings, String> {
|
|
Ok(crate::settings::get_settings())
|
|
}
|
|
|
|
/// 保存设置
|
|
#[tauri::command]
|
|
pub async fn save_settings(settings: crate::settings::AppSettings) -> Result<bool, String> {
|
|
crate::settings::update_settings(settings).map_err(|e| e.to_string())?;
|
|
Ok(true)
|
|
}
|
|
|
|
/// 重启应用程序(当 app_config_dir 变更后使用)
|
|
#[tauri::command]
|
|
pub async fn restart_app(app: AppHandle) -> Result<bool, String> {
|
|
// 在后台延迟重启,让函数有时间返回响应
|
|
tauri::async_runtime::spawn(async move {
|
|
tokio::time::sleep(tokio::time::Duration::from_millis(100)).await;
|
|
app.restart();
|
|
});
|
|
Ok(true)
|
|
}
|
|
|
|
/// 获取 app_config_dir 覆盖配置 (从 Store)
|
|
#[tauri::command]
|
|
pub async fn get_app_config_dir_override(app: AppHandle) -> Result<Option<String>, String> {
|
|
Ok(crate::app_store::refresh_app_config_dir_override(&app)
|
|
.map(|p| p.to_string_lossy().to_string()))
|
|
}
|
|
|
|
/// 设置 app_config_dir 覆盖配置 (到 Store)
|
|
#[tauri::command]
|
|
pub async fn set_app_config_dir_override(
|
|
app: AppHandle,
|
|
path: Option<String>,
|
|
) -> Result<bool, String> {
|
|
crate::app_store::set_app_config_dir_to_store(&app, path.as_deref())?;
|
|
Ok(true)
|
|
}
|
|
|
|
/// 设置开机自启
|
|
#[tauri::command]
|
|
pub async fn set_auto_launch(enabled: bool) -> Result<bool, String> {
|
|
if enabled {
|
|
crate::auto_launch::enable_auto_launch().map_err(|e| format!("启用开机自启失败: {e}"))?;
|
|
} else {
|
|
crate::auto_launch::disable_auto_launch().map_err(|e| format!("禁用开机自启失败: {e}"))?;
|
|
}
|
|
Ok(true)
|
|
}
|
|
|
|
/// 获取开机自启状态
|
|
#[tauri::command]
|
|
pub async fn get_auto_launch_status() -> Result<bool, String> {
|
|
crate::auto_launch::is_auto_launch_enabled().map_err(|e| format!("获取开机自启状态失败: {e}"))
|
|
}
|