chore: Util to add write relays to a vector
Signed-off-by: Awiteb <a@4rs.nl>
This commit is contained in:
@@ -15,12 +15,7 @@
|
|||||||
// along with this program. If not, see <https://gnu.org/licenses/gpl-3.0.html>.
|
// along with this program. If not, see <https://gnu.org/licenses/gpl-3.0.html>.
|
||||||
|
|
||||||
use clap::Args;
|
use clap::Args;
|
||||||
use nostr::{
|
use nostr::{event::EventBuilder, key::PublicKey, types::Url};
|
||||||
event::EventBuilder,
|
|
||||||
key::PublicKey,
|
|
||||||
nips::nip65::{self, RelayMetadata},
|
|
||||||
types::Url,
|
|
||||||
};
|
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
cli::{CliOptions, CommandRunner},
|
cli::{CliOptions, CommandRunner},
|
||||||
@@ -60,17 +55,10 @@ impl CommandRunner for AnnounceArgs {
|
|||||||
let client = NostrClient::init(&options).await;
|
let client = NostrClient::init(&options).await;
|
||||||
let user_pubk = options.pubkey().await?;
|
let user_pubk = options.pubkey().await?;
|
||||||
let relays_list = client.user_relays_list(user_pubk).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];
|
let mut maintainers = vec![user_pubk];
|
||||||
maintainers.extend(self.maintainers);
|
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(
|
let event = EventBuilder::new_git_repo(
|
||||||
self.repo_id,
|
self.repo_id,
|
||||||
self.name.map(utils::str_trim),
|
self.name.map(utils::str_trim),
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ use nostr::{
|
|||||||
nip01::Coordinate,
|
nip01::Coordinate,
|
||||||
nip19::{Nip19Coordinate, Nip19Event, ToBech32},
|
nip19::{Nip19Coordinate, Nip19Event, ToBech32},
|
||||||
nip34::GitRepositoryAnnouncement,
|
nip34::GitRepositoryAnnouncement,
|
||||||
|
nip65::{self, RelayMetadata},
|
||||||
},
|
},
|
||||||
types::RelayUrl,
|
types::RelayUrl,
|
||||||
};
|
};
|
||||||
@@ -120,3 +121,14 @@ pub fn repo_naddr(pubk: PublicKey, relays: &[RelayUrl]) -> N34Result<String> {
|
|||||||
.to_bech32()
|
.to_bech32()
|
||||||
.map_err(N34Error::from)
|
.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
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user