diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2025-07-23 13:53:18 +0100 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2025-07-23 13:53:18 +0100 |
| commit | dd5300b301292c3944aad4dcdecf4802307c7ea2 (patch) | |
| tree | f7e8ba79bd97810da039da9b030e72067ceeee03 /src/lib/client.rs | |
| parent | f7299cc5fd2276db8d9bb7778c34ddbe5b3a8e48 (diff) | |
refactor: add fallback grasp servers to client
so that they can be used as part of push and send
Diffstat (limited to 'src/lib/client.rs')
| -rw-r--r-- | src/lib/client.rs | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/lib/client.rs b/src/lib/client.rs index 3fe2b57..2bdea42 100644 --- a/src/lib/client.rs +++ b/src/lib/client.rs | |||
| @@ -53,7 +53,7 @@ use crate::{ | |||
| 53 | status_kinds, | 53 | status_kinds, |
| 54 | }, | 54 | }, |
| 55 | login::{get_likely_logged_in_user, user::get_user_ref_from_cache}, | 55 | login::{get_likely_logged_in_user, user::get_user_ref_from_cache}, |
| 56 | repo_ref::RepoRef, | 56 | repo_ref::{RepoRef, normalize_grasp_server_url}, |
| 57 | repo_state::RepoState, | 57 | repo_state::RepoState, |
| 58 | }; | 58 | }; |
| 59 | 59 | ||
| @@ -64,6 +64,7 @@ pub struct Client { | |||
| 64 | more_fallback_relays: Vec<String>, | 64 | more_fallback_relays: Vec<String>, |
| 65 | blaster_relays: Vec<String>, | 65 | blaster_relays: Vec<String>, |
| 66 | fallback_signer_relays: Vec<String>, | 66 | fallback_signer_relays: Vec<String>, |
| 67 | fallback_grasp_servers: Vec<String>, | ||
| 67 | relays_not_to_retry: Arc<RwLock<HashMap<RelayUrl, String>>>, | 68 | relays_not_to_retry: Arc<RwLock<HashMap<RelayUrl, String>>>, |
| 68 | } | 69 | } |
| 69 | 70 | ||
| @@ -101,6 +102,7 @@ pub trait Connect { | |||
| 101 | fn get_more_fallback_relays(&self) -> &Vec<String>; | 102 | fn get_more_fallback_relays(&self) -> &Vec<String>; |
| 102 | fn get_blaster_relays(&self) -> &Vec<String>; | 103 | fn get_blaster_relays(&self) -> &Vec<String>; |
| 103 | fn get_fallback_signer_relays(&self) -> &Vec<String>; | 104 | fn get_fallback_signer_relays(&self) -> &Vec<String>; |
| 105 | fn get_fallback_grasp_servers(&self) -> &Vec<String>; | ||
| 104 | async fn send_event_to<'a>( | 106 | async fn send_event_to<'a>( |
| 105 | &self, | 107 | &self, |
| 106 | git_repo_path: Option<&'a Path>, | 108 | git_repo_path: Option<&'a Path>, |
| @@ -154,6 +156,7 @@ impl Connect for Client { | |||
| 154 | more_fallback_relays: opts.more_fallback_relays, | 156 | more_fallback_relays: opts.more_fallback_relays, |
| 155 | blaster_relays: opts.blaster_relays, | 157 | blaster_relays: opts.blaster_relays, |
| 156 | fallback_signer_relays: opts.fallback_signer_relays, | 158 | fallback_signer_relays: opts.fallback_signer_relays, |
| 159 | fallback_grasp_servers: opts.fallback_grasp_servers, | ||
| 157 | relays_not_to_retry: Arc::new(RwLock::new(HashMap::new())), | 160 | relays_not_to_retry: Arc::new(RwLock::new(HashMap::new())), |
| 158 | } | 161 | } |
| 159 | } | 162 | } |
| @@ -208,6 +211,10 @@ impl Connect for Client { | |||
| 208 | &self.fallback_signer_relays | 211 | &self.fallback_signer_relays |
| 209 | } | 212 | } |
| 210 | 213 | ||
| 214 | fn get_fallback_grasp_servers(&self) -> &Vec<String> { | ||
| 215 | &self.fallback_grasp_servers | ||
| 216 | } | ||
| 217 | |||
| 211 | async fn send_event_to<'a>( | 218 | async fn send_event_to<'a>( |
| 212 | &self, | 219 | &self, |
| 213 | git_repo_path: Option<&'a Path>, | 220 | git_repo_path: Option<&'a Path>, |
| @@ -692,6 +699,7 @@ pub struct Params { | |||
| 692 | pub more_fallback_relays: Vec<String>, | 699 | pub more_fallback_relays: Vec<String>, |
| 693 | pub blaster_relays: Vec<String>, | 700 | pub blaster_relays: Vec<String>, |
| 694 | pub fallback_signer_relays: Vec<String>, | 701 | pub fallback_signer_relays: Vec<String>, |
| 702 | pub fallback_grasp_servers: Vec<String>, | ||
| 695 | } | 703 | } |
| 696 | 704 | ||
| 697 | impl Default for Params { | 705 | impl Default for Params { |
| @@ -734,6 +742,11 @@ impl Default for Params { | |||
| 734 | } else { | 742 | } else { |
| 735 | vec!["wss://relay.nsec.app".to_string()] | 743 | vec!["wss://relay.nsec.app".to_string()] |
| 736 | }, | 744 | }, |
| 745 | fallback_grasp_servers: if std::env::var("NGITTEST").is_ok() { | ||
| 746 | vec![] | ||
| 747 | } else { | ||
| 748 | vec!["relay.ngit.dev".to_string(), "gitnostr.com".to_string()] | ||
| 749 | }, | ||
| 737 | } | 750 | } |
| 738 | } | 751 | } |
| 739 | } | 752 | } |
| @@ -773,6 +786,17 @@ impl Params { | |||
| 773 | .map(|relay_url| relay_url.to_string()) // Convert RelayUrl back to String | 786 | .map(|relay_url| relay_url.to_string()) // Convert RelayUrl back to String |
| 774 | .collect(); | 787 | .collect(); |
| 775 | } | 788 | } |
| 789 | if let Ok(Some(grasp_default_servers)) = | ||
| 790 | get_git_config_item(git_repo, "nostr.grasp-default-set") | ||
| 791 | { | ||
| 792 | let new_default_grasp_servers: Vec<String> = grasp_default_servers | ||
| 793 | .split(';') | ||
| 794 | .filter_map(|url| normalize_grasp_server_url(url).ok()) // Attempt to parse and filter out errors | ||
| 795 | .collect(); | ||
| 796 | if !new_default_grasp_servers.is_empty() { | ||
| 797 | params.fallback_grasp_servers = new_default_grasp_servers; | ||
| 798 | } | ||
| 799 | } | ||
| 776 | } | 800 | } |
| 777 | params | 801 | params |
| 778 | } | 802 | } |