notedeck

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

commit b5d56f7831d1e1586449336ba0d59df9c7fa9b0b
parent 46633d0513bab353d57038356eaeac7f072bebb1
Author: kernelkind <kernelkind@gmail.com>
Date:   Sat, 12 Jul 2025 16:52:01 -0400

remove unnecessary FilterState::NeedsRemote filter

all NeedsRemote states are contact lists currently, which is
managed by `Accounts`

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

Diffstat:
Mcrates/notedeck/src/filter.rs | 6+++---
Mcrates/notedeck_columns/src/timeline/kind.rs | 24++++++++----------------
Mcrates/notedeck_columns/src/timeline/mod.rs | 2+-
3 files changed, 12 insertions(+), 20 deletions(-)

diff --git a/crates/notedeck/src/filter.rs b/crates/notedeck/src/filter.rs @@ -92,7 +92,7 @@ impl FilterStates { /// [`FilterState`] tracks this. #[derive(Debug, Clone)] pub enum FilterState { - NeedsRemote(Vec<Filter>), + NeedsRemote, FetchingRemote(FetchingRemoteType), GotRemote(GotRemoteType), Ready(Vec<Filter>), @@ -139,8 +139,8 @@ impl FilterState { /// for home timelines where we don't have a contact list yet. We /// need to fetch the contact list before we have the right timeline /// filter. - pub fn needs_remote(filter: Vec<Filter>) -> Self { - Self::NeedsRemote(filter) + pub fn needs_remote() -> Self { + Self::NeedsRemote } /// We got the remote data. Local data should be available to build diff --git a/crates/notedeck_columns/src/timeline/kind.rs b/crates/notedeck_columns/src/timeline/kind.rs @@ -500,11 +500,7 @@ impl TimelineKind { } TimelineKind::Algo(AlgoTimeline::LastPerPubkey(ListKind::Contact(pk))) => { - let contact_filter = Filter::new() - .authors([pk.bytes()]) - .kinds([3]) - .limit(1) - .build(); + let contact_filter = contacts_filter(pk.bytes()); let results = ndb .query(txn, &[contact_filter.clone()], 1) @@ -516,7 +512,7 @@ impl TimelineKind { if results.is_empty() { return Some(Timeline::new( kind_fn(ListKind::contact_list(pk)), - FilterState::needs_remote(vec![contact_filter.clone()]), + FilterState::needs_remote(), tabs, )); } @@ -527,7 +523,7 @@ impl TimelineKind { Err(Error::App(notedeck::Error::Filter(FilterError::EmptyContactList))) => { Some(Timeline::new( kind_fn(list_kind), - FilterState::needs_remote(vec![contact_filter]), + FilterState::needs_remote(), tabs, )) } @@ -652,12 +648,12 @@ fn contact_filter_state(txn: &Transaction, ndb: &Ndb, pk: &Pubkey) -> FilterStat .expect("contact query failed?"); if results.is_empty() { - FilterState::needs_remote(vec![contact_filter.clone()]) + FilterState::needs_remote() } else { let with_hashtags = false; match filter::filter_from_tags(&results[0].note, Some(pk.bytes()), with_hashtags) { Err(notedeck::Error::Filter(FilterError::EmptyContactList)) => { - FilterState::needs_remote(vec![contact_filter]) + FilterState::needs_remote() } Err(err) => { error!("Error getting contact filter state: {err}"); @@ -669,11 +665,7 @@ fn contact_filter_state(txn: &Transaction, ndb: &Ndb, pk: &Pubkey) -> FilterStat } fn last_per_pubkey_filter_state(ndb: &Ndb, pk: &Pubkey) -> FilterState { - let contact_filter = Filter::new() - .authors([pk.bytes()]) - .kinds([3]) - .limit(1) - .build(); + let contact_filter = contacts_filter(pk.bytes()); let txn = Transaction::new(ndb).expect("txn"); let results = ndb @@ -681,13 +673,13 @@ fn last_per_pubkey_filter_state(ndb: &Ndb, pk: &Pubkey) -> FilterState { .expect("contact query failed?"); if results.is_empty() { - FilterState::needs_remote(vec![contact_filter]) + FilterState::needs_remote() } else { let kind = 1; let notes_per_pk = 1; match filter::last_n_per_pubkey_from_tags(&results[0].note, kind, notes_per_pk) { Err(notedeck::Error::Filter(FilterError::EmptyContactList)) => { - FilterState::needs_remote(vec![contact_filter]) + FilterState::needs_remote() } Err(err) => { error!("Error getting contact filter state: {err}"); diff --git a/crates/notedeck_columns/src/timeline/mod.rs b/crates/notedeck_columns/src/timeline/mod.rs @@ -574,7 +574,7 @@ pub fn send_initial_timeline_filter( } // we need some data first - FilterState::NeedsRemote(_) => fetch_contact_list(subs, relay, timeline, accounts), + FilterState::NeedsRemote => fetch_contact_list(subs, relay, timeline, accounts), } }