chore: Returns the relays that successfully received the event on NostrClient::send_event_to

Signed-off-by: Awiteb <a@4rs.nl>
This commit is contained in:
Awiteb
2025-05-08 13:01:05 +00:00
parent c69fbca2a0
commit 42508fc8b9

View File

@@ -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( pub async fn send_event_to(
&self, &self,
event: UnsignedEvent, mut event: UnsignedEvent,
relays_list: Option<&Event>, relays_list: Option<&Event>,
relays: &[RelayUrl], relays: &[RelayUrl],
) -> N34Result<()> { ) -> N34Result<Vec<RelayUrl>> {
event.ensure_id();
self.add_relays(relays).await; self.add_relays(relays).await;
let event_id = event.id.expect("It's there");
if let Some(event) = relays_list { if let Some(event) = relays_list {
let _ = self.client.send_event_to(relays, event).await; let _ = self.client.send_event_to(relays, event).await;
@@ -101,12 +105,13 @@ impl NostrClient {
.await?; .await?;
for relay in &result.success { 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 { 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 /// Try to fetch a repository and returns it