From 84bac254b1b0da8bc5fe37f615700a00ec2385ff Mon Sep 17 00:00:00 2001 From: Mike Dilger Date: Sat, 24 Dec 2022 20:52:23 +1300 Subject: [PATCH] Store all relays in globals (ui will need for relay page) --- src/globals.rs | 4 ++++ src/overlord/mod.rs | 14 +++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/globals.rs b/src/globals.rs index 2155a46a..bbc73e0c 100644 --- a/src/globals.rs +++ b/src/globals.rs @@ -44,6 +44,9 @@ pub struct Globals { /// All nostr people records currently loaded into memory, keyed by pubkey pub people: Mutex>, + /// All nostr relay records we have + pub relays: Mutex>, + /// Whether or not we have a saved private key and need the password to unlock it pub need_password: AtomicBool, @@ -74,6 +77,7 @@ lazy_static! { last_reply: Mutex::new(HashMap::new()), desired_events: Mutex::new(HashMap::new()), people: Mutex::new(HashMap::new()), + relays: Mutex::new(HashMap::new()), need_password: AtomicBool::new(false), shutting_down: AtomicBool::new(false), settings: Mutex::new(Settings::default()), diff --git a/src/overlord/mod.rs b/src/overlord/mod.rs index 08c05649..181a2420 100644 --- a/src/overlord/mod.rs +++ b/src/overlord/mod.rs @@ -134,6 +134,18 @@ impl Overlord { // updated from events without necessarily updating our relays list) DbRelay::populate_new_relays().await?; + // Load relays from the database + let all_relays = DbRelay::fetch(None).await?; + + // Store copy of all relays in globals (we use it again down below) + for relay in all_relays.iter() { + GLOBALS + .relays + .lock() + .await + .insert(Url(relay.url.clone()), relay.clone()); + } + // Load people from the database { let mut dbpeople = DbPerson::fetch(None).await?; @@ -191,7 +203,7 @@ impl Overlord { let pubkeys: Vec = crate::globals::followed_pubkeys().await; let mut relay_picker = RelayPicker { - relays: DbRelay::fetch(None).await?, + relays: all_relays, pubkeys: pubkeys.clone(), person_relays: DbPersonRelay::fetch_for_pubkeys(&pubkeys).await?, };