Match filter once

This commit is contained in:
mo8it 2024-09-04 01:20:48 +02:00
parent 03baa471d9
commit e5ed115288

View file

@ -356,16 +356,17 @@ impl<'a> ListState<'a> {
return;
}
let ind = self
.app_state
.exercises()
.iter()
.filter(|exercise| match self.filter {
Filter::None => true,
Filter::Done => exercise.done,
Filter::Pending => !exercise.done,
})
.position(|exercise| exercise.name.contains(self.search_query.as_str()));
let is_search_result = |exercise: &Exercise| exercise.name.contains(&self.search_query);
let mut iter = self.app_state.exercises().iter();
let ind = match self.filter {
Filter::None => iter.position(is_search_result),
Filter::Done => iter
.filter(|exercise| exercise.done)
.position(is_search_result),
Filter::Pending => iter
.filter(|exercise| !exercise.done)
.position(is_search_result),
};
match ind {
Some(exercise_ind) => self.scroll_state.set_selected(exercise_ind),