34 lines
1.2 KiB
Dart
34 lines
1.2 KiB
Dart
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import '../auth/auth_providers.dart';
|
|
import 'group_ride_models.dart';
|
|
import 'group_ride_service.dart';
|
|
|
|
/// Provider for GroupRideService.
|
|
final groupRideServiceProvider = Provider<GroupRideService>((ref) {
|
|
return GroupRideService();
|
|
});
|
|
|
|
/// Stream of a specific Group Ride by ID.
|
|
final groupRideStreamProvider =
|
|
StreamProvider.family<GroupRide?, String>((ref, rideId) {
|
|
final service = ref.watch(groupRideServiceProvider);
|
|
return service.groupRideStream(rideId);
|
|
});
|
|
|
|
/// Stream of participants for a specific Group Ride.
|
|
final groupRideParticipantsProvider =
|
|
StreamProvider.family<List<GroupRideParticipant>, String>((ref, rideId) {
|
|
final service = ref.watch(groupRideServiceProvider);
|
|
return service.participantsStream(rideId);
|
|
});
|
|
|
|
/// Stream of upcoming Group Rides for the current user.
|
|
final upcomingGroupRidesProvider = StreamProvider<List<GroupRide>>((ref) {
|
|
final user = ref.watch(currentUserProvider);
|
|
if (user == null || user.isAnonymous) {
|
|
return Stream.value([]);
|
|
}
|
|
final service = ref.watch(groupRideServiceProvider);
|
|
return service.upcomingRidesStream(callerUid: user.uid);
|
|
});
|