diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2023-11-01 00:00:00 +0000 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2023-11-01 00:00:00 +0000 |
| commit | 497bf71910f0f224ce66b154d58a228095a40c0a (patch) | |
| tree | a3d55f0581a27465ea9ab2fd03956881ee13193a /src/client.rs | |
| parent | e237328ec611a5891586530c1d3cb26c16c1093b (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.rs | 31 |
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 | ||
| 112 | async 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)] |
| 120 | pub struct Params { | 131 | pub 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 | ||
| 136 | fn get_dedup_events( | 147 | fn 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 { |