Skip to content

Commit 784732b

Browse files
committed
f: clean up user relay list ndb fetching
1 parent 798a7d9 commit 784732b

File tree

1 file changed

+16
-18
lines changed

1 file changed

+16
-18
lines changed

src/task.rs

+16-18
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,16 @@ pub async fn track_user_relays(damus: &mut Damus) {
2929

3030
// Do we have a user relay list stored in nostrdb? Start with that ...
3131
let txn = Transaction::new(&damus.ndb).expect("transaction");
32-
let relays = query_nip65_relays(&damus.ndb, &txn, &filter);
33-
debug!("track_user_relays: initial from nostrdb: {:#?}", relays);
32+
let lim = filter.limit().unwrap_or(crate::filter::default_limit()) as i32;
33+
let nks = damus
34+
.ndb
35+
.query(&txn, &[filter.clone()], lim)
36+
.expect("query user relays results")
37+
.iter()
38+
.map(|qr| qr.note_key)
39+
.collect();
40+
let relays = handle_nip65_relays(&damus.ndb, &txn, &nks);
41+
debug!("track_user_relays: initial: {:#?}", relays);
3442
set_advertised_relays(&mut damus.pool, relays);
3543
drop(txn);
3644

@@ -45,14 +53,10 @@ pub async fn track_user_relays(damus: &mut Damus) {
4553
// Wait for updates to the subscription
4654
loop {
4755
match damus.ndb.wait_for_notes(ndbsub, 10).await {
48-
Ok(vec) => {
49-
debug!("saw {:?}", vec);
56+
Ok(nks) => {
5057
let txn = Transaction::new(&damus.ndb).expect("transaction");
51-
let relays = query_nip65_relays(&damus.ndb, &txn, &filter);
52-
debug!(
53-
"track_user_relays: subscription from nostrdb: {:#?}",
54-
relays
55-
);
58+
let relays = handle_nip65_relays(&damus.ndb, &txn, &nks);
59+
debug!("track_user_relays: update: {:#?}", relays);
5660
set_advertised_relays(&mut damus.pool, relays);
5761
}
5862
Err(err) => error!("err: {:?}", err),
@@ -90,15 +94,9 @@ fn _query_note_json(ndb: &Ndb, txn: &Transaction, filter: &Filter) -> Vec<String
9094
.collect()
9195
}
9296

93-
fn query_nip65_relays(ndb: &Ndb, txn: &Transaction, filter: &Filter) -> Vec<String> {
94-
let lim = filter.limit().unwrap_or(crate::filter::default_limit()) as i32;
95-
let results = ndb
96-
.query(txn, &[filter.clone()], lim)
97-
.expect("query results");
98-
results
99-
.iter()
100-
.map(|qr| NoteRef::new(qr.note_key, qr.note.created_at()))
101-
.filter_map(|nr| ndb.get_note_by_key(txn, nr.key).ok())
97+
fn handle_nip65_relays(ndb: &Ndb, txn: &Transaction, nks: &Vec<NoteKey>) -> Vec<String> {
98+
nks.iter()
99+
.filter_map(|nk| ndb.get_note_by_key(txn, *nk).ok())
102100
.flat_map(|n| {
103101
n.tags()
104102
.iter()

0 commit comments

Comments
 (0)