feat: enhance AppConfig loading to merge default providers and set API key
This commit is contained in:
@@ -280,6 +280,12 @@ fn handle_overlay_enter(state: &mut AppStateRest) -> Vec<Action> {
|
||||
let model = cfg.default_model.clone().unwrap_or_else(|| "claude-opus-4-8".to_string());
|
||||
state.settings.provider = provider.clone();
|
||||
state.settings.model = model.clone();
|
||||
// Set API key from provider's default if not already configured
|
||||
if state.settings.api_key.is_none() || state.settings.api_key.as_deref() == Some("") {
|
||||
if let Some(ref key) = cfg.default_api_key {
|
||||
state.settings.api_key = Some(key.clone());
|
||||
}
|
||||
}
|
||||
let _ = state.settings.save();
|
||||
state.push_toast(crate::app::state::types::Toast::new(
|
||||
crate::app::state::types::ToastKind::Success,
|
||||
|
||||
@@ -60,9 +60,15 @@ impl AppConfig {
|
||||
pub fn load() -> Self {
|
||||
let store = super::store::Store::new();
|
||||
let path = store.base_dir.join("app_config.json");
|
||||
std::fs::read_to_string(path)
|
||||
let mut cfg: AppConfig = std::fs::read_to_string(path)
|
||||
.ok()
|
||||
.and_then(|s| serde_json::from_str(&s).ok())
|
||||
.unwrap_or_default()
|
||||
.unwrap_or_default();
|
||||
// Merge any default providers not present in the loaded config
|
||||
let defaults = Self::default();
|
||||
for (name, provider) in defaults.providers {
|
||||
cfg.providers.entry(name).or_insert(provider);
|
||||
}
|
||||
cfg
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user