diff --git a/rslib/src/scheduler/answering/mod.rs b/rslib/src/scheduler/answering/mod.rs index ecf08625e..d23f7996a 100644 --- a/rslib/src/scheduler/answering/mod.rs +++ b/rslib/src/scheduler/answering/mod.rs @@ -31,6 +31,7 @@ use crate::deckconfig::LeechAction; use crate::decks::Deck; use crate::prelude::*; use crate::scheduler::fsrs::memory_state::single_card_revlog_to_item; +use crate::scheduler::states::PreviewState; use crate::search::SearchNode; #[derive(Copy, Clone)] @@ -309,7 +310,14 @@ impl Collection { self.add_leech_tag(card.note_id)?; } - self.update_queues_after_answering_card(&card, timing) + self.update_queues_after_answering_card( + &card, + timing, + matches!( + answer.new_state, + CardState::Filtered(FilteredState::Preview(PreviewState { finished: true, .. })) + ), + ) } fn maybe_bury_siblings(&mut self, card: &Card, config: &DeckConfig) -> Result<()> { diff --git a/rslib/src/scheduler/queue/mod.rs b/rslib/src/scheduler/queue/mod.rs index bef612814..47b25d791 100644 --- a/rslib/src/scheduler/queue/mod.rs +++ b/rslib/src/scheduler/queue/mod.rs @@ -216,10 +216,15 @@ impl Collection { &mut self, card: &Card, timing: SchedTimingToday, + is_finished_preview: bool, ) -> Result<()> { if let Some(queues) = &mut self.state.card_queues { let entry = queues.pop_entry(card.id)?; - let requeued_learning = queues.maybe_requeue_learning_card(card, timing); + let requeued_learning = if is_finished_preview { + None + } else { + queues.maybe_requeue_learning_card(card, timing) + }; let cutoff_snapshot = queues.update_learning_cutoff_and_count(); let queue_build_time = queues.build_time; self.save_queue_update_undo(Box::new(QueueUpdate {