mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-10 15:17:31 +00:00
Fix deviceId assignment in FlushMountedPresenceSensorBlocFactory and update _listenToChanges method for async handling
This commit is contained in:
@ -1,4 +1,5 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
import 'dart:developer';
|
||||||
|
|
||||||
import 'package:bloc/bloc.dart';
|
import 'package:bloc/bloc.dart';
|
||||||
import 'package:equatable/equatable.dart';
|
import 'package:equatable/equatable.dart';
|
||||||
@ -80,28 +81,31 @@ class FlushMountedPresenceSensorBloc
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _listenToChanges(
|
Future<void> _listenToChanges(
|
||||||
Emitter<FlushMountedPresenceSensorState> emit,
|
Emitter<FlushMountedPresenceSensorState> emit,
|
||||||
String deviceId,
|
String deviceId,
|
||||||
) {
|
) async {
|
||||||
try {
|
final ref = FirebaseDatabase.instance.ref(
|
||||||
final ref = FirebaseDatabase.instance.ref(
|
'device-status/$deviceId',
|
||||||
'device-status/$deviceId',
|
);
|
||||||
);
|
|
||||||
|
|
||||||
ref.onValue.listen((DatabaseEvent event) {
|
await ref.onValue.listen(
|
||||||
|
(DatabaseEvent event) async {
|
||||||
Map<dynamic, dynamic> usersMap =
|
Map<dynamic, dynamic> usersMap =
|
||||||
event.snapshot.value as Map<dynamic, dynamic>;
|
event.snapshot.value as Map<dynamic, dynamic>;
|
||||||
List<Status> statusList = [];
|
List<Status> statusList = [];
|
||||||
|
|
||||||
usersMap['status'].forEach((element) {
|
(usersMap['status'] as List<dynamic>?)?.forEach((element) {
|
||||||
statusList.add(Status(code: element['code'], value: element['value']));
|
statusList.add(Status(code: element['code'], value: element['value']));
|
||||||
});
|
});
|
||||||
|
|
||||||
deviceStatus = FlushMountedPresenceSensorModel.fromJson(statusList);
|
deviceStatus = FlushMountedPresenceSensorModel.fromJson(statusList);
|
||||||
emit(FlushMountedPresenceSensorLoadingNewSate(model: deviceStatus));
|
if (!emit.isDone) {
|
||||||
});
|
emit(FlushMountedPresenceSensorLoadingNewSate(model: deviceStatus));
|
||||||
} catch (_) {}
|
}
|
||||||
|
},
|
||||||
|
onError: (error) => log(error.toString(), name: 'FirebaseDatabaseError'),
|
||||||
|
).asFuture();
|
||||||
}
|
}
|
||||||
|
|
||||||
void _onFlushMountedPresenceSensorChangeValueEvent(
|
void _onFlushMountedPresenceSensorChangeValueEvent(
|
||||||
|
@ -9,7 +9,7 @@ abstract final class FlushMountedPresenceSensorBlocFactory {
|
|||||||
required String deviceId,
|
required String deviceId,
|
||||||
}) {
|
}) {
|
||||||
return FlushMountedPresenceSensorBloc(
|
return FlushMountedPresenceSensorBloc(
|
||||||
deviceId: '',
|
deviceId: deviceId,
|
||||||
controlDeviceService: DebouncedControlDeviceService(
|
controlDeviceService: DebouncedControlDeviceService(
|
||||||
decoratee: RemoteControlDeviceService(),
|
decoratee: RemoteControlDeviceService(),
|
||||||
),
|
),
|
||||||
|
Reference in New Issue
Block a user