getExercise method

Future<Either<ApiError, List<ExerciseInfo>>> getExercise(
  1. ApiBase api
)

Implementation

Future<Either<ApiError, List<ExerciseInfo>>> getExercise(ApiBase api) async {
  final exercises = await api.getExercisesByType(
    switch (category) {
      ExerciseCategoryEnum.RHYTHM => "Rhythm",
      ExerciseCategoryEnum.READING => "Reading",
      ExerciseCategoryEnum.LISTENING => "Dictation",
      ExerciseCategoryEnum.THEORY => "Theory",
    },
    null,
  );

  if (exercises.isLeft) {
    return exercises;
  }

  final futures = exercises.right.map((e) async {
    final result = await api.getExercise(e.id);
    return result.map((data) => e..exerciseData = data);
  });

  final results = await Future.wait(futures);

  return results.sequence();
}