33 lines
1.0 KiB
Dart
33 lines
1.0 KiB
Dart
import 'package:cloud_firestore/cloud_firestore.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'social_feed_models.dart';
|
|
import 'social_feed_service.dart';
|
|
|
|
/// Provider for SocialFeedService singleton.
|
|
final socialFeedServiceProvider = Provider<SocialFeedService>((ref) {
|
|
FirebaseFirestore? firestore;
|
|
try {
|
|
firestore = FirebaseFirestore.instance;
|
|
} catch (_) {
|
|
firestore = null;
|
|
}
|
|
final service = SocialFeedService(firestore: firestore);
|
|
ref.onDispose(() {
|
|
service.dispose();
|
|
});
|
|
return service;
|
|
});
|
|
|
|
/// State provider for the active feed filter tab.
|
|
final feedFilterStateProvider = StateProvider<FeedFilter>((ref) {
|
|
return FeedFilter.allActivity;
|
|
});
|
|
|
|
/// Stream provider for the filtered community social feed.
|
|
final socialFeedStreamProvider =
|
|
StreamProvider.autoDispose<List<SocialFeedItem>>((ref) {
|
|
final service = ref.watch(socialFeedServiceProvider);
|
|
final filter = ref.watch(feedFilterStateProvider);
|
|
return service.getFeedStream(filter: filter);
|
|
});
|