diff options
| author | DanConwayDev <DanConwayDev@protonmail.com> | 2025-05-21 12:32:41 +0100 |
|---|---|---|
| committer | DanConwayDev <DanConwayDev@protonmail.com> | 2025-05-21 16:21:29 +0100 |
| commit | d64748b810bf64638a5eb71eac054d91dae0c0f1 (patch) | |
| tree | 784412c5f0a7b701cb63d40d2fbaf84694a333d2 /src/lib | |
| parent | 7abd469db87388463187c3a5a9d5b3fe73ffee06 (diff) | |
feat: add support for default relay overrides
via git config so they can be overwritten locally and globally
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/client.rs | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/src/lib/client.rs b/src/lib/client.rs index 6c6d81e..7cd3c46 100644 --- a/src/lib/client.rs +++ b/src/lib/client.rs | |||
| @@ -44,7 +44,7 @@ use nostr_sdk::{ | |||
| 44 | 44 | ||
| 45 | use crate::{ | 45 | use crate::{ |
| 46 | get_dirs, | 46 | get_dirs, |
| 47 | git::{Repo, RepoActions}, | 47 | git::{Repo, RepoActions, get_git_config_item}, |
| 48 | git_events::{ | 48 | git_events::{ |
| 49 | event_is_cover_letter, event_is_patch_set_root, event_is_revision_root, status_kinds, | 49 | event_is_cover_letter, event_is_patch_set_root, event_is_revision_root, status_kinds, |
| 50 | }, | 50 | }, |
| @@ -659,6 +659,46 @@ impl Default for Params { | |||
| 659 | } | 659 | } |
| 660 | } | 660 | } |
| 661 | } | 661 | } |
| 662 | impl Params { | ||
| 663 | pub fn with_git_config_relay_defaults(git_repo: &Option<&Repo>) -> Self { | ||
| 664 | let mut params = Params::default(); | ||
| 665 | if std::env::var("NGITTEST").is_err() { | ||
| 666 | // ignore git config settings under test | ||
| 667 | if let Ok(Some(relay_defaults)) = | ||
| 668 | get_git_config_item(git_repo, "nostr.relay-default-set") | ||
| 669 | { | ||
| 670 | let new_default_relays: Vec<String> = relay_defaults | ||
| 671 | .split(';') | ||
| 672 | .filter_map(|url| RelayUrl::parse(url).ok()) // Attempt to parse and filter out errors | ||
| 673 | .map(|relay_url| relay_url.to_string()) // Convert RelayUrl back to String | ||
| 674 | .collect(); | ||
| 675 | // elsewhere it is assumed this isn't empty | ||
| 676 | if !new_default_relays.is_empty() { | ||
| 677 | params.fallback_relays = new_default_relays; | ||
| 678 | } | ||
| 679 | } | ||
| 680 | if let Ok(Some(relay_blasters)) = | ||
| 681 | get_git_config_item(git_repo, "nostr.relay-blaster-set") | ||
| 682 | { | ||
| 683 | params.blaster_relays = relay_blasters | ||
| 684 | .split(';') | ||
| 685 | .filter_map(|url| RelayUrl::parse(url).ok()) // Attempt to parse and filter out errors | ||
| 686 | .map(|relay_url| relay_url.to_string()) // Convert RelayUrl back to String | ||
| 687 | .collect(); | ||
| 688 | } | ||
| 689 | if let Ok(Some(relay_signer)) = | ||
| 690 | get_git_config_item(git_repo, "nostr.relay-signer-fallback-set") | ||
| 691 | { | ||
| 692 | params.fallback_signer_relays = relay_signer | ||
| 693 | .split(';') | ||
| 694 | .filter_map(|url| RelayUrl::parse(url).ok()) // Attempt to parse and filter out errors | ||
| 695 | .map(|relay_url| relay_url.to_string()) // Convert RelayUrl back to String | ||
| 696 | .collect(); | ||
| 697 | } | ||
| 698 | } | ||
| 699 | params | ||
| 700 | } | ||
| 701 | } | ||
| 662 | 702 | ||
| 663 | fn get_dedup_events(relay_results: Vec<Result<Vec<nostr::Event>>>) -> Vec<Event> { | 703 | fn get_dedup_events(relay_results: Vec<Result<Vec<nostr::Event>>>) -> Vec<Event> { |
| 664 | let mut dedup_events: Vec<Event> = vec![]; | 704 | let mut dedup_events: Vec<Event> = vec![]; |