From dd5300b301292c3944aad4dcdecf4802307c7ea2 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Wed, 23 Jul 2025 13:53:18 +0100 Subject: refactor: add fallback grasp servers to client so that they can be used as part of push and send --- src/lib/client.rs | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'src/lib') 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::{ status_kinds, }, login::{get_likely_logged_in_user, user::get_user_ref_from_cache}, - repo_ref::RepoRef, + repo_ref::{RepoRef, normalize_grasp_server_url}, repo_state::RepoState, }; @@ -64,6 +64,7 @@ pub struct Client { more_fallback_relays: Vec, blaster_relays: Vec, fallback_signer_relays: Vec, + fallback_grasp_servers: Vec, relays_not_to_retry: Arc>>, } @@ -101,6 +102,7 @@ pub trait Connect { fn get_more_fallback_relays(&self) -> &Vec; fn get_blaster_relays(&self) -> &Vec; fn get_fallback_signer_relays(&self) -> &Vec; + fn get_fallback_grasp_servers(&self) -> &Vec; async fn send_event_to<'a>( &self, git_repo_path: Option<&'a Path>, @@ -154,6 +156,7 @@ impl Connect for Client { more_fallback_relays: opts.more_fallback_relays, blaster_relays: opts.blaster_relays, fallback_signer_relays: opts.fallback_signer_relays, + fallback_grasp_servers: opts.fallback_grasp_servers, relays_not_to_retry: Arc::new(RwLock::new(HashMap::new())), } } @@ -208,6 +211,10 @@ impl Connect for Client { &self.fallback_signer_relays } + fn get_fallback_grasp_servers(&self) -> &Vec { + &self.fallback_grasp_servers + } + async fn send_event_to<'a>( &self, git_repo_path: Option<&'a Path>, @@ -692,6 +699,7 @@ pub struct Params { pub more_fallback_relays: Vec, pub blaster_relays: Vec, pub fallback_signer_relays: Vec, + pub fallback_grasp_servers: Vec, } impl Default for Params { @@ -734,6 +742,11 @@ impl Default for Params { } else { vec!["wss://relay.nsec.app".to_string()] }, + fallback_grasp_servers: if std::env::var("NGITTEST").is_ok() { + vec![] + } else { + vec!["relay.ngit.dev".to_string(), "gitnostr.com".to_string()] + }, } } } @@ -773,6 +786,17 @@ impl Params { .map(|relay_url| relay_url.to_string()) // Convert RelayUrl back to String .collect(); } + if let Ok(Some(grasp_default_servers)) = + get_git_config_item(git_repo, "nostr.grasp-default-set") + { + let new_default_grasp_servers: Vec = grasp_default_servers + .split(';') + .filter_map(|url| normalize_grasp_server_url(url).ok()) // Attempt to parse and filter out errors + .collect(); + if !new_default_grasp_servers.is_empty() { + params.fallback_grasp_servers = new_default_grasp_servers; + } + } } params } -- cgit v1.2.3