chore: Move the write relays definition to the end of the commands
To make it clear, we can review exactly what was collected instead of having it spread throughout the body of the command. Signed-off-by: Awiteb <a@4rs.nl>
This commit is contained in:
@@ -103,31 +103,9 @@ impl CommandRunner for NewArgs {
|
|||||||
client.add_relays(&naddrs.extract_relays()).await;
|
client.add_relays(&naddrs.extract_relays()).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,
|
|
||||||
utils::add_write_relays(relays_list.as_ref()),
|
|
||||||
client
|
|
||||||
.fetch_repos(&naddrs.into_coordinates())
|
|
||||||
.await?
|
|
||||||
.extract_relays(),
|
|
||||||
]
|
|
||||||
.concat();
|
|
||||||
|
|
||||||
let (subject, content) = self.issue_content()?;
|
let (subject, content) = self.issue_content()?;
|
||||||
let content_details = client.parse_content(&content).await;
|
let content_details = client.parse_content(&content).await;
|
||||||
write_relays.extend(content_details.write_relays.clone());
|
|
||||||
|
|
||||||
// Include read relays for each repository owner (if found)
|
|
||||||
write_relays.extend(
|
|
||||||
future::join_all(
|
|
||||||
naddrs_iter
|
|
||||||
.clone()
|
|
||||||
.map(|c| client.read_relays_from_user(c.public_key)),
|
|
||||||
)
|
|
||||||
.await
|
|
||||||
.into_iter()
|
|
||||||
.flatten(),
|
|
||||||
);
|
|
||||||
|
|
||||||
let event = EventBuilder::new_git_issue(
|
let event = EventBuilder::new_git_issue(
|
||||||
naddrs_iter
|
naddrs_iter
|
||||||
@@ -141,14 +119,31 @@ impl CommandRunner for NewArgs {
|
|||||||
)?
|
)?
|
||||||
.dedup_tags()
|
.dedup_tags()
|
||||||
.pow(options.pow)
|
.pow(options.pow)
|
||||||
.tags(content_details.into_tags())
|
.tags(content_details.clone().into_tags())
|
||||||
// p-tag the reset of the reposotoies owners
|
// p-tag the reset of the reposotoies owners
|
||||||
.tags(naddrs_iter.clone().map(|n| Tag::public_key(n.public_key)))
|
.tags(naddrs_iter.clone().map(|n| Tag::public_key(n.public_key)))
|
||||||
// a-tag the reset of the reposotoies
|
// a-tag the reset of the reposotoies
|
||||||
.tags(naddrs_iter.map(|n| Tag::coordinate(n.coordinate, n.relays.first().cloned())))
|
.tags(naddrs_iter.clone().map(|n| Tag::coordinate(n.coordinate, n.relays.first().cloned())))
|
||||||
.build(user_pubk);
|
.build(user_pubk);
|
||||||
let event_id = event.id.expect("There is an id");
|
let event_id = event.id.expect("There is an id");
|
||||||
|
|
||||||
|
let write_relays = [
|
||||||
|
options.relays,
|
||||||
|
utils::add_write_relays(relays_list.as_ref()),
|
||||||
|
client
|
||||||
|
.fetch_repos(&naddrs.into_coordinates())
|
||||||
|
.await?
|
||||||
|
.extract_relays(),
|
||||||
|
// Include read relays for each repository owner (if found)
|
||||||
|
future::join_all(naddrs_iter.map(|c| client.read_relays_from_user(c.public_key)))
|
||||||
|
.await
|
||||||
|
.into_iter()
|
||||||
|
.flatten()
|
||||||
|
.collect(),
|
||||||
|
content_details.write_relays.clone().into_iter().collect(),
|
||||||
|
]
|
||||||
|
.concat();
|
||||||
|
|
||||||
tracing::trace!(relays = ?write_relays, "Write relays list");
|
tracing::trace!(relays = ?write_relays, "Write relays list");
|
||||||
let success = client
|
let success = client
|
||||||
.send_event_to(event, relays_list.as_ref(), &write_relays)
|
.send_event_to(event, relays_list.as_ref(), &write_relays)
|
||||||
|
|||||||
@@ -135,13 +135,6 @@ impl CommandRunner for ReplyArgs {
|
|||||||
|
|
||||||
client.add_relays(&self.to.relays).await;
|
client.add_relays(&self.to.relays).await;
|
||||||
|
|
||||||
let relays_list = client.user_relays_list(user_pubk).await?;
|
|
||||||
let mut write_relays = [
|
|
||||||
options.relays,
|
|
||||||
utils::add_write_relays(relays_list.as_ref()),
|
|
||||||
]
|
|
||||||
.concat();
|
|
||||||
|
|
||||||
let reply_to = client
|
let reply_to = client
|
||||||
.fetch_event(Filter::new().id(self.to.event_id))
|
.fetch_event(Filter::new().id(self.to.event_id))
|
||||||
.await?
|
.await?
|
||||||
@@ -157,24 +150,6 @@ impl CommandRunner for ReplyArgs {
|
|||||||
};
|
};
|
||||||
|
|
||||||
let repos = client.fetch_repos(&repos_coordinate).await?;
|
let repos = client.fetch_repos(&repos_coordinate).await?;
|
||||||
// Merge repository announcement relays into write relays
|
|
||||||
write_relays.extend(repos.extract_relays());
|
|
||||||
// Include read relays for each repository owner (if found)
|
|
||||||
write_relays.extend(
|
|
||||||
future::join_all(
|
|
||||||
repos_coordinate
|
|
||||||
.iter()
|
|
||||||
.map(|c| client.read_relays_from_user(c.public_key)),
|
|
||||||
)
|
|
||||||
.await
|
|
||||||
.into_iter()
|
|
||||||
.flatten(),
|
|
||||||
);
|
|
||||||
|
|
||||||
write_relays.extend(client.read_relays_from_user(reply_to.pubkey).await);
|
|
||||||
if let Some(root_event) = &root {
|
|
||||||
write_relays.extend(client.read_relays_from_user(root_event.pubkey).await);
|
|
||||||
}
|
|
||||||
|
|
||||||
let quoted_content = if self.quote_to {
|
let quoted_content = if self.quote_to {
|
||||||
Some(quote_reply_to_content(&client, &reply_to).await)
|
Some(quote_reply_to_content(&client, &reply_to).await)
|
||||||
@@ -184,7 +159,6 @@ impl CommandRunner for ReplyArgs {
|
|||||||
|
|
||||||
let content = utils::get_content(self.comment.as_ref(), quoted_content.as_ref(), ".txt")?;
|
let content = utils::get_content(self.comment.as_ref(), quoted_content.as_ref(), ".txt")?;
|
||||||
let content_details = client.parse_content(&content).await;
|
let content_details = client.parse_content(&content).await;
|
||||||
write_relays.extend(content_details.write_relays.clone());
|
|
||||||
|
|
||||||
let event = EventBuilder::comment(
|
let event = EventBuilder::comment(
|
||||||
content,
|
content,
|
||||||
@@ -194,11 +168,40 @@ impl CommandRunner for ReplyArgs {
|
|||||||
)
|
)
|
||||||
.dedup_tags()
|
.dedup_tags()
|
||||||
.pow(options.pow)
|
.pow(options.pow)
|
||||||
.tags(content_details.into_tags())
|
.tags(content_details.clone().into_tags())
|
||||||
.build(user_pubk);
|
.build(user_pubk);
|
||||||
|
|
||||||
let event_id = event.id.expect("There is an id");
|
let event_id = event.id.expect("There is an id");
|
||||||
let author_read_relays = utils::add_read_relays(relays_list.as_ref());
|
let relays_list = client.user_relays_list(user_pubk).await?;
|
||||||
|
let author_read_relays =
|
||||||
|
utils::add_read_relays(client.user_relays_list(user_pubk).await?.as_ref());
|
||||||
|
let write_relays = [
|
||||||
|
options.relays,
|
||||||
|
utils::add_write_relays(relays_list.as_ref()),
|
||||||
|
// Merge repository announcement relays into write relays
|
||||||
|
repos.extract_relays(),
|
||||||
|
// Include read relays for each repository owner (if found)
|
||||||
|
future::join_all(
|
||||||
|
repos_coordinate
|
||||||
|
.iter()
|
||||||
|
.map(|c| client.read_relays_from_user(c.public_key)),
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.into_iter()
|
||||||
|
.flatten()
|
||||||
|
.collect(),
|
||||||
|
// read relays of the root event and the reply to event
|
||||||
|
{
|
||||||
|
let (r1, r2) = future::join(
|
||||||
|
client.read_relays_from_user(reply_to.pubkey),
|
||||||
|
event_author_read_relays(&client, root.as_ref()),
|
||||||
|
)
|
||||||
|
.await;
|
||||||
|
[r1, r2].concat()
|
||||||
|
},
|
||||||
|
content_details.write_relays.into_iter().collect(),
|
||||||
|
]
|
||||||
|
.concat();
|
||||||
|
|
||||||
tracing::trace!(relays = ?write_relays, "Write relays list");
|
tracing::trace!(relays = ?write_relays, "Write relays list");
|
||||||
let (success, ..) = futures::join!(
|
let (success, ..) = futures::join!(
|
||||||
@@ -278,3 +281,12 @@ fn coordinates_from_root(root: &Event) -> N34Result<Vec<Coordinate>> {
|
|||||||
|
|
||||||
Ok(coordinates)
|
Ok(coordinates)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns the event author read relays if found, otherwise an empty vector
|
||||||
|
async fn event_author_read_relays(client: &NostrClient, event: Option<&Event>) -> Vec<RelayUrl> {
|
||||||
|
if let Some(root_event) = event {
|
||||||
|
client.read_relays_from_user(root_event.pubkey).await
|
||||||
|
} else {
|
||||||
|
Vec::new()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -84,28 +84,11 @@ 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(),
|
|
||||||
utils::add_write_relays(relays_list.as_ref()),
|
|
||||||
]
|
|
||||||
.concat();
|
|
||||||
|
|
||||||
if !self.maintainers.contains(&user_pubk) {
|
if !self.maintainers.contains(&user_pubk) {
|
||||||
self.maintainers.insert(0, user_pubk);
|
self.maintainers.insert(0, user_pubk);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Include read relays for each maintainer (if found)
|
|
||||||
write_relays.extend(
|
|
||||||
future::join_all(
|
|
||||||
self.maintainers
|
|
||||||
.iter()
|
|
||||||
.map(|pkey| client.read_relays_from_user(*pkey)),
|
|
||||||
)
|
|
||||||
.await
|
|
||||||
.into_iter()
|
|
||||||
.flatten(),
|
|
||||||
);
|
|
||||||
|
|
||||||
let naddr = utils::repo_naddr(&self.repo_id, user_pubk, &options.relays)?;
|
let naddr = utils::repo_naddr(&self.repo_id, user_pubk, &options.relays)?;
|
||||||
let event = EventBuilder::new_git_repo(
|
let event = EventBuilder::new_git_repo(
|
||||||
self.repo_id,
|
self.repo_id,
|
||||||
@@ -114,7 +97,7 @@ impl CommandRunner for AnnounceArgs {
|
|||||||
self.web,
|
self.web,
|
||||||
self.clone,
|
self.clone,
|
||||||
options.relays.clone(),
|
options.relays.clone(),
|
||||||
self.maintainers,
|
self.maintainers.clone(),
|
||||||
self.label.into_iter().map(utils::str_trim).collect(),
|
self.label.into_iter().map(utils::str_trim).collect(),
|
||||||
self.force_id,
|
self.force_id,
|
||||||
)?
|
)?
|
||||||
@@ -122,7 +105,6 @@ impl CommandRunner for AnnounceArgs {
|
|||||||
.pow(options.pow)
|
.pow(options.pow)
|
||||||
.build(user_pubk);
|
.build(user_pubk);
|
||||||
|
|
||||||
let nevent = utils::new_nevent(event.id.expect("There is an id"), &write_relays)?;
|
|
||||||
|
|
||||||
if self.address_file {
|
if self.address_file {
|
||||||
let address_path = std::env::current_dir()?.join(NOSTR_ADDRESS_FILE);
|
let address_path = std::env::current_dir()?.join(NOSTR_ADDRESS_FILE);
|
||||||
@@ -142,6 +124,23 @@ impl CommandRunner for AnnounceArgs {
|
|||||||
tracing::info!("Successfully wrote naddr to address file");
|
tracing::info!("Successfully wrote naddr to address file");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let write_relays = [
|
||||||
|
options.relays.clone(),
|
||||||
|
utils::add_write_relays(relays_list.as_ref()),
|
||||||
|
// Include read relays for each maintainer (if found)
|
||||||
|
future::join_all(
|
||||||
|
self.maintainers
|
||||||
|
.iter()
|
||||||
|
.map(|pkey| client.read_relays_from_user(*pkey)),
|
||||||
|
)
|
||||||
|
.await
|
||||||
|
.into_iter()
|
||||||
|
.flatten()
|
||||||
|
.collect(),
|
||||||
|
]
|
||||||
|
.concat();
|
||||||
|
let nevent = utils::new_nevent(event.id.expect("There is an id"), &write_relays)?;
|
||||||
|
|
||||||
client
|
client
|
||||||
.send_event_to(event, relays_list.as_ref(), &write_relays)
|
.send_event_to(event, relays_list.as_ref(), &write_relays)
|
||||||
.await?;
|
.await?;
|
||||||
|
|||||||
@@ -42,6 +42,7 @@ use crate::{
|
|||||||
const CLIENT_TIMEOUT: Duration = Duration::from_millis(1500);
|
const CLIENT_TIMEOUT: Duration = Duration::from_millis(1500);
|
||||||
|
|
||||||
/// Parsed content details
|
/// Parsed content details
|
||||||
|
#[derive(Clone)]
|
||||||
pub struct ContentDetails {
|
pub struct ContentDetails {
|
||||||
/// Public keys of users mentioned in the content.
|
/// Public keys of users mentioned in the content.
|
||||||
pub p_tagged: HashSet<PublicKey>,
|
pub p_tagged: HashSet<PublicKey>,
|
||||||
|
|||||||
Reference in New Issue
Block a user