Skip to content

Commit 88f52d5

Browse files
committed
refactor track_user_relays for clarity
1 parent befc1fb commit 88f52d5

File tree

2 files changed

+40
-36
lines changed

2 files changed

+40
-36
lines changed

src/app.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -479,7 +479,7 @@ fn update_damus(damus: &mut Damus, ctx: &egui::Context) {
479479

480480
let damusref = damus.reference();
481481
tokio::spawn(async move {
482-
task::setup_user_relays(damusref).await;
482+
task::track_user_relays(damusref).await;
483483
});
484484
}
485485

src/task.rs

+39-35
Original file line numberDiff line numberDiff line change
@@ -8,60 +8,64 @@ use crate::dispatcher;
88
use crate::note::NoteRef;
99
use crate::{with_mut_damus, DamusRef};
1010

11-
pub async fn setup_user_relays(damusref: DamusRef) {
12-
debug!("do_setup_user_relays starting");
11+
pub async fn track_user_relays(damusref: DamusRef) {
12+
debug!("track_user_relays starting");
1313

14-
let filter = with_mut_damus(&damusref, |damus| {
15-
debug!("setup_user_relays: acquired damus for filter");
14+
let filter = user_relay_filter(&damusref);
1615

17-
let account = damus
18-
.accounts
19-
.get_selected_account()
20-
.as_ref()
21-
.map(|a| a.pubkey.bytes())
22-
.expect("selected account");
23-
24-
// NIP-65
25-
Filter::new()
26-
.authors([account])
27-
.kinds([10002])
28-
.limit(1)
29-
.build()
30-
});
31-
32-
let mut sub = with_mut_damus(&damusref, |damus| {
33-
debug!("setup_user_relays: acquired damus for query + subscribe");
16+
// Do we have a user relay list stored in nostrdb? Start with that ...
17+
with_mut_damus(&damusref, |damus| {
3418
let txn = Transaction::new(&damus.ndb).expect("transaction");
3519
let relays = query_nip65_relays(&damus.ndb, &txn, &filter);
36-
debug!("setup_user_relays: query #1 relays: {:#?}", relays);
20+
debug!("track_user_relays: initial from nostrdb: {:#?}", relays);
3721
set_relays(&mut damus.pool, relays);
22+
});
3823

39-
// Add a relay subscription to the pool
24+
// Subscribe to user relay list updates
25+
let mut sub = with_mut_damus(&damusref, |damus| {
4026
dispatcher::subscribe(damus, &[filter.clone()], 10).expect("subscribe")
4127
});
42-
debug!("setup_user_relays: sub {}", sub.id);
28+
debug!("track_user_relays: sub {}", sub.id);
4329

30+
// Track user relay list updates
4431
loop {
4532
match sub.receiver.next().await {
46-
Some(ev) => {
47-
debug!("setup_user_relays: saw {:?}", ev);
48-
with_mut_damus(&damusref, |damus| {
49-
let txn = Transaction::new(&damus.ndb).expect("transaction");
50-
let relays = query_nip65_relays(&damus.ndb, &txn, &filter);
51-
debug!("setup_user_relays: query #2 relays: {:#?}", relays);
52-
set_relays(&mut damus.pool, relays);
53-
})
54-
}
33+
Some(_ev) => with_mut_damus(&damusref, |damus| {
34+
let txn = Transaction::new(&damus.ndb).expect("transaction");
35+
let relays = query_nip65_relays(&damus.ndb, &txn, &filter);
36+
debug!("track_user_relays update: {:#?}", relays);
37+
set_relays(&mut damus.pool, relays);
38+
}),
5539
None => {
56-
debug!("setup_user_relays: saw None");
40+
debug!("track_user_relays: saw None");
5741
break;
5842
}
5943
}
6044
}
6145

62-
debug!("do_setup_user_relays finished");
46+
// Should only get here if the channel is closed
47+
debug!("track_user_relays finished");
48+
}
49+
50+
fn user_relay_filter(damusref: &DamusRef) -> Filter {
51+
with_mut_damus(&damusref, |damus| {
52+
let account = damus
53+
.accounts
54+
.get_selected_account()
55+
.as_ref()
56+
.map(|a| a.pubkey.bytes())
57+
.expect("selected account");
58+
59+
// NIP-65
60+
Filter::new()
61+
.authors([account])
62+
.kinds([10002])
63+
.limit(1)
64+
.build()
65+
})
6366
}
6467

68+
// useful for debugging
6569
fn _query_note_json(ndb: &Ndb, txn: &Transaction, filter: &Filter) -> Vec<String> {
6670
let lim = filter.limit().unwrap_or(crate::filter::default_limit()) as i32;
6771
let results = ndb

0 commit comments

Comments
 (0)