import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'models/models.dart'; import 'providers.dart'; import 'state/app_state_controllers.dart'; import 'state/report_query.dart'; final recommendedReportsProvider = FutureProvider.autoDispose>((ref) async { final dataSource = ref.watch(reportDataSourceProvider); return dataSource.recommended(); }); final recommendedByTopicProvider = FutureProvider.autoDispose>((ref) async { final repository = ref.watch(reportRepositoryProvider); final topic = ref.watch(recommendTopicProvider); return repository.getRecommended(topic: topic); }); final reportsProvider = FutureProvider.autoDispose>(( ref, ) async { final dataSource = ref.watch(reportDataSourceProvider); return dataSource.reports(); }); final filteredReportsProvider = FutureProvider.autoDispose>((ref) async { final repository = ref.watch(reportRepositoryProvider); final query = ref.watch(reportFilterProvider); return repository.getReports(query); }); final institutionsProvider = FutureProvider.autoDispose>(( ref, ) async { final repository = ref.watch(reportRepositoryProvider); return repository.getInstitutions(); }); final listenProvider = FutureProvider.autoDispose>((ref) async { final repository = ref.watch(reportRepositoryProvider); return repository.getListenItems(); }); final profileHistoryReportsProvider = FutureProvider.autoDispose>((ref) async { final profile = ref.watch(profileControllerProvider); final repository = ref.watch(reportRepositoryProvider); final reports = await repository.getReports(const ReportQuery()); return ProfileListBuilder(reports).byIds(profile.history); }); final profileFavoriteReportsProvider = FutureProvider.autoDispose>((ref) async { final profile = ref.watch(profileControllerProvider); final repository = ref.watch(reportRepositoryProvider); final reports = await repository.getReports(const ReportQuery()); return ProfileListBuilder(reports).byIds(profile.favorites); }); final profileSavedListenReportsProvider = FutureProvider.autoDispose>((ref) async { final profile = ref.watch(profileControllerProvider); final repository = ref.watch(reportRepositoryProvider); final reports = await repository.getReports(const ReportQuery()); return ProfileListBuilder(reports).byIds(profile.savedListens); });