feat: add Floor and Sensor providers

This commit is contained in:
2026-05-12 16:38:31 +02:00
parent 24d3fc4f1a
commit 78818981c3
+29 -1
View File
@@ -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<TagRepository>((ref) {
);
});
final floorPlanRepositoryProvider = Provider<FloorPlanRepository>((ref) {
final floorRepositoryProvider = Provider<FloorRepository>((ref) {
return PhoenixFloorPlanRepository(client: ref.watch(floorClientProvider));
});
// ---------------------------------------------------------------------------
// Floor plan data
// ---------------------------------------------------------------------------
final floorProvider = FutureProvider.autoDispose<Floor?>((ref) =>
ref.watch(floorRepositoryProvider).getFirstFloor());
final roomsProvider = FutureProvider.autoDispose<List<Room>>((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<List<Sensor>>((ref) {
return ref.watch(sensorRepositoryProvider).getSensors();
});
final sensorProvider =
FutureProvider.autoDispose.family<Sensor, int>((ref, id) {
return ref.watch(sensorRepositoryProvider).getSensor(id);
});
// ---------------------------------------------------------------------------
// Cross-tab UI state
// ---------------------------------------------------------------------------