From 85a8824c8c98189801c9a3283654d90773d05445 Mon Sep 17 00:00:00 2001 From: Abdo Date: Wed, 7 Feb 2024 06:27:54 +0300 Subject: [PATCH] Do not reset original_due when card stays in filtered deck (#2988) --- pylib/tests/test_schedv3.py | 1 - rslib/src/scheduler/answering/current.rs | 1 - rslib/src/scheduler/answering/mod.rs | 6 ++++-- rslib/src/scheduler/filtered/card.rs | 1 - 4 files changed, 4 insertions(+), 5 deletions(-) diff --git a/pylib/tests/test_schedv3.py b/pylib/tests/test_schedv3.py index cc1fcc1d0..9720250ee 100644 --- a/pylib/tests/test_schedv3.py +++ b/pylib/tests/test_schedv3.py @@ -657,7 +657,6 @@ def test_filt_reviewing_early_normal(): # answer 'good' col.sched.answerCard(c, 3) assert c.due == col.sched.today + c.ivl - assert not c.odue # should not be in learning assert c.queue == QUEUE_TYPE_REV # should be logged as a cram rep diff --git a/rslib/src/scheduler/answering/current.rs b/rslib/src/scheduler/answering/current.rs index 7aab58db5..c40513a18 100644 --- a/rslib/src/scheduler/answering/current.rs +++ b/rslib/src/scheduler/answering/current.rs @@ -31,7 +31,6 @@ impl CardStateUpdater { if self.card.original_due != 0 { self.card.original_due } else { - // v2 scheduler resets original_due on first answer self.card.due } } diff --git a/rslib/src/scheduler/answering/mod.rs b/rslib/src/scheduler/answering/mod.rs index 6624e0a30..906e0d543 100644 --- a/rslib/src/scheduler/answering/mod.rs +++ b/rslib/src/scheduler/answering/mod.rs @@ -148,7 +148,10 @@ impl CardStateUpdater { match filtered { FilteredState::Preview(next) => self.apply_preview_state(current, next), FilteredState::Rescheduling(next) => { - self.apply_normal_study_state(current, next.original_state) + let revlog = self.apply_normal_study_state(current, next.original_state); + self.card.original_due = self.card.due; + + revlog } } } @@ -163,7 +166,6 @@ impl CardStateUpdater { next: NormalState, ) -> RevlogEntryPartial { self.card.reps += 1; - self.card.original_due = 0; self.card.desired_retention = self.desired_retention; let revlog = match next { diff --git a/rslib/src/scheduler/filtered/card.rs b/rslib/src/scheduler/filtered/card.rs index d67ebcbc7..d07aeabeb 100644 --- a/rslib/src/scheduler/filtered/card.rs +++ b/rslib/src/scheduler/filtered/card.rs @@ -70,7 +70,6 @@ impl Card { self.deck_id = self.original_deck_id; self.original_deck_id.0 = 0; - // original_due is cleared if card answered in filtered deck if self.original_due != 0 { self.due = self.original_due; }