diff options
Diffstat (limited to 'src/lib/client.rs')
| -rw-r--r-- | src/lib/client.rs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/lib/client.rs b/src/lib/client.rs index 5ba64ff..bfa7b33 100644 --- a/src/lib/client.rs +++ b/src/lib/client.rs | |||
| @@ -39,7 +39,7 @@ use nostr_lmdb::NostrLMDB; | |||
| 39 | use nostr_relay_pool::relay::ReqExitPolicy; | 39 | use nostr_relay_pool::relay::ReqExitPolicy; |
| 40 | use nostr_sdk::{ | 40 | use nostr_sdk::{ |
| 41 | EventBuilder, EventId, Kind, NostrSigner, Options, PublicKey, RelayUrl, SingleLetterTag, | 41 | EventBuilder, EventId, Kind, NostrSigner, Options, PublicKey, RelayUrl, SingleLetterTag, |
| 42 | Timestamp, prelude::RelayLimits, | 42 | Timestamp, Url, prelude::RelayLimits, |
| 43 | }; | 43 | }; |
| 44 | 44 | ||
| 45 | use crate::{ | 45 | use crate::{ |
| @@ -973,15 +973,17 @@ pub async fn get_repo_ref_from_cache( | |||
| 973 | } | 973 | } |
| 974 | } | 974 | } |
| 975 | 975 | ||
| 976 | // Use relays and git servers from all maintainer announcement events | 976 | // Use relays, git and blossom servers from all maintainer announcement events |
| 977 | // we use Vec and HashSet to remove duplicates and preserve order | 977 | // we use Vec and HashSet to remove duplicates and preserve order |
| 978 | let mut relays: Vec<RelayUrl> = repo_ref.relays.clone(); | 978 | let mut relays: Vec<RelayUrl> = repo_ref.relays.clone(); |
| 979 | let mut git_server: Vec<String> = repo_ref.git_server.clone(); | 979 | let mut git_server: Vec<String> = repo_ref.git_server.clone(); |
| 980 | let mut blossoms: Vec<Url> = repo_ref.blossoms.clone(); | ||
| 980 | let mut seen_relays: HashSet<RelayUrl> = HashSet::from_iter(relays.iter().cloned()); | 981 | let mut seen_relays: HashSet<RelayUrl> = HashSet::from_iter(relays.iter().cloned()); |
| 981 | let mut seen_git_server: HashSet<String> = git_server | 982 | let mut seen_git_server: HashSet<String> = git_server |
| 982 | .iter() | 983 | .iter() |
| 983 | .map(|server| server.trim_end_matches('/').to_string()) | 984 | .map(|server| server.trim_end_matches('/').to_string()) |
| 984 | .collect(); | 985 | .collect(); |
| 986 | let mut seen_blossoms: HashSet<Url> = HashSet::from_iter(blossoms.iter().cloned()); | ||
| 985 | 987 | ||
| 986 | for m in &maintainers { | 988 | for m in &maintainers { |
| 987 | if let Some(event) = repo_events.iter().find(|e| e.pubkey == *m) { | 989 | if let Some(event) = repo_events.iter().find(|e| e.pubkey == *m) { |
| @@ -996,6 +998,11 @@ pub async fn get_repo_ref_from_cache( | |||
| 996 | git_server.push(server); | 998 | git_server.push(server); |
| 997 | } | 999 | } |
| 998 | } | 1000 | } |
| 1001 | for blossom in m_repo_ref.blossoms { | ||
| 1002 | if seen_blossoms.insert(blossom.clone()) { | ||
| 1003 | blossoms.push(blossom); | ||
| 1004 | } | ||
| 1005 | } | ||
| 999 | } | 1006 | } |
| 1000 | } | 1007 | } |
| 1001 | } | 1008 | } |