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:
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(¤t_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");