Fix finished preview learning cards being repeated (#3196)

This commit is contained in:
Abdo 2024-05-15 14:55:25 +03:00 committed by GitHub
parent 998b91c1fe
commit ce8ddc84b9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 15 additions and 2 deletions

View file

@ -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<()> {

View file

@ -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 {