@@ -29,8 +29,16 @@ pub async fn track_user_relays(damus: &mut Damus) {
29
29
30
30
// Do we have a user relay list stored in nostrdb? Start with that ...
31
31
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) ;
34
42
set_advertised_relays ( & mut damus. pool , relays) ;
35
43
drop ( txn) ;
36
44
@@ -45,14 +53,10 @@ pub async fn track_user_relays(damus: &mut Damus) {
45
53
// Wait for updates to the subscription
46
54
loop {
47
55
match damus. ndb . wait_for_notes ( ndbsub, 10 ) . await {
48
- Ok ( vec) => {
49
- debug ! ( "saw {:?}" , vec) ;
56
+ Ok ( nks) => {
50
57
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) ;
56
60
set_advertised_relays ( & mut damus. pool , relays) ;
57
61
}
58
62
Err ( err) => error ! ( "err: {:?}" , err) ,
@@ -90,15 +94,9 @@ fn _query_note_json(ndb: &Ndb, txn: &Transaction, filter: &Filter) -> Vec<String
90
94
. collect ( )
91
95
}
92
96
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 ( ) )
102
100
. flat_map ( |n| {
103
101
n. tags ( )
104
102
. iter ( )
0 commit comments