upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/src/client.rs
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2023-11-01 00:00:00 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2023-11-01 00:00:00 +0000
commit497bf71910f0f224ce66b154d58a228095a40c0a (patch)
treea3d55f0581a27465ea9ab2fd03956881ee13193a /src/client.rs
parente237328ec611a5891586530c1d3cb26c16c1093b (diff)
feat(login) fetch from discovered write relays
immediately request metadata and relay list from any newly discovered user write relays
Diffstat (limited to 'src/client.rs')
-rw-r--r--src/client.rs31
1 files changed, 20 insertions, 11 deletions
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 {
101 filters.clone(), 101 filters.clone(),
102 ) 102 )
103 }) 103 })
104 .map(|(relay, filters)| { 104 .map(|(relay, filters)| get_events_of(relay, filters)),
105 relay.get_events_of(
106 filters,
107 // 20 is nostr_sdk default
108 std::time::Duration::from_secs(20),
109 nostr_sdk::FilterOptions::ExitOnEOSE,
110 )
111 }),
112 ) 105 )
113 .await; 106 .await;
114 107
@@ -116,6 +109,24 @@ impl Connect for Client {
116 } 109 }
117} 110}
118 111
112async fn get_events_of(
113 relay: &nostr_sdk::Relay,
114 filters: Vec<nostr::Filter>,
115) -> Result<Vec<Event>> {
116 if !relay.is_connected().await {
117 relay.connect(true).await;
118 }
119 relay
120 .get_events_of(
121 filters,
122 // 20 is nostr_sdk default
123 std::time::Duration::from_secs(20),
124 nostr_sdk::FilterOptions::ExitOnEOSE,
125 )
126 .await
127 .context("failed to get events from relay")
128}
129
119#[derive(Default)] 130#[derive(Default)]
120pub struct Params { 131pub struct Params {
121 pub keys: Option<nostr::Keys>, 132 pub keys: Option<nostr::Keys>,
@@ -133,9 +144,7 @@ impl Params {
133 } 144 }
134} 145}
135 146
136fn get_dedup_events( 147fn get_dedup_events(relay_results: Vec<Result<Vec<nostr::Event>>>) -> Vec<Event> {
137 relay_results: Vec<Result<Vec<nostr::Event>, nostr_sdk::relay::Error>>,
138) -> Vec<Event> {
139 let mut dedup_events: Vec<Event> = vec![]; 148 let mut dedup_events: Vec<Event> = vec![];
140 for events in relay_results.into_iter().flatten() { 149 for events in relay_results.into_iter().flatten() {
141 for event in events { 150 for event in events {