summaryrefslogtreecommitdiff
path: root/src/list/state.rs
diff options
context:
space:
mode:
authormo8it <mo8it@proton.me>2024-04-18 12:41:17 +0200
committermo8it <mo8it@proton.me>2024-04-18 12:41:17 +0200
commit01e6732e4d920d9a1859e05fa28382e4307571af (patch)
tree122060cdc0ef3f81d367e0afc7b0e3e9d29d33ee /src/list/state.rs
parentf04089b8bc724d41dcd26117c85f32328b5eb597 (diff)
Improve resetting
Diffstat (limited to 'src/list/state.rs')
-rw-r--r--src/list/state.rs13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/list/state.rs b/src/list/state.rs
index 2a1fef1..0253bb9 100644
--- a/src/list/state.rs
+++ b/src/list/state.rs
@@ -217,23 +217,22 @@ impl<'a> UiState<'a> {
return Ok(self);
};
- let (ind, exercise) = self
+ let ind = self
.app_state
.exercises()
.iter()
.enumerate()
.filter_map(|(ind, exercise)| match self.filter {
- Filter::Done => exercise.done.then_some((ind, exercise)),
- Filter::Pending => (!exercise.done).then_some((ind, exercise)),
- Filter::None => Some((ind, exercise)),
+ Filter::Done => exercise.done.then_some(ind),
+ Filter::Pending => (!exercise.done).then_some(ind),
+ Filter::None => Some(ind),
})
.nth(selected)
.context("Invalid selection index")?;
- exercise.reset()?;
+ let exercise_path = self.app_state.reset_exercise_by_ind(ind)?;
self.message
- .write_fmt(format_args!("The exercise {exercise} has been reset!"))?;
- self.app_state.set_pending(ind)?;
+ .write_fmt(format_args!("The exercise {exercise_path} has been reset"))?;
Ok(self.with_updated_rows())
}