app

Local-first trade for farms and co-ops
git clone https://radroots.dev/git/app.git
Log | Files | Refs | README | LICENSE

commit 57af1ca39d58b2a5b9d6c8ed949b6dbf9c0e27dc
parent b2aff3564eeaeaf4a9dab7b41b58911ff2a590c6
Author: triesap <triesap@radroots.dev>
Date:   Mon, 19 Jan 2026 17:05:05 +0000

app: thread app config into init

- store AppConfig on AppBackends
- pass config through app_init_backends
- update app init call to use default config
- adjust init test for new signature

Diffstat:
Mapp/src/app.rs | 3++-
Mapp/src/init.rs | 9+++++++--
2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/app/src/app.rs b/app/src/app.rs @@ -5,6 +5,7 @@ use crate::{ app_init_backends, app_init_state_default, app_init_mark_completed, + app_config_default, AppBackends, AppInitError, AppInitStage, @@ -21,7 +22,7 @@ pub fn App() -> impl IntoView { Effect::new(move || { spawn_local(async move { init_state.update(|state| state.stage = AppInitStage::Storage); - match app_init_backends().await { + match app_init_backends(app_config_default()).await { Ok(value) => { backends.set(Some(value)); app_init_mark_completed(); diff --git a/app/src/init.rs b/app/src/init.rs @@ -14,6 +14,8 @@ use radroots_app_core::idb::{ }; use radroots_app_core::keystore::{RadrootsClientKeystoreError, RadrootsClientWebKeystoreNostr}; +use crate::AppConfig; + #[cfg(target_arch = "wasm32")] use leptos::prelude::window; @@ -103,6 +105,7 @@ impl fmt::Display for AppInitError { impl std::error::Error for AppInitError {} pub struct AppBackends { + pub config: AppConfig, pub datastore: RadrootsClientWebDatastore, pub nostr_keystore: RadrootsClientWebKeystoreNostr, } @@ -147,7 +150,7 @@ pub fn app_init_reset() { } } -pub async fn app_init_backends() -> AppInitResult<AppBackends> { +pub async fn app_init_backends(config: AppConfig) -> AppInitResult<AppBackends> { idb_store_bootstrap(RADROOTS_IDB_DATABASE, None) .await .map_err(AppInitError::Idb)?; @@ -158,6 +161,7 @@ pub async fn app_init_backends() -> AppInitResult<AppBackends> { .map_err(AppInitError::Datastore)?; let nostr_keystore = RadrootsClientWebKeystoreNostr::new(None); Ok(AppBackends { + config, datastore, nostr_keystore, }) @@ -172,6 +176,7 @@ mod tests { AppInitErrorMessage, AppInitStage, }; + use crate::app_config_default; use radroots_app_core::datastore::RadrootsClientDatastoreError; use radroots_app_core::idb::RadrootsClientIdbStoreError; use radroots_app_core::keystore::RadrootsClientKeystoreError; @@ -200,7 +205,7 @@ mod tests { #[test] fn app_init_backends_maps_idb_errors() { - let err = match futures::executor::block_on(app_init_backends()) { + let err = match futures::executor::block_on(app_init_backends(app_config_default())) { Ok(_) => panic!("idb bootstrap should error on non-wasm"), Err(err) => err, };