From 42508fc8b952c88826d702fbbd69efe6dbf33d81 Mon Sep 17 00:00:00 2001
From: Awiteb
Date: Thu, 8 May 2025 13:01:05 +0000
Subject: [PATCH] chore: Returns the relays that successfully received the
event on `NostrClient::send_event_to`
Signed-off-by: Awiteb
---
src/nostr_utils/mod.rs | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/src/nostr_utils/mod.rs b/src/nostr_utils/mod.rs
index 40d481f..e863868 100644
--- a/src/nostr_utils/mod.rs
+++ b/src/nostr_utils/mod.rs
@@ -82,14 +82,18 @@ impl NostrClient {
}
}
- /// Sends an event to the specified relays.
+ /// Broadcasts an unsigned event to given relays, optionally broadcast the
+ /// relays list event. Returns URLs of relays that successfully received
+ /// the event.
pub async fn send_event_to(
&self,
- event: UnsignedEvent,
+ mut event: UnsignedEvent,
relays_list: Option<&Event>,
relays: &[RelayUrl],
- ) -> N34Result<()> {
+ ) -> N34Result> {
+ event.ensure_id();
self.add_relays(relays).await;
+ let event_id = event.id.expect("It's there");
if let Some(event) = relays_list {
let _ = self.client.send_event_to(relays, event).await;
@@ -101,12 +105,13 @@ impl NostrClient {
.await?;
for relay in &result.success {
- tracing::info!(relay = %relay, "Event sent successfully");
+ tracing::info!(event_id = %event_id, relay = %relay, "Event sent successfully");
}
for (relay, reason) in &result.failed {
- tracing::warn!(relay = %relay, reason = %reason, "Failed to send event");
+ tracing::warn!(event_id = %event_id, relay = %relay, reason = %reason, "Failed to send event");
}
- Ok(())
+
+ Ok(result.success.into_iter().collect())
}
/// Try to fetch a repository and returns it