summaryrefslogtreecommitdiff
path: root/src/list
diff options
context:
space:
mode:
authorAdhyan <adhyanpatel@gmail.com>2024-09-02 10:59:23 -0600
committerAdhyan <adhyanpatel@gmail.com>2024-09-02 10:59:23 -0600
commitabf1228a0a837e71d744f5f2881f386387802cc7 (patch)
tree111ea617483e12416965bd57f451fc0f75de6aab /src/list
parent547a9d947bf62052c263a6ee935b5451d3c0dbf1 (diff)
search now filters the list first
Diffstat (limited to 'src/list')
-rw-r--r--src/list/state.rs23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/list/state.rs b/src/list/state.rs
index be05f3b..8d5bf5b 100644
--- a/src/list/state.rs
+++ b/src/list/state.rs
@@ -352,6 +352,27 @@ impl<'a> ListState<'a> {
.app_state
.exercises()
.iter()
+ .filter_map(|exercise| {
+ match self.filter() {
+ Filter::None => {
+ Some(exercise)
+ },
+ Filter::Done => {
+ if exercise.done {
+ Some(exercise)
+ } else {
+ None
+ }
+ },
+ Filter::Pending => {
+ if !exercise.done {
+ Some(exercise)
+ } else {
+ None
+ }
+ }
+ }
+ })
.enumerate()
.find_map(|(i, s)| {
if s.name.contains(self.search_query.as_str()) {
@@ -363,8 +384,6 @@ impl<'a> ListState<'a> {
match idx {
Some(i) => {
- // ? do we need this function call?
- // let exercise_ind = self.selected_to_exercise_ind(i).unwrap();
let exercise_ind = i;
self.scroll_state.set_selected(exercise_ind);
self.update_rows();