commit d318d2c48fa8daaa078d4b541a088ecb2fddbf50
parent 42f5d5c85648a49230828ae4632866544259a9d3
Author: triesap <triesap@radroots.dev>
Date: Mon, 19 Jan 2026 17:33:13 +0000
app: add AppConfig validation helper
- add AppConfig::validate wrapper for key map rules
- use config validation in init path
- add unit test for validate behavior
- keep error mapping unchanged
Diffstat:
2 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/app/src/config.rs b/app/src/config.rs
@@ -168,6 +168,10 @@ impl AppConfig {
keystore: AppKeystoreConfig::default_config(),
}
}
+
+ pub fn validate(&self) -> AppConfigResult<()> {
+ app_key_maps_validate(&self.datastore.key_maps)
+ }
}
pub fn app_config_default() -> AppConfig {
@@ -224,6 +228,14 @@ mod tests {
}
#[test]
+ fn app_config_validate_uses_key_map_rules() {
+ let config = app_config_default();
+ assert!(config.validate().is_ok());
+ let empty = AppConfig::empty();
+ assert!(empty.validate().is_err());
+ }
+
+ #[test]
fn keystore_config_defaults_to_nostr_store() {
let config = AppKeystoreConfig::default_config();
assert_eq!(config.nostr_store, IDB_CONFIG_KEYSTORE_NOSTR);
diff --git a/app/src/init.rs b/app/src/init.rs
@@ -14,7 +14,7 @@ use radroots_app_core::idb::{
};
use radroots_app_core::keystore::{RadrootsClientKeystoreError, RadrootsClientWebKeystoreNostr};
-use crate::{app_key_maps_validate, AppConfig, AppConfigError};
+use crate::{AppConfig, AppConfigError};
#[cfg(target_arch = "wasm32")]
use leptos::prelude::window;
@@ -153,7 +153,7 @@ pub fn app_init_reset() {
}
pub async fn app_init_backends(config: AppConfig) -> AppInitResult<AppBackends> {
- app_key_maps_validate(&config.datastore.key_maps).map_err(AppInitError::Config)?;
+ config.validate().map_err(AppInitError::Config)?;
idb_store_bootstrap(RADROOTS_IDB_DATABASE, None)
.await
.map_err(AppInitError::Idb)?;