updatePerformedSet method

Future<void> updatePerformedSet({
  1. required int exerciseIndex,
  2. required int setIndex,
  3. required double weight,
  4. required int reps,
  5. required int rir,
})

Implementation

Future<void> updatePerformedSet({
  required int exerciseIndex,
  required int setIndex,
  required double weight,
  required int reps,
  required int rir,
}) async {
  if (_state == null) return;

  final updatedPerformed =
      _state!.performed.map((ex) {
        if (ex.exerciseIndex != exerciseIndex) return ex;
        final updatedSets =
            ex.sets.map((s) {
              if (s.setIndex != setIndex) return s;
              return PerformedSet(
                exerciseIndex: s.exerciseIndex,
                setIndex: s.setIndex,
                actualReps: reps,
                actualWeight: weight,
                rir: rir,
                pause: s.pause,
                duration: s.duration,
                completedAt: s.completedAt,
              );
            }).toList();
        return PerformedExercise(
          exerciseIndex: ex.exerciseIndex,
          exerciseName: ex.exerciseName,
          sets: updatedSets,
        );
      }).toList();

  _state = _state!.copyWith(
    performed: updatedPerformed,
    updatedAt: DateTime.now(),
  );
  await _persist();
  notifyListeners();
}