feat: 实现 Tauri Commands - 完成所有供应商和配置管理命令

This commit is contained in:
farion1231
2025-08-23 20:15:10 +08:00
parent f64320fbd6
commit 8a3133be43
2 changed files with 285 additions and 14 deletions

View File

@@ -1,16 +1,72 @@
mod config;
mod provider;
mod store;
mod commands;
use store::AppState;
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
.setup(|app| {
if cfg!(debug_assertions) {
app.handle().plugin(
tauri_plugin_log::Builder::default()
.level(log::LevelFilter::Info)
.build(),
)?;
}
Ok(())
})
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
tauri::Builder::default()
.setup(|app| {
// 初始化日志
if cfg!(debug_assertions) {
app.handle().plugin(
tauri_plugin_log::Builder::default()
.level(log::LevelFilter::Info)
.build(),
)?;
}
// 初始化应用状态
let app_state = AppState::new();
// 如果没有供应商且存在 Claude Code 配置,自动导入
{
let manager = app_state.provider_manager.lock().unwrap();
if manager.providers.is_empty() {
drop(manager); // 释放锁
let settings_path = config::get_claude_settings_path();
if settings_path.exists() {
log::info!("检测到 Claude Code 配置,自动导入为默认供应商");
if let Ok(settings_config) = config::import_current_config_as_default() {
let mut manager = app_state.provider_manager.lock().unwrap();
let provider = provider::Provider::with_id(
"default".to_string(),
"default".to_string(),
settings_config,
None,
);
if manager.add_provider(provider).is_ok() {
manager.current = "default".to_string();
drop(manager);
let _ = app_state.save();
log::info!("成功导入默认供应商");
}
}
}
}
}
Ok(())
})
.manage(AppState::new())
.invoke_handler(tauri::generate_handler![
commands::get_providers,
commands::get_current_provider,
commands::add_provider,
commands::update_provider,
commands::delete_provider,
commands::switch_provider,
commands::import_default_config,
commands::get_claude_config_status,
commands::get_claude_code_config_path,
commands::open_config_folder,
commands::open_external,
])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}