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