Fix/Per deck retention not used when card is moved to filtered deck (#4413)

* Fix/Per deck retention not used for filtered decks

* improve error

* Perf: prevent double "home_deck" read

* Perf: prevent duplicate database read when home deck
This commit is contained in:
Luc Mcgrady 2025-11-10 13:03:53 +00:00 committed by GitHub
parent dac26ce671
commit 5d4b00a11d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -443,9 +443,20 @@ impl Collection {
.storage
.get_deck(card.deck_id)?
.or_not_found(card.deck_id)?;
let config = self.home_deck_config(deck.config_id(), card.original_deck_id)?;
let home_deck = if card.original_deck_id.0 == 0 {
&deck
} else {
&self
.storage
.get_deck(card.original_deck_id)?
.or_not_found(card.original_deck_id)?
};
let config = self
.storage
.get_deck_config(home_deck.config_id().or_invalid("home deck is filtered")?)?
.unwrap_or_default();
let desired_retention = deck.effective_desired_retention(&config);
let desired_retention = home_deck.effective_desired_retention(&config);
let fsrs_enabled = self.get_config_bool(BoolKey::Fsrs);
let fsrs_next_states = if fsrs_enabled {
let params = config.fsrs_params();