Skip to content

Commit 1daef92

Browse files
committed
Revert "pool: get events only from remote relay when calling Relay::get_events_of"
This reverts commit dcf8485 Signed-off-by: Yuki Kishimoto <[email protected]>
1 parent 523f90d commit 1daef92

File tree

5 files changed

+19
-9
lines changed

5 files changed

+19
-9
lines changed

CHANGELOG.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
* nostr: ensure that NIP-59 rumor has `EventId` ([Yuki Kishimoto])
3434
* nostr: update `PartialEvent` methods ([Yuki Kishimoto])
3535
* nostr: change `EventBuilder::award_badge` fingerprint ([Yuki Kishimoto])
36-
* pool: get events only from remote relay when calling `Relay::get_events_of` ([Yuki Kishimoto])
3736
* pool: take mutex ownership instead of clone in `InternalRelayPool::get_events_from` ([Yuki Kishimoto])
3837
* pool: remove IDs collection from `InternalRelayPool::get_events_from` ([Yuki Kishimoto])
3938
* pool: better checks before perform queries or send messages to relays ([Yuki Kishimoto])

bindings/nostr-sdk-ffi/src/relay/mod.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -332,7 +332,9 @@ impl Relay {
332332
Ok(self.inner.unsubscribe_all(**opts).await?)
333333
}
334334

335-
/// Get events that matches filters from remote relay
335+
/// Get events of filters
336+
///
337+
/// Get events from local database and relay
336338
pub async fn get_events_of(
337339
&self,
338340
filters: Vec<Arc<Filter>>,

bindings/nostr-sdk-js/src/relay/mod.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,9 @@ impl JsRelay {
261261
self.inner.unsubscribe_all(**opts).await.map_err(into_err)
262262
}
263263

264-
/// Get events that matches filters from remote relay
264+
/// Get events of filters
265+
///
266+
/// Get events from local database and relay
265267
#[wasm_bindgen(js_name = getEventsOf)]
266268
pub async fn get_events_of(
267269
&self,

crates/nostr-relay-pool/src/relay/internal.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
//! Internal Relay
66
77
use std::cmp;
8-
use std::collections::{HashMap, HashSet};
8+
use std::collections::{BTreeSet, HashMap, HashSet};
99
use std::sync::atomic::{AtomicBool, Ordering};
1010
use std::sync::Arc;
1111
use std::time::Duration;
@@ -24,7 +24,7 @@ use nostr::{
2424
ClientMessage, Event, EventId, Filter, JsonUtil, Keys, Kind, MissingPartialEvent, PartialEvent,
2525
RawRelayMessage, RelayMessage, SubscriptionId, Timestamp, Url,
2626
};
27-
use nostr_database::DynNostrDatabase;
27+
use nostr_database::{DynNostrDatabase, Order};
2828
use tokio::sync::mpsc::{self, Receiver, Sender};
2929
use tokio::sync::{broadcast, oneshot, watch, Mutex, MutexGuard, RwLock};
3030

@@ -1595,13 +1595,18 @@ impl InternalRelay {
15951595
timeout: Duration,
15961596
opts: FilterOptions,
15971597
) -> Result<Vec<Event>, Error> {
1598-
let events: Mutex<Vec<Event>> = Mutex::new(Vec::new());
1598+
let stored_events: Vec<Event> = self
1599+
.database
1600+
.query(filters.clone(), Order::Desc)
1601+
.await
1602+
.unwrap_or_default();
1603+
let events: Mutex<BTreeSet<Event>> = Mutex::new(stored_events.into_iter().collect());
15991604
self.get_events_of_with_callback(filters, timeout, opts, |event| async {
16001605
let mut events = events.lock().await;
1601-
events.push(event);
1606+
events.insert(event);
16021607
})
16031608
.await?;
1604-
Ok(events.into_inner())
1609+
Ok(events.into_inner().into_iter().rev().collect())
16051610
}
16061611

16071612
pub async fn count_events_of(

crates/nostr-relay-pool/src/relay/mod.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,9 @@ impl Relay {
376376
.await
377377
}
378378

379-
/// Get events that matches filters from remote relay
379+
/// Get events of filters
380+
///
381+
/// Get events from local database and relay
380382
#[inline]
381383
pub async fn get_events_of(
382384
&self,

0 commit comments

Comments
 (0)