diff --git a/lib/providers.dart b/lib/providers.dart index 624f892..48b3ac6 100644 --- a/lib/providers.dart +++ b/lib/providers.dart @@ -1,6 +1,8 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'domain/models/server_config.dart'; +import 'domain/models/sensor.dart'; +import 'domain/models/floor.dart'; import 'domain/models/tag.dart'; import 'domain/models/particle.dart'; import 'domain/models/floor_plan_mode.dart'; @@ -104,10 +106,36 @@ final tagRepositoryProvider = Provider((ref) { ); }); -final floorPlanRepositoryProvider = Provider((ref) { +final floorRepositoryProvider = Provider((ref) { return PhoenixFloorPlanRepository(client: ref.watch(floorClientProvider)); }); +// --------------------------------------------------------------------------- +// Floor plan data +// --------------------------------------------------------------------------- + +final floorProvider = FutureProvider.autoDispose((ref) => + ref.watch(floorRepositoryProvider).getFirstFloor()); + +final roomsProvider = FutureProvider.autoDispose>((ref) async { + final floor = await ref.watch(floorProvider.future); + if (floor == null) return []; + return ref.watch(floorRepositoryProvider).getRooms(floor.id); +}); + +// --------------------------------------------------------------------------- +// Sensor data +// --------------------------------------------------------------------------- + +final sensorsProvider = FutureProvider.autoDispose>((ref) { + return ref.watch(sensorRepositoryProvider).getSensors(); +}); + +final sensorProvider = + FutureProvider.autoDispose.family((ref, id) { + return ref.watch(sensorRepositoryProvider).getSensor(id); +}); + // --------------------------------------------------------------------------- // Cross-tab UI state // ---------------------------------------------------------------------------