feat: refactor async task and remove tokio as dep

This commit is contained in:
2025-02-18 16:43:30 +07:00
parent 48af00950a
commit 85c485a4e4
17 changed files with 421 additions and 484 deletions

View File

@@ -4,23 +4,29 @@ use std::{fs, sync::OnceLock, time::Duration};
static CLIENT: OnceLock<Client> = OnceLock::new();
pub fn initialize_client() {
pub fn initialize_client() -> &'static Client {
// Setup app data folder
let config_dir = config_dir().expect("Config directory not found");
let _ = fs::create_dir_all(config_dir.join("Coop/"));
let app_dir = config_dir.join("Coop/");
// Create app directory if it doesn't exist
_ = fs::create_dir_all(&app_dir);
// Setup database
let lmdb = NostrLMDB::open(config_dir.join("Coop/nostr")).expect("Database is NOT initialized");
let lmdb = NostrLMDB::open(app_dir.join("nostr")).expect("Database is NOT initialized");
// Client options
let opts = Options::new()
// NIP-65
.gossip(true)
.max_avg_latency(Duration::from_secs(2));
// Skip all very slow relays
.max_avg_latency(Duration::from_millis(800));
// Setup Nostr Client
let client = ClientBuilder::default().database(lmdb).opts(opts).build();
CLIENT.set(client).expect("Client is already initialized!");
CLIENT.get().expect("Client is NOT initialized!")
}
pub fn get_client() -> &'static Client {