wip: refactor

This commit is contained in:
2025-01-24 14:03:31 +07:00
parent 3b6541b900
commit 29a8e2c8ac
5 changed files with 51 additions and 34 deletions

10
crates/state/Cargo.toml Normal file
View File

@@ -0,0 +1,10 @@
[package]
name = "state"
version = "0.1.0"
edition = "2021"
publish = false
[dependencies]
nostr-sdk.workspace = true
tokio.workspace = true
dirs.workspace = true

28
crates/state/src/lib.rs Normal file
View File

@@ -0,0 +1,28 @@
use dirs::config_dir;
use nostr_sdk::prelude::*;
use std::{fs, sync::OnceLock, time::Duration};
static CLIENT: OnceLock<Client> = OnceLock::new();
pub fn initialize_client() {
// Setup app data folder
let config_dir = config_dir().expect("Config directory not found");
let _ = fs::create_dir_all(config_dir.join("Coop/"));
// Setup database
let lmdb = NostrLMDB::open(config_dir.join("Coop/nostr")).expect("Database is NOT initialized");
// Client options
let opts = Options::new()
.gossip(true)
.max_avg_latency(Duration::from_secs(2));
// Setup Nostr Client
let client = ClientBuilder::default().database(lmdb).opts(opts).build();
CLIENT.set(client).expect("Client is already initialized!");
}
pub fn get_client() -> &'static Client {
CLIENT.get().expect("Client is NOT initialized!")
}