feat: add Floor and Sensor providers
This commit is contained in:
+29
-1
@@ -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
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user