You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
877 B
32 lines
877 B
import '../models/question.dart';
|
|
import '../models/deck_config.dart';
|
|
|
|
/// Manages priority point calculations for questions.
|
|
class PriorityManager {
|
|
/// Applies priority changes based on answer correctness.
|
|
static Question applyAnswerResult({
|
|
required Question question,
|
|
required bool isCorrect,
|
|
required DeckConfig config,
|
|
}) {
|
|
if (isCorrect) {
|
|
final newPriority = (question.priorityPoints -
|
|
config.priorityDecreaseOnCorrect)
|
|
.clamp(0, double.infinity)
|
|
.toInt();
|
|
return question.withPriorityPoints(newPriority);
|
|
} else {
|
|
return question.copyWith(
|
|
priorityPoints: question.priorityPoints +
|
|
config.priorityIncreaseOnIncorrect,
|
|
);
|
|
}
|
|
}
|
|
|
|
/// Resets priority to 0.
|
|
static Question resetPriority(Question question) {
|
|
return question.withPriorityPoints(0);
|
|
}
|
|
}
|
|
|