From d9f8ce2418a0d2211b750650cf459aa38eecc908 Mon Sep 17 00:00:00 2001
From: Awiteb
Date: Wed, 7 May 2025 06:10:51 +0000
Subject: [PATCH] chore: Util to add write relays to a vector
Signed-off-by: Awiteb
---
src/cli/repo/announce.rs | 16 ++--------------
src/nostr_utils/utils.rs | 12 ++++++++++++
2 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/src/cli/repo/announce.rs b/src/cli/repo/announce.rs
index 3aa4007..e06aa53 100644
--- a/src/cli/repo/announce.rs
+++ b/src/cli/repo/announce.rs
@@ -15,12 +15,7 @@
// along with this program. If not, see .
use clap::Args;
-use nostr::{
- event::EventBuilder,
- key::PublicKey,
- nips::nip65::{self, RelayMetadata},
- types::Url,
-};
+use nostr::{event::EventBuilder, key::PublicKey, types::Url};
use crate::{
cli::{CliOptions, CommandRunner},
@@ -60,17 +55,10 @@ impl CommandRunner for AnnounceArgs {
let client = NostrClient::init(&options).await;
let user_pubk = options.pubkey().await?;
let relays_list = client.user_relays_list(user_pubk).await?;
- let mut write_relays = options.relays.clone();
+ let write_relays = utils::add_write_relays(options.relays.clone(), relays_list.as_ref());
let mut maintainers = vec![user_pubk];
maintainers.extend(self.maintainers);
- if let Some(event) = relays_list.clone() {
- write_relays.extend(
- nip65::extract_owned_relay_list(event)
- .filter_map(|(r, m)| m.is_none_or(|m| m == RelayMetadata::Write).then_some(r)),
- );
- }
-
let event = EventBuilder::new_git_repo(
self.repo_id,
self.name.map(utils::str_trim),
diff --git a/src/nostr_utils/utils.rs b/src/nostr_utils/utils.rs
index 1de291d..fde3762 100644
--- a/src/nostr_utils/utils.rs
+++ b/src/nostr_utils/utils.rs
@@ -24,6 +24,7 @@ use nostr::{
nip01::Coordinate,
nip19::{Nip19Coordinate, Nip19Event, ToBech32},
nip34::GitRepositoryAnnouncement,
+ nip65::{self, RelayMetadata},
},
types::RelayUrl,
};
@@ -120,3 +121,14 @@ pub fn repo_naddr(pubk: PublicKey, relays: &[RelayUrl]) -> N34Result {
.to_bech32()
.map_err(N34Error::from)
}
+
+/// Extends the given vector with write relays found in the event (if any).
+pub fn add_write_relays(mut vector: Vec, event: Option<&Event>) -> Vec {
+ if let Some(event) = event {
+ vector.extend(
+ nip65::extract_owned_relay_list(event.clone())
+ .filter_map(|(r, m)| m.is_none_or(|m| m == RelayMetadata::Write).then_some(r)),
+ );
+ }
+ vector
+}