use app_json_settings::ConfigManager;
#[derive(serde::Serialize, serde::Deserialize, Clone, Debug)]
pub struct OrbokSettings {
pub embedding_model_dir: Option<String>,
pub reranker_model_dir: Option<String>,
pub index_mode: String,
pub locale: String,
pub rerank_enabled: bool,
pub background_indexing: bool,
pub pause_on_battery: bool,
}
impl Default for OrbokSettings {
fn default() -> Self {
Self {
embedding_model_dir: None,
reranker_model_dir: None,
index_mode: "balanced".into(),
locale: "en".into(),
rerank_enabled: false,
background_indexing: true,
pause_on_battery: true,
}
}
}
pub fn load_settings() -> OrbokSettings {
ConfigManager::<OrbokSettings>::new()
.with_filename("settings.json")
.load_or_default()
.unwrap_or_default()
}
pub fn save_settings(settings: &OrbokSettings) -> Result<(), app_json_settings::ConfigError> {
ConfigManager::new()
.with_filename("settings.json")
.save(settings)
}