notedeck

One damus client to rule them all
git clone git://jb55.com/notedeck
Log | Files | Refs | README | LICENSE

commit af53dd48522eb558a54adb1c5d29e83daa90a5fa
parent 810b4c19901a823a38513a3feb64c64574577207
Author: kernelkind <kernelkind@gmail.com>
Date:   Tue, 30 Sep 2025 18:05:12 -0400

perf: improve filter generation performance

for some reason the filter here was taking ~6ms to create...

Signed-off-by: kernelkind <kernelkind@gmail.com>

Diffstat:
Mcrates/notedeck_columns/src/timeline/kind.rs | 6+++++-
Mcrates/notedeck_columns/src/toolbar.rs | 8++++++--
2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/crates/notedeck_columns/src/timeline/kind.rs b/crates/notedeck_columns/src/timeline/kind.rs @@ -626,11 +626,15 @@ impl TimelineKind { pub fn notifications_filter(pk: &Pubkey) -> Filter { Filter::new() .pubkeys([pk.bytes()]) - .kinds([1, 7, 6]) + .kinds(notification_kinds()) .limit(default_limit()) .build() } +pub fn notification_kinds() -> [u64; 3] { + [1, 7, 6] +} + #[derive(Debug)] pub struct TitleNeedsDb<'a> { kind: &'a TimelineKind, diff --git a/crates/notedeck_columns/src/toolbar.rs b/crates/notedeck_columns/src/toolbar.rs @@ -25,8 +25,12 @@ pub fn unseen_notification( profiling::scope!("NotesFreshness::update closure"); let filter = { profiling::scope!("NotesFreshness::update filter instantiation"); - crate::timeline::kind::notifications_filter(&current_pk) - .since_mut(timestamp_last_viewed) + enostr::Filter::new_with_capacity(1) + .pubkeys([current_pk.bytes()]) + .kinds(crate::timeline::kind::notification_kinds()) + .limit(1) + .since(timestamp_last_viewed) + .build() }; let txn = Transaction::new(ndb).expect("txn");