chrome: method to find whether there are unseen notifications
Signed-off-by: kernelkind <kernelkind@gmail.com>
This commit is contained in:
@@ -477,6 +477,38 @@ impl Chrome {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn unseen_notification(
|
||||||
|
columns: Option<&mut Damus>,
|
||||||
|
ndb: &nostrdb::Ndb,
|
||||||
|
current_pk: notedeck::enostr::Pubkey,
|
||||||
|
) -> bool {
|
||||||
|
let Some(columns) = columns else {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
let Some(tl) = columns
|
||||||
|
.timeline_cache
|
||||||
|
.get_mut(&TimelineKind::Notifications(current_pk))
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
let freshness = &mut tl.current_view_mut().freshness;
|
||||||
|
freshness.update(|timestamp_last_viewed| {
|
||||||
|
let filter = notedeck_columns::timeline::kind::notifications_filter(¤t_pk)
|
||||||
|
.since_mut(timestamp_last_viewed);
|
||||||
|
let txn = Transaction::new(ndb).expect("txn");
|
||||||
|
|
||||||
|
let Some(res) = ndb.query(&txn, &[filter], 1).ok() else {
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
!res.is_empty()
|
||||||
|
});
|
||||||
|
|
||||||
|
freshness.has_unseen()
|
||||||
|
}
|
||||||
|
|
||||||
impl notedeck::App for Chrome {
|
impl notedeck::App for Chrome {
|
||||||
fn update(&mut self, ctx: &mut notedeck::AppContext, ui: &mut egui::Ui) -> Option<AppAction> {
|
fn update(&mut self, ctx: &mut notedeck::AppContext, ui: &mut egui::Ui) -> Option<AppAction> {
|
||||||
if let Some(action) = self.show(ctx, ui) {
|
if let Some(action) = self.show(ctx, ui) {
|
||||||
|
|||||||
Reference in New Issue
Block a user