import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../../core/api/api_providers.dart'; import '../../../core/api/guarded_api_call.dart'; import '../../auth/data/auth_providers.dart'; import '../domain/meal_plan_dashboard.dart'; import '../domain/meal_plan_week.dart'; import 'meal_plan_repository.dart'; final mealPlanRepositoryProvider = Provider((ref) { return MealPlanRepository(ref.watch(apiClientProvider)); }); final mealPlanWeekOffsetProvider = StateProvider((ref) => 0); final mealPlanWeekProvider = Provider((ref) { final offset = ref.watch(mealPlanWeekOffsetProvider); return MealPlanWeek.fromOffset(offset); }); final mealPlanDashboardProvider = FutureProvider((ref) async { final week = ref.watch(mealPlanWeekProvider); final token = await ref.watch(authStateProvider.future); return guardedApiCall(ref, () async { final repository = ref.read(mealPlanRepositoryProvider); final entries = await repository.fetchEntries(week.fromIso, week.toIso, token: token); final shoppingItems = await repository.fetchShoppingList(week.fromIso, week.toIso, token: token); final inventoryCompareItems = await repository.fetchInventoryCompare( week.fromIso, week.toIso, token: token, ); return MealPlanDashboard( entries: entries, shoppingItems: shoppingItems, inventoryCompareItems: inventoryCompareItems, ); }); });