MotorSignal-App/lib/services/social/social_feed_providers.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);
});