From c5a90533c091a48a2e51fc42642402bce8a77c49 Mon Sep 17 00:00:00 2001 From: Stefan Mack Date: Wed, 13 Mar 2024 09:29:28 +0100 Subject: [PATCH] Add UI indication of unread entries Adds a visual element to the feed list, indicating to the user how many unread entries it contains --- src/ui.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/ui.rs b/src/ui.rs index 3f10eab..497ab31 100644 --- a/src/ui.rs +++ b/src/ui.rs @@ -155,7 +155,17 @@ fn draw_feeds(f: &mut Frame, area: Rect, app: &mut AppImpl) { .feeds .items .iter() - .flat_map(|feed| feed.title.as_ref()) + .flat_map(|feed| { + let unread_count = crate::rss::get_entries_metas(&app.conn, &app.read_mode, feed.id) + .map(|e| e.iter().filter(|entry| entry.read_at.is_none()).count()) + .unwrap_or(0); + + if unread_count > 0 { + Some(format!("{} ({})", feed.title.as_ref()?, unread_count)) + } else { + Some(feed.title.as_ref()?.to_string()) + } + }) .map(Span::raw) .map(ListItem::new) .collect::>();