getFilteredExercises method
Returns exercises filtered by category or returns favourites.
Implementation
Future<Map<String, dynamic>> getFilteredExercises({
required String email,
String? category,
bool onlyFavorites = false,
}) async {
final allExercises = await getAllExercises();
final favoritesRaw = await getFavouriteExercises(email);
final favoriteNames = favoritesRaw.map((e) => e['name'] as String).toList();
List<Map<String, dynamic>> filtered;
if (onlyFavorites) {
filtered = allExercises.where((exercise) {
return favoriteNames.contains(exercise['name']);
}).toList();
} else if (category != null) {
filtered = allExercises.where((exercise) {
return exercise['category'] == category;
}).toList();
} else {
filtered = allExercises;
}
return {
'exercises': filtered,
'favorites': favoriteNames,
};
}