From ac0ce29c76da3a12f34b1044dd4805180efc1632 Mon Sep 17 00:00:00 2001 From: Bill Thiede Date: Sun, 18 Aug 2024 11:04:31 -0700 Subject: [PATCH] web: preserve checked boxes on search refresh --- web/src/state.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/web/src/state.rs b/web/src/state.rs index 12b696a..5250c8e 100644 --- a/web/src/state.rs +++ b/web/src/state.rs @@ -291,12 +291,29 @@ pub fn update(msg: Msg, model: &mut Model, orders: &mut impl Orders) { }) .collect(), ); + info!("pager {:#?}", data.search.page_info); + let selected_threads = 'context: { + if let Context::SearchResult { + results, + selected_threads, + .. + } = &model.context + { + let old: HashSet<_> = results.iter().map(|n| &n.thread).collect(); + let new: HashSet<_> = data.search.nodes.iter().map(|n| &n.thread).collect(); + + if old == new { + break 'context selected_threads.clone(); + } + } + HashSet::new() + }; model.context = Context::SearchResult { query: model.query.clone(), results: data.search.nodes, count: data.count as usize, pager: data.search.page_info, - selected_threads: HashSet::new(), + selected_threads, }; }