feat: revamp sensor add flow
This commit is contained in:
@@ -1,11 +1,20 @@
|
||||
import '../../domain/models/sensor.dart';
|
||||
import '../sources/localiser/realtime_data_client.dart';
|
||||
import '../sources/localiser/sensor_client.dart';
|
||||
import 'sensor_repository.dart';
|
||||
|
||||
class PhoenixSensorRepository implements SensorRepository {
|
||||
const PhoenixSensorRepository({required this.client});
|
||||
const PhoenixSensorRepository({
|
||||
required this.client,
|
||||
required this.realtime,
|
||||
});
|
||||
|
||||
final SensorClient client;
|
||||
final RealtimeDataClient realtime;
|
||||
|
||||
@override
|
||||
Future<Sensor> createSensor(String sensorId, {String? name}) async =>
|
||||
Sensor.fromJson(await client.createSensor(sensorId, name: name));
|
||||
|
||||
@override
|
||||
Future<List<Sensor>> getSensors() async {
|
||||
@@ -35,11 +44,16 @@ class PhoenixSensorRepository implements SensorRepository {
|
||||
|
||||
@override
|
||||
Future<Sensor> placeSensor(int id,
|
||||
{required int roomId, required double x, required double y}) async =>
|
||||
{required int roomId, required double x, required double y}) async =>
|
||||
Sensor.fromJson(
|
||||
await client.placeSensor(id, {'room_id': roomId, 'x': x, 'y': y}));
|
||||
|
||||
@override
|
||||
Future<Sensor> unplaceSensor(int id) async =>
|
||||
Sensor.fromJson(await client.unplaceSensor(id));
|
||||
|
||||
@override
|
||||
Stream<Map<String, dynamic>> sensorEvents() => realtime
|
||||
.channelMessages('sensors')
|
||||
.map((m) => {'event': m.event, ...m.payload});
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import '../../domain/models/sensor.dart';
|
||||
|
||||
abstract class SensorRepository {
|
||||
Future<Sensor> createSensor(String sensorId, {String? name});
|
||||
Future<List<Sensor>> getSensors();
|
||||
Future<List<Sensor>> getUnplacedSensors();
|
||||
Future<Sensor> getSensor(int id);
|
||||
@@ -9,4 +10,8 @@ abstract class SensorRepository {
|
||||
Future<Sensor> placeSensor(int id,
|
||||
{required int roomId, required double x, required double y});
|
||||
Future<Sensor> unplaceSensor(int id);
|
||||
|
||||
/// Stream of raw SensorsChannel messages. Each map contains an `event` key
|
||||
/// (`sensor_announced` or `sensor_enrollment_timeout`) plus the payload.
|
||||
Stream<Map<String, dynamic>> sensorEvents();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user