23 lines
982 B
Dart
23 lines
982 B
Dart
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import '../models/announcement.dart';
|
|
import '../repositories/announcement_repository.dart';
|
|
import 'auth_provider.dart';
|
|
|
|
final announcementRepositoryProvider = Provider<AnnouncementRepository>((ref) {
|
|
final apiClient = ref.watch(apiClientProvider);
|
|
return AnnouncementRepository(apiClient: apiClient);
|
|
});
|
|
|
|
final announcementTypeFilterProvider = StateProvider.autoDispose<String?>((ref) => null);
|
|
|
|
final announcementsProvider = FutureProvider.autoDispose<AnnouncementPageResult>((ref) async {
|
|
final repository = ref.watch(announcementRepositoryProvider);
|
|
final filterType = ref.watch(announcementTypeFilterProvider);
|
|
return await repository.getAnnouncements(type: filterType);
|
|
});
|
|
|
|
final announcementDetailProvider = FutureProvider.autoDispose.family<AnnouncementItem, int>((ref, id) async {
|
|
final repository = ref.watch(announcementRepositoryProvider);
|
|
return await repository.getAnnouncementDetail(id);
|
|
});
|