diff --git a/rslib/src/stats/card.rs b/rslib/src/stats/card.rs index fdab209c8..ee8592d91 100644 --- a/rslib/src/stats/card.rs +++ b/rslib/src/stats/card.rs @@ -30,14 +30,24 @@ impl Collection { let (average_secs, total_secs) = average_and_total_secs_strings(&revlog); let timing = self.timing_today()?; - let seconds_elapsed = if let Some(last_review_time) = card.last_review_time { - timing.now.elapsed_secs_since(last_review_time) as u32 + + let last_review_time = if let Some(last_review_time) = card.last_review_time { + last_review_time } else { - self.storage + let mut new_card = card.clone(); + let last_review_time = self + .storage .time_of_last_review(card.id)? - .map(|ts| timing.now.elapsed_secs_since(ts)) - .unwrap_or_default() as u32 + .unwrap_or_default(); + + new_card.last_review_time = Some(last_review_time); + + self.storage.update_card(&new_card)?; + last_review_time }; + + let seconds_elapsed = timing.now.elapsed_secs_since(last_review_time) as u32; + let fsrs_retrievability = card .memory_state .zip(Some(seconds_elapsed))