Refactor desired retention logic to use a dedicated method for improved clarity and maintainability.

This commit is contained in:
Jarrett Ye 2025-07-20 19:32:07 +08:00
parent 2b130ff98c
commit 5f09b227ca
No known key found for this signature in database
GPG key ID: EBFC55E0C1A352BB
3 changed files with 13 additions and 13 deletions

View file

@ -31,6 +31,7 @@ pub(crate) use name::immediate_parent_name;
pub use name::NativeDeckName;
pub use schema11::DeckSchema11;
use crate::deckconfig::DeckConfig;
use crate::define_newtype;
use crate::error::FilteredDeckError;
use crate::markdown::render_markdown;
@ -89,6 +90,16 @@ impl Deck {
}
}
/// Get the effective desired retention value for a deck.
/// Returns deck-specific desired retention if available, otherwise falls
/// back to config default.
pub fn effective_desired_retention(&self, config: &DeckConfig) -> f32 {
self.normal()
.ok()
.and_then(|d| d.desired_retention)
.unwrap_or(config.inner.desired_retention)
}
// used by tests at the moment
#[allow(dead_code)]

View file

@ -445,14 +445,7 @@ impl Collection {
.or_not_found(card.deck_id)?;
let config = self.home_deck_config(deck.config_id(), card.original_deck_id)?;
// Get deck-specific desired retention if available, otherwise use config
// default
let desired_retention = deck
.normal()
.ok()
.and_then(|d| d.desired_retention)
.unwrap_or(config.inner.desired_retention);
let desired_retention = 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();

View file

@ -215,11 +215,7 @@ impl Collection {
// Get deck-specific desired retention if available, otherwise use config
// default
let desired_retention = deck
.normal()
.ok()
.and_then(|d| d.desired_retention)
.unwrap_or(config.inner.desired_retention);
let desired_retention = deck.effective_desired_retention(&config);
let historical_retention = config.inner.historical_retention;
let params = config.fsrs_params();