profile: fetch new metadata when visiting profiles
This ensures we always have the latest data Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
@@ -5,7 +5,7 @@ use enostr::{Filter, NoteId, Pubkey};
|
|||||||
use nostrdb::{Ndb, Transaction};
|
use nostrdb::{Ndb, Transaction};
|
||||||
use notedeck::{
|
use notedeck::{
|
||||||
contacts::{contacts_filter, hybrid_contacts_filter},
|
contacts::{contacts_filter, hybrid_contacts_filter},
|
||||||
filter::{self, default_limit},
|
filter::{self, default_limit, default_remote_limit, HybridFilter},
|
||||||
FilterError, FilterState, NoteCache, RootIdError, RootNoteIdBuf,
|
FilterError, FilterState, NoteCache, RootIdError, RootNoteIdBuf,
|
||||||
};
|
};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
@@ -468,11 +468,7 @@ impl TimelineKind {
|
|||||||
todo!("implement generic filter lookups")
|
todo!("implement generic filter lookups")
|
||||||
}
|
}
|
||||||
|
|
||||||
TimelineKind::Profile(pk) => FilterState::ready(vec![Filter::new()
|
TimelineKind::Profile(pk) => FilterState::ready_hybrid(profile_filter(pk.bytes())),
|
||||||
.authors([pk.bytes()])
|
|
||||||
.kinds([1])
|
|
||||||
.limit(default_limit())
|
|
||||||
.build()]),
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -535,19 +531,11 @@ impl TimelineKind {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TimelineKind::Profile(pk) => {
|
TimelineKind::Profile(pk) => Some(Timeline::new(
|
||||||
let filter = Filter::new()
|
TimelineKind::profile(pk),
|
||||||
.authors([pk.bytes()])
|
FilterState::ready_hybrid(profile_filter(pk.bytes())),
|
||||||
.kinds([1])
|
TimelineTab::full_tabs(),
|
||||||
.limit(default_limit())
|
)),
|
||||||
.build();
|
|
||||||
|
|
||||||
Some(Timeline::new(
|
|
||||||
TimelineKind::profile(pk),
|
|
||||||
FilterState::ready(vec![filter]),
|
|
||||||
TimelineTab::full_tabs(),
|
|
||||||
))
|
|
||||||
}
|
|
||||||
|
|
||||||
TimelineKind::Notifications(pk) => {
|
TimelineKind::Notifications(pk) => {
|
||||||
let notifications_filter = Filter::new()
|
let notifications_filter = Filter::new()
|
||||||
@@ -690,6 +678,21 @@ fn last_per_pubkey_filter_state(ndb: &Ndb, pk: &Pubkey) -> FilterState {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn profile_filter(pk: &[u8; 32]) -> HybridFilter {
|
||||||
|
HybridFilter::split(
|
||||||
|
vec![Filter::new()
|
||||||
|
.authors([pk])
|
||||||
|
.kinds([1])
|
||||||
|
.limit(default_limit())
|
||||||
|
.build()],
|
||||||
|
vec![Filter::new()
|
||||||
|
.authors([pk])
|
||||||
|
.kinds([1, 0])
|
||||||
|
.limit(default_remote_limit())
|
||||||
|
.build()],
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
fn search_filter(s: &SearchQuery) -> Vec<Filter> {
|
fn search_filter(s: &SearchQuery) -> Vec<Filter> {
|
||||||
vec![s.filter().limit(default_limit()).build()]
|
vec![s.filter().limit(default_limit()).build()]
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user