From e0890f1181a3c171b41836487ff9ff5d57012b30 Mon Sep 17 00:00:00 2001 From: Bill Thiede Date: Tue, 5 Dec 2023 20:55:41 -0800 Subject: [PATCH] web: search for unread tags when clicking under Unread section --- web/src/view/desktop.rs | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/web/src/view/desktop.rs b/web/src/view/desktop.rs index 878a23e..dfc8282 100644 --- a/web/src/view/desktop.rs +++ b/web/src/view/desktop.rs @@ -23,10 +23,15 @@ pub(super) fn view(model: &Model) -> Node { pager, } => view_search_results(&query, results.as_slice(), *count, pager), }; - fn view_tag_li(display_name: &str, indent: usize, t: &Tag) -> Node { + fn view_tag_li(display_name: &str, indent: usize, t: &Tag, search_unread: bool) -> Node { + let href = if search_unread { + urls::search(&format!("is:unread tag:{}", t.name), 0) + } else { + urls::search(&format!("tag:{}", t.name), 0) + }; li![a![ attrs! { - At::Href => urls::search(&format!("tag:{}", t.name), 0) + At::Href => href }, (0..indent).map(|_| span![C!["tag-indent"], ""]), i![ @@ -45,15 +50,15 @@ pub(super) fn view(model: &Model) -> Node { .take_while(|(a, b)| a == b) .count() } - fn view_tag_list<'a>(tags: impl Iterator) -> Vec> { + fn view_tag_list<'a>( + tags: impl Iterator, + search_unread: bool, + ) -> Vec> { let mut lis = Vec::new(); let mut last = Vec::new(); for t in tags { let parts: Vec<_> = t.name.split('/').collect(); let mut n = matches(&last, &parts); - if t.name.starts_with("ZZCrap/Free") { - info!("n: {n}, parts: {parts:?} last: {last:?}"); - } if n <= parts.len() - 2 && parts.len() > 1 { // Synthesize fake tags for proper indenting. for i in n..parts.len() - 1 { @@ -67,13 +72,14 @@ pub(super) fn view(model: &Model) -> Node { fg_color: "#000".to_string(), unread: 0, }, + search_unread, )); } last = parts[..parts.len() - 1].to_vec(); n = parts.len() - 1; } let display_name = parts[n]; - lis.push(view_tag_li(&display_name, n, t)); + lis.push(view_tag_li(&display_name, n, t, search_unread)); last = parts; } lis @@ -90,7 +96,7 @@ pub(super) fn view(model: &Model) -> Node { aside![ C!["tags-menu", "menu"], IF!(!unread.is_empty() => p![C!["menu-label"], "Unread"]), - IF!(!unread.is_empty() => ul![C!["menu-list"], view_tag_list(unread.into_iter())]), + IF!(!unread.is_empty() => ul![C!["menu-list"], view_tag_list(unread.into_iter(),true)]), p![ C!["menu-label"], IF!(!force_tags_open => @@ -109,7 +115,7 @@ pub(super) fn view(model: &Model) -> Node { ], ul![ C!["menu-list"], - IF!(force_tags_open||tags_open.get() => model.tags.as_ref().map(|tags| view_tag_list(tags.iter()))), + IF!(force_tags_open||tags_open.get() => model.tags.as_ref().map(|tags| view_tag_list(tags.iter(),false))), ] ], div![