normalizeWorkoutExercises function
Normalizes and validates a list of workout exercises
Returns null if the list is empty or all exercises are invalid. Filters out exercises that fail validation.
Implementation
List<Map<String, dynamic>>? normalizeWorkoutExercises(
List<WorkoutSequenceExercise>? exercises,
) {
if (exercises == null || exercises.isEmpty) {
return null;
}
final normalizedExercises = <Map<String, dynamic>>[];
for (final exercise in exercises) {
// Validate exerciseId
if (exercise.exerciseId.isEmpty ||
containsDisallowedCharacters(exercise.exerciseId)) {
// Skip invalid exercises
continue;
}
// Validate numeric values
if ((exercise.reps != null && exercise.reps! < 0) ||
(exercise.duration != null && exercise.duration! < 0) ||
exercise.restDuration < 0) {
// Skip exercises with invalid numeric values
continue;
}
normalizedExercises.add({
'exerciseId': exercise.exerciseId,
'reps': exercise.reps,
'duration': exercise.duration,
'includeRestPeriod': exercise.includeRestPeriod,
'restDuration': exercise.restDuration,
});
}
return normalizedExercises.isEmpty ? null : normalizedExercises;
}