state.rs (2203B)
1 use crate::app::identity_storage::DaemonIdentity; 2 use crate::host_nostr::{DaemonNostrClient, Keys, PublicKey}; 3 use anyhow::Result; 4 5 use crate::app::config::{Nip46Config, TransportPublishConfig}; 6 use crate::core::transport_publish::TransportPublish; 7 8 #[derive(Clone)] 9 pub struct Radrootsd { 10 pub(crate) client: DaemonNostrClient, 11 pub keys: Keys, 12 pub pubkey: PublicKey, 13 pub transport_publish: TransportPublish, 14 pub(crate) nip46_sessions: crate::core::nip46::session::Nip46SessionStore, 15 pub nip46_config: Nip46Config, 16 } 17 18 impl Radrootsd { 19 pub(crate) fn new( 20 identity: DaemonIdentity, 21 transport_publish_config: TransportPublishConfig, 22 nip46_config: Nip46Config, 23 ) -> Result<Self> { 24 let keys: Keys = identity.keys().clone(); 25 let pubkey = keys.public_key(); 26 let client = DaemonNostrClient::with_keys(keys.clone()); 27 #[cfg(test)] 28 let transport_publish = TransportPublish::memory(transport_publish_config)?; 29 #[cfg(not(test))] 30 let transport_publish = TransportPublish::open(transport_publish_config)?; 31 let nip46_sessions = crate::core::nip46::session::Nip46SessionStore::new(); 32 33 Ok(Self { 34 client, 35 keys, 36 pubkey, 37 transport_publish, 38 nip46_sessions, 39 nip46_config, 40 }) 41 } 42 } 43 44 #[cfg(test)] 45 mod tests { 46 use super::Radrootsd; 47 use crate::app::config::{Nip46Config, TransportPublishConfig}; 48 use crate::app::identity_storage::DaemonIdentity; 49 50 #[test] 51 fn new_sets_core_fields() { 52 let identity = DaemonIdentity::generate(); 53 let transport_publish_cfg = TransportPublishConfig::default(); 54 let cfg = Nip46Config::default(); 55 let state = Radrootsd::new(identity.clone(), transport_publish_cfg.clone(), cfg.clone()) 56 .expect("state"); 57 58 assert_eq!(state.pubkey, identity.public_key()); 59 assert_eq!( 60 state.transport_publish.config.enabled, 61 transport_publish_cfg.enabled 62 ); 63 assert_eq!(state.nip46_config.session_ttl_secs, cfg.session_ttl_secs); 64 assert_eq!(state.nip46_config.perms, cfg.perms); 65 } 66 }