import 'package:amplify_trips_planner/features/trip/services/trips_datastore_service.dart'; import 'package:amplify_trips_planner/models/Trip.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; final tripsRepositoryProvider = Provider((ref) { TripsDataStoreService tripsDataStoreService = ref.read(tripsDataStoreServiceProvider); return TripsRepository(tripsDataStoreService); }); final tripsListStreamProvider = StreamProvider.autoDispose>((ref) { final tripsRepository = ref.watch(tripsRepositoryProvider); return tripsRepository.getTrips(); }); final pastTripsListStreamProvider = StreamProvider.autoDispose>((ref) { final tripsRepository = ref.watch(tripsRepositoryProvider); return tripsRepository.getPastTrips(); }); final tripProvider = StreamProvider.autoDispose.family((ref, id) { final tripsRepository = ref.watch(tripsRepositoryProvider); return tripsRepository.get(id); }); class TripsRepository { TripsRepository(this.tripsDataStoreService); final TripsDataStoreService tripsDataStoreService; Stream> getTrips() { return tripsDataStoreService.listenToTrips(); } Stream> getPastTrips() { return tripsDataStoreService.listenToPastTrips(); } Future add(Trip trip) async { await tripsDataStoreService.addTrip(trip); } Future update(Trip updatedTrip) async { await tripsDataStoreService.updateTrip(updatedTrip); } Future delete(Trip deletedTrip) async { await tripsDataStoreService.deleteTrip(deletedTrip); } Stream get(String id) { return tripsDataStoreService.getTripStream(id); } }