From 60ad1fe5bbb2e8a9e8da6e7f29429f0eacbaac25 Mon Sep 17 00:00:00 2001
From: Awiteb
Date: Tue, 20 May 2025 13:11:20 +0000
Subject: [PATCH] chore: Improve `issue new` command code
Signed-off-by: Awiteb
---
src/cli/issue/new.rs | 60 +++++---------------------------------------
1 file changed, 6 insertions(+), 54 deletions(-)
diff --git a/src/cli/issue/new.rs b/src/cli/issue/new.rs
index 356fb17..20fd9a2 100644
--- a/src/cli/issue/new.rs
+++ b/src/cli/issue/new.rs
@@ -16,20 +16,12 @@
use clap::{ArgGroup, Args};
-use nostr::{
- event::{EventBuilder, Tag, TagStandard},
- nips::nip19::Nip19Coordinate,
- parser::NostrParser,
-};
+use nostr::{event::EventBuilder, nips::nip19::Nip19Coordinate};
use crate::{
cli::{CliOptions, CommandRunner, parsers},
error::N34Result,
- nostr_utils::{
- NostrClient,
- traits::{NewGitRepositoryAnnouncement, TokenUtils},
- utils,
- },
+ nostr_utils::{NostrClient, traits::NewGitRepositoryAnnouncement, utils},
};
@@ -91,7 +83,7 @@ impl NewArgs {
}
impl CommandRunner for NewArgs {
- async fn run(mut self, options: CliOptions) -> N34Result<()> {
+ async fn run(self, options: CliOptions) -> N34Result<()> {
let client = NostrClient::init(&options).await;
let user_pubk = options.pubkey().await?;
let relays_list = client.user_relays_list(user_pubk).await?;
@@ -102,41 +94,8 @@ impl CommandRunner for NewArgs {
write_relays.extend(client.fetch_repo(&self.naddr.coordinate).await?.relays);
let (subject, content) = self.issue_content()?;
- let tokens = NostrParser::new().parse(&content).collect::>();
- let mut p_tagged_users = tokens
- .iter()
- .filter_map(TokenUtils::extract_public_key)
- .collect::>();
- let quote_events = tokens
- .iter()
- .filter_map(TokenUtils::extract_event_id)
- .collect::>();
-
- self.label.extend(
- tokens
- .iter()
- .filter_map(TokenUtils::extract_hashtag)
- .collect::>(),
- );
-
- // Add the p-tagged users read relays to our write relays. And relays with the
- // nprofile/nevent to our discovery relays
- for (user, relays) in &p_tagged_users {
- client.add_relays(relays).await;
- write_relays =
- utils::add_read_relays(write_relays, client.user_relays_list(*user).await?.as_ref())
- }
- for (event_id, relays) in "e_events {
- client.add_relays(relays).await;
- // Add the note author to the p-tagged users
- if let Some(author) = client.event_author(*event_id).await? {
- p_tagged_users.push((author, Vec::new()));
- write_relays = utils::add_read_relays(
- write_relays,
- client.user_relays_list(author).await?.as_ref(),
- );
- }
- }
+ let content_details = client.parse_content(&content).await;
+ write_relays.extend(content_details.write_relays.clone());
let event = EventBuilder::new_git_issue(
self.naddr.coordinate.clone(),
@@ -144,15 +103,8 @@ impl CommandRunner for NewArgs {
subject,
self.label,
)?
+ .tags(content_details.into_tags())
.pow(options.pow)
- .tags(p_tagged_users.into_iter().map(|(p, _)| Tag::public_key(p)))
- .tags(quote_events.into_iter().map(|(e, r)| {
- Tag::from_standardized(TagStandard::Quote {
- event_id: e,
- relay_url: r.first().cloned(),
- public_key: None,
- })
- }))
.build(user_pubk);
let event_id = event.id.expect("There is an id");