77 lines
2.6 KiB
Dart
77 lines
2.6 KiB
Dart
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import '../auth/auth_providers.dart';
|
|
import 'friendship_service.dart';
|
|
import 'rider_profile_models.dart';
|
|
import 'rider_profile_service.dart';
|
|
import 'rider_search_service.dart';
|
|
|
|
/// Provider for RiderProfileService.
|
|
final riderProfileServiceProvider = Provider<RiderProfileService>((ref) {
|
|
return RiderProfileService();
|
|
});
|
|
|
|
/// Provider for FriendshipService.
|
|
final friendshipServiceProvider = Provider<FriendshipService>((ref) {
|
|
return FriendshipService();
|
|
});
|
|
|
|
/// Provider for RiderSearchService.
|
|
final riderSearchServiceProvider = Provider<RiderSearchService>((ref) {
|
|
final profileService = ref.watch(riderProfileServiceProvider);
|
|
final friendshipService = ref.watch(friendshipServiceProvider);
|
|
return RiderSearchService(
|
|
profileService: profileService,
|
|
friendshipService: friendshipService,
|
|
);
|
|
});
|
|
|
|
/// Stream of the active user's RiderProfile.
|
|
final myRiderProfileProvider = StreamProvider<RiderProfile?>((ref) {
|
|
final user = ref.watch(currentUserProvider);
|
|
if (user == null || user.isAnonymous) {
|
|
return Stream.value(null);
|
|
}
|
|
final service = ref.watch(riderProfileServiceProvider);
|
|
return service.profileStream(user.uid);
|
|
});
|
|
|
|
/// Stream of the active user's friends list.
|
|
final myFriendsProvider = StreamProvider<List<FriendSummary>>((ref) {
|
|
final user = ref.watch(currentUserProvider);
|
|
if (user == null || user.isAnonymous) {
|
|
return Stream.value([]);
|
|
}
|
|
final service = ref.watch(friendshipServiceProvider);
|
|
return service.friendsStream(user.uid);
|
|
});
|
|
|
|
/// Stream of incoming friend requests for the active user.
|
|
final myIncomingRequestsProvider = StreamProvider<List<FriendRequest>>((ref) {
|
|
final user = ref.watch(currentUserProvider);
|
|
if (user == null || user.isAnonymous) {
|
|
return Stream.value([]);
|
|
}
|
|
final service = ref.watch(friendshipServiceProvider);
|
|
return service.incomingRequestsStream(user.uid);
|
|
});
|
|
|
|
/// Stream of outgoing friend requests for the active user.
|
|
final myOutgoingRequestsProvider = StreamProvider<List<FriendRequest>>((ref) {
|
|
final user = ref.watch(currentUserProvider);
|
|
if (user == null || user.isAnonymous) {
|
|
return Stream.value([]);
|
|
}
|
|
final service = ref.watch(friendshipServiceProvider);
|
|
return service.outgoingRequestsStream(user.uid);
|
|
});
|
|
|
|
/// Stream of blocked riders for the active user.
|
|
final myBlockedRidersProvider = StreamProvider<List<BlockedRider>>((ref) {
|
|
final user = ref.watch(currentUserProvider);
|
|
if (user == null || user.isAnonymous) {
|
|
return Stream.value([]);
|
|
}
|
|
final service = ref.watch(friendshipServiceProvider);
|
|
return service.blockedRidersStream(user.uid);
|
|
});
|