From d1283a6b55826175423bd382a859928e0f92ffe7 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Tue, 22 Jul 2025 13:47:28 +0100 Subject: fix: remove blossom from grasp server detection a grasp server doesnt need to appear in repo announcement event `blossoms` tag as blossom has been removed from the grasp spec --- src/bin/ngit/sub_commands/init.rs | 1 - 1 file changed, 1 deletion(-) (limited to 'src/bin/ngit/sub_commands/init.rs') diff --git a/src/bin/ngit/sub_commands/init.rs b/src/bin/ngit/sub_commands/init.rs index 1242e45..86d7f8a 100644 --- a/src/bin/ngit/sub_commands/init.rs +++ b/src/bin/ngit/sub_commands/init.rs @@ -269,7 +269,6 @@ pub async fn launch(cli_args: &Cli, args: &SubCommandArgs) -> Result<()> { repo_ref.as_ref(), &args.relays, &args.clone_url, - &args.blossoms, &identifier, ); let mut selections: Vec = vec![true; options.len()]; // Initialize selections based on existing options -- cgit v1.2.3 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/bin/ngit/sub_commands/init.rs | 11 ++--------- src/lib/client.rs | 26 +++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 10 deletions(-) (limited to 'src/bin/ngit/sub_commands/init.rs') diff --git a/src/bin/ngit/sub_commands/init.rs b/src/bin/ngit/sub_commands/init.rs index 86d7f8a..52e43e9 100644 --- a/src/bin/ngit/sub_commands/init.rs +++ b/src/bin/ngit/sub_commands/init.rs @@ -252,14 +252,7 @@ pub async fn launch(cli_args: &Cli, args: &SubCommandArgs) -> Result<()> { args.blossoms.clone() }; - let fallback_grasp_servers = - if let Ok(Some(s)) = git_repo.get_git_config_item("nostr.grasp-default-set", None) { - s.split(';') - .filter_map(|url| normalize_grasp_server_url(url).ok()) // Attempt to parse and filter out errors - .collect() - } else { - vec!["relay.ngit.dev".to_string(), "gitnostr.com".to_string()] - }; + let fallback_grasp_servers = client.get_fallback_grasp_servers(); let selected_grasp_servers = if has_server_and_relay_flags { // ignore so a script running `ngit init` can contiue without prompts @@ -275,7 +268,7 @@ pub async fn launch(cli_args: &Cli, args: &SubCommandArgs) -> Result<()> { let empty = options.is_empty(); for fallback in fallback_grasp_servers { // Check if any option contains the fallback as a substring - if !options.iter().any(|option| option.contains(&fallback)) { + if !options.iter().any(|option| option.contains(fallback)) { options.push(fallback.clone()); // Add fallback if not found selections.push(empty); // mark as selected if no existing ngit relay otherwise not } 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 From 055316ba3e50ffc3efb9be5f60afda669d74e548 Mon Sep 17 00:00:00 2001 From: DanConwayDev Date: Wed, 23 Jul 2025 14:02:09 +0100 Subject: refactor: Rename fallback relays and grasp servers Rename `params.fallback_relays` and `client.fallback_relays` to `relay_default_set`. Rename `params.fallback_grasp_servers` to `grasp_default_set`. This includes updating associated getters and usages across the codebase. --- src/bin/ngit/sub_commands/init.rs | 6 +++--- src/lib/client.rs | 40 +++++++++++++++++++-------------------- src/lib/login/fresh.rs | 4 ++-- 3 files changed, 25 insertions(+), 25 deletions(-) (limited to 'src/bin/ngit/sub_commands/init.rs') diff --git a/src/bin/ngit/sub_commands/init.rs b/src/bin/ngit/sub_commands/init.rs index 52e43e9..eaaf83d 100644 --- a/src/bin/ngit/sub_commands/init.rs +++ b/src/bin/ngit/sub_commands/init.rs @@ -229,7 +229,7 @@ pub async fn launch(cli_args: &Cli, args: &SubCommandArgs) -> Result<()> { .map(std::string::ToString::to_string) .collect::>() } else { - client.get_fallback_relays().clone() + client.get_relay_default_set().clone() } } else { args.relays.clone() @@ -252,7 +252,7 @@ pub async fn launch(cli_args: &Cli, args: &SubCommandArgs) -> Result<()> { args.blossoms.clone() }; - let fallback_grasp_servers = client.get_fallback_grasp_servers(); + let fallback_grasp_servers = client.get_grasp_default_set(); let selected_grasp_servers = if has_server_and_relay_flags { // ignore so a script running `ngit init` can contiue without prompts @@ -456,7 +456,7 @@ pub async fn launch(cli_args: &Cli, args: &SubCommandArgs) -> Result<()> { let mut selections: Vec = vec![true; options.len()]; // add fallback relays as options - for relay in client.get_fallback_relays().clone() { + for relay in client.get_relay_default_set().clone() { if !options.iter().any(|r| r.contains(&relay)) && !formatted_selected_grasp_servers .iter() diff --git a/src/lib/client.rs b/src/lib/client.rs index 2bdea42..6f28cff 100644 --- a/src/lib/client.rs +++ b/src/lib/client.rs @@ -60,11 +60,11 @@ use crate::{ #[allow(clippy::struct_field_names)] pub struct Client { client: nostr_sdk::Client, - fallback_relays: Vec, + relay_default_set: Vec, more_fallback_relays: Vec, blaster_relays: Vec, fallback_signer_relays: Vec, - fallback_grasp_servers: Vec, + grasp_default_set: Vec, relays_not_to_retry: Arc>>, } @@ -98,11 +98,11 @@ pub trait Connect { async fn set_signer(&mut self, signer: Arc); async fn connect(&self, relay_url: &RelayUrl) -> Result<()>; async fn disconnect(&self) -> Result<()>; - fn get_fallback_relays(&self) -> &Vec; + fn get_relay_default_set(&self) -> &Vec; 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; + fn get_grasp_default_set(&self) -> &Vec; async fn send_event_to<'a>( &self, git_repo_path: Option<&'a Path>, @@ -152,11 +152,11 @@ impl Connect for Client { .opts(Options::new().relay_limits(RelayLimits::disable())) .build() }, - fallback_relays: opts.fallback_relays, + relay_default_set: opts.relay_default_set, 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, + grasp_default_set: opts.grasp_default_set, relays_not_to_retry: Arc::new(RwLock::new(HashMap::new())), } } @@ -195,8 +195,8 @@ impl Connect for Client { Ok(()) } - fn get_fallback_relays(&self) -> &Vec { - &self.fallback_relays + fn get_relay_default_set(&self) -> &Vec { + &self.relay_default_set } fn get_more_fallback_relays(&self) -> &Vec { @@ -211,8 +211,8 @@ impl Connect for Client { &self.fallback_signer_relays } - fn get_fallback_grasp_servers(&self) -> &Vec { - &self.fallback_grasp_servers + fn get_grasp_default_set(&self) -> &Vec { + &self.grasp_default_set } async fn send_event_to<'a>( @@ -345,8 +345,8 @@ impl Connect for Client { trusted_maintainer_coordinate: Option<&'a Nip19Coordinate>, user_profiles: &HashSet, ) -> Result<(Vec>, MultiProgress)> { - let fallback_relays = &self - .fallback_relays + let relay_default_set = &self + .relay_default_set .iter() .filter_map(|r| RelayUrl::parse(r).ok()) .collect::>(); @@ -355,7 +355,7 @@ impl Connect for Client { git_repo_path, trusted_maintainer_coordinate, user_profiles, - fallback_relays.clone(), + relay_default_set.clone(), ) .await?; @@ -695,18 +695,18 @@ async fn get_events_of( pub struct Params { pub keys: Option, - pub fallback_relays: Vec, + pub relay_default_set: Vec, pub more_fallback_relays: Vec, pub blaster_relays: Vec, pub fallback_signer_relays: Vec, - pub fallback_grasp_servers: Vec, + pub grasp_default_set: Vec, } impl Default for Params { fn default() -> Self { Params { keys: None, - fallback_relays: if std::env::var("NGITTEST").is_ok() { + relay_default_set: if std::env::var("NGITTEST").is_ok() { vec![ "ws://localhost:8051".to_string(), "ws://localhost:8052".to_string(), @@ -742,7 +742,7 @@ impl Default for Params { } else { vec!["wss://relay.nsec.app".to_string()] }, - fallback_grasp_servers: if std::env::var("NGITTEST").is_ok() { + grasp_default_set: if std::env::var("NGITTEST").is_ok() { vec![] } else { vec!["relay.ngit.dev".to_string(), "gitnostr.com".to_string()] @@ -765,7 +765,7 @@ impl Params { .collect(); // elsewhere it is assumed this isn't empty if !new_default_relays.is_empty() { - params.fallback_relays = new_default_relays; + params.relay_default_set = new_default_relays; } } if let Ok(Some(relay_blasters)) = @@ -794,7 +794,7 @@ impl Params { .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.grasp_default_set = new_default_grasp_servers; } } } @@ -1995,7 +1995,7 @@ pub async fn send_events( silent: bool, ) -> Result<()> { let fallback = [ - client.get_fallback_relays().clone(), + client.get_relay_default_set().clone(), if events.iter().any(|e| e.kind.eq(&Kind::GitRepoAnnouncement)) { client.get_blaster_relays().clone() } else { diff --git a/src/lib/login/fresh.rs b/src/lib/login/fresh.rs index a169177..358045a 100644 --- a/src/lib/login/fresh.rs +++ b/src/lib/login/fresh.rs @@ -728,7 +728,7 @@ async fn signup( EventBuilder::metadata(&Metadata::new().name(name)).sign_with_keys(&keys)?; let relay_list = EventBuilder::relay_list( client - .get_fallback_relays() + .get_relay_default_set() .iter() .map(|s| (RelayUrl::parse(s).unwrap(), None)), ) @@ -738,7 +738,7 @@ async fn signup( client, None, vec![profile, relay_list], - client.get_fallback_relays().clone(), + client.get_relay_default_set().clone(), vec![], true, false, -- cgit v1.2.3