getFavouriteExercises method

Future<List<Map<String, dynamic>>> getFavouriteExercises(
  1. String email
)

Returns all favourite exercises of a user.

Implementation

Future<List<Map<String, dynamic>>> getFavouriteExercises(String email) async {
  final userQuery = await firestore
      .collection('users')
      .where('email', isEqualTo: email)
      .get();

  if (userQuery.docs.isEmpty) return [];

  final userDoc = userQuery.docs.first;

  final favoritesSnapshot =
      await userDoc.reference.collection('favorites').get();

  List<Map<String, dynamic>> exerciseList = [];

  for (var favDoc in favoritesSnapshot.docs) {
    final exerciseRef = favDoc.data()['exercise'];

    if (exerciseRef is DocumentReference) {
      final exerciseSnap = await exerciseRef.get();
      if (exerciseSnap.exists) {
        exerciseList.add(exerciseSnap.data() as Map<String, dynamic>);
      }
    }
  }
  return exerciseList;
}