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());
|
let model = cfg.default_model.clone().unwrap_or_else(|| "claude-opus-4-8".to_string());
|
||||||
state.settings.provider = provider.clone();
|
state.settings.provider = provider.clone();
|
||||||
state.settings.model = model.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();
|
let _ = state.settings.save();
|
||||||
state.push_toast(crate::app::state::types::Toast::new(
|
state.push_toast(crate::app::state::types::Toast::new(
|
||||||
crate::app::state::types::ToastKind::Success,
|
crate::app::state::types::ToastKind::Success,
|
||||||
|
|||||||
@@ -60,9 +60,15 @@ impl AppConfig {
|
|||||||
pub fn load() -> Self {
|
pub fn load() -> Self {
|
||||||
let store = super::store::Store::new();
|
let store = super::store::Store::new();
|
||||||
let path = store.base_dir.join("app_config.json");
|
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()
|
.ok()
|
||||||
.and_then(|s| serde_json::from_str(&s).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