From 497bf71910f0f224ce66b154d58a228095a40c0a Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Wed, 1 Nov 2023 00:00:00 +0000 Subject: feat(login) fetch from discovered write relays immediately request metadata and relay list from any newly discovered user write relays --- src/client.rs | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) (limited to 'src/client.rs') diff --git a/src/client.rs b/src/client.rs index 5ddf742..929f19a 100644 --- a/src/client.rs +++ b/src/client.rs @@ -101,14 +101,7 @@ impl Connect for Client { filters.clone(), ) }) - .map(|(relay, filters)| { - relay.get_events_of( - filters, - // 20 is nostr_sdk default - std::time::Duration::from_secs(20), - nostr_sdk::FilterOptions::ExitOnEOSE, - ) - }), + .map(|(relay, filters)| get_events_of(relay, filters)), ) .await; @@ -116,6 +109,24 @@ impl Connect for Client { } } +async fn get_events_of( + relay: &nostr_sdk::Relay, + filters: Vec, +) -> Result> { + if !relay.is_connected().await { + relay.connect(true).await; + } + relay + .get_events_of( + filters, + // 20 is nostr_sdk default + std::time::Duration::from_secs(20), + nostr_sdk::FilterOptions::ExitOnEOSE, + ) + .await + .context("failed to get events from relay") +} + #[derive(Default)] pub struct Params { pub keys: Option, @@ -133,9 +144,7 @@ impl Params { } } -fn get_dedup_events( - relay_results: Vec, nostr_sdk::relay::Error>>, -) -> Vec { +fn get_dedup_events(relay_results: Vec>>) -> Vec { let mut dedup_events: Vec = vec![]; for events in relay_results.into_iter().flatten() { for event in events { -- cgit v1.2.3