commit 227a975ef853fd0dfc1250dea943632bbe79b824
parent 59b792f10147bf9bf41bf4d24da503e2935f76df
Author: triesap <triesap@radroots.dev>
Date: Wed, 21 Jan 2026 16:12:42 +0000
app: add app data initialization predicate
- add helper to check required app data fields
- export initialization helper for gating flow
- add unit test for initialization requirements
- keep app data schema unchanged
Diffstat:
2 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/app/src/data.rs b/app/src/data.rs
@@ -55,9 +55,13 @@ impl Default for RadrootsAppState {
}
}
+pub fn app_state_is_initialized(state: &RadrootsAppState) -> bool {
+ !state.active_key.is_empty() && !state.eula_date.is_empty()
+}
+
#[cfg(test)]
mod tests {
- use super::{RadrootsAppState, RadrootsAppSettings, RadrootsAppRole};
+ use super::{app_state_is_initialized, RadrootsAppRole, RadrootsAppSettings, RadrootsAppState};
#[test]
fn role_defaults_to_public() {
@@ -83,4 +87,15 @@ mod tests {
assert!(data.nip05_key.is_none());
assert!(data.notifications_permission.is_none());
}
+
+ #[test]
+ fn state_initialized_requires_key_and_eula() {
+ let data = RadrootsAppState::default();
+ assert!(!app_state_is_initialized(&data));
+ let mut data = RadrootsAppState::default();
+ data.active_key = "pub".to_string();
+ assert!(!app_state_is_initialized(&data));
+ data.eula_date = "2025-01-01T00:00:00Z".to_string();
+ assert!(app_state_is_initialized(&data));
+ }
}
diff --git a/app/src/lib.rs b/app/src/lib.rs
@@ -27,7 +27,7 @@ pub use bootstrap::{
app_datastore_write_settings,
};
pub use context::{app_context, RadrootsAppContext};
-pub use data::{RadrootsAppState, RadrootsAppSettings, RadrootsAppRole};
+pub use data::{app_state_is_initialized, RadrootsAppRole, RadrootsAppSettings, RadrootsAppState};
pub use health::{
app_health_check_all,
app_health_check_all_logged,