chore: Util to add write relays to a vector

Signed-off-by: Awiteb <a@4rs.nl>
This commit is contained in:
Awiteb
2025-05-07 06:10:51 +00:00
parent 577de41054
commit d9f8ce2418
2 changed files with 14 additions and 14 deletions

View File

@@ -15,12 +15,7 @@
// along with this program. If not, see <https://gnu.org/licenses/gpl-3.0.html>.
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),

View File

@@ -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<String> {
.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<RelayUrl>, event: Option<&Event>) -> Vec<RelayUrl> {
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
}