70 lines
2.6 KiB
Dart
70 lines
2.6 KiB
Dart
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<List<ReportCardModel>>((ref) async {
|
|
final dataSource = ref.watch(reportDataSourceProvider);
|
|
return dataSource.recommended();
|
|
});
|
|
|
|
final recommendedByTopicProvider =
|
|
FutureProvider.autoDispose<List<ReportCardModel>>((ref) async {
|
|
final repository = ref.watch(reportRepositoryProvider);
|
|
final topic = ref.watch(recommendTopicProvider);
|
|
return repository.getRecommended(topic: topic);
|
|
});
|
|
|
|
final reportsProvider = FutureProvider.autoDispose<List<ReportCardModel>>((
|
|
ref,
|
|
) async {
|
|
final dataSource = ref.watch(reportDataSourceProvider);
|
|
return dataSource.reports();
|
|
});
|
|
|
|
final filteredReportsProvider =
|
|
FutureProvider.autoDispose<List<ReportCardModel>>((ref) async {
|
|
final repository = ref.watch(reportRepositoryProvider);
|
|
final query = ref.watch(reportFilterProvider);
|
|
return repository.getReports(query);
|
|
});
|
|
|
|
final institutionsProvider = FutureProvider.autoDispose<List<Institution>>((
|
|
ref,
|
|
) async {
|
|
final repository = ref.watch(reportRepositoryProvider);
|
|
return repository.getInstitutions();
|
|
});
|
|
|
|
final listenProvider = FutureProvider.autoDispose<List<AudioItem>>((ref) async {
|
|
final repository = ref.watch(reportRepositoryProvider);
|
|
return repository.getListenItems();
|
|
});
|
|
|
|
final profileHistoryReportsProvider =
|
|
FutureProvider.autoDispose<List<ReportCardModel>>((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<List<ReportCardModel>>((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<List<ReportCardModel>>((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);
|
|
});
|