From 78818981c3949e7637a18defa5941fed8e0d0035 Mon Sep 17 00:00:00 2001 From: dvdrw Date: Tue, 12 May 2026 16:38:31 +0200 Subject: [PATCH] feat: add Floor and Sensor providers --- lib/providers.dart | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) 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 // ---------------------------------------------------------------------------