import 'package:riverpod/riverpod.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:weblibre/features/bangs/data/models/bang_data.dart'; import 'package:weblibre/features/bangs/data/models/bang_group.dart'; import 'package:weblibre/features/bangs/data/models/search_history_entry.dart'; import 'package:weblibre/features/bangs/domain/repositories/data.dart'; import 'package:weblibre/features/bangs/domain/repositories/sync.dart'; import 'package:weblibre/features/user/domain/repositories/general_settings.dart'; part 'bangs.g.dart'; @Riverpod(keepAlive: true) Stream defaultSearchBangData(Ref ref) { final trigger = ref.watch( generalSettingsRepositoryProvider.select( (value) => value.defaultSearchProvider, ), ); final repository = ref.watch(bangDataRepositoryProvider.notifier); return repository.watchBang(trigger); } @Riverpod() Stream>> bangCategories(Ref ref) { final repository = ref.watch(bangDataRepositoryProvider.notifier); return repository.watchCategories(); } @Riverpod() Stream> bangList( Ref ref, { List? triggers, List? groups, String? domain, ({String category, String? subCategory})? categoryFilter, bool? orderMostFrequentFirst, }) { final repository = ref.watch(bangDataRepositoryProvider.notifier); return repository.watchBangs( triggers: triggers, groups: groups, domain: domain, categoryFilter: categoryFilter, orderMostFrequentFirst: orderMostFrequentFirst, ); } @Riverpod() Stream> frequentBangList(Ref ref) { final repository = ref.watch(bangDataRepositoryProvider.notifier); return repository.watchFrequentBangs(); } @Riverpod() Stream> searchHistory(Ref ref) { final repository = ref.watch(bangDataRepositoryProvider.notifier); return repository.watchSearchHistory(limit: 3); //TODO: make count dynamic } @Riverpod() Stream lastSyncOfGroup(Ref ref, BangGroup group) { final repository = ref.watch(bangSyncRepositoryProvider.notifier); return repository.watchLastSyncOfGroup(group); } @Riverpod() Stream bangCountOfGroup(Ref ref, BangGroup group) { final repository = ref.watch(bangDataRepositoryProvider.notifier); return repository.watchBangCount(group); }