calc method

SmResponse calc({
  1. required int quality,
  2. required int repetitions,
  3. required int previousInterval,
  4. required double previousEaseFactor,
})

Implementation

SmResponse calc({
  required int quality,
  required int repetitions,
  required int previousInterval,
  required double previousEaseFactor,
}) {
  int interval;
  double easeFactor;
  if (quality >= 3) {
    switch (repetitions) {
      case 0:
        interval = 1;
        break;
      case 1:
        interval = 6;
        break;
      default:
        interval = (previousInterval * previousEaseFactor).round();
    }

    repetitions++;
    easeFactor = previousEaseFactor +
        (0.1 - (5 - quality) * (0.08 + (5 - quality) * 0.02));
  } else {
    repetitions = 0;
    interval = 1;
    easeFactor = previousEaseFactor;
  }

  if (easeFactor < 1.3) {
    easeFactor = 1.3;
  }

  return SmResponse(
      interval: interval, repetitions: repetitions, easeFactor: easeFactor);
}