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