Fix deviceId assignment in FlushMountedPresenceSensorBlocFactory and update _listenToChanges method for async handling

This commit is contained in:
Faris Armoush
2025-04-23 13:11:25 +03:00
parent 86164e746a
commit e1a2465130
2 changed files with 18 additions and 14 deletions

View File

@ -1,4 +1,5 @@
import 'dart:async';
import 'dart:developer';
import 'package:bloc/bloc.dart';
import 'package:equatable/equatable.dart';
@ -80,28 +81,31 @@ class FlushMountedPresenceSensorBloc
}
}
void _listenToChanges(
Future<void> _listenToChanges(
Emitter<FlushMountedPresenceSensorState> emit,
String deviceId,
) {
try {
final ref = FirebaseDatabase.instance.ref(
'device-status/$deviceId',
);
) async {
final ref = FirebaseDatabase.instance.ref(
'device-status/$deviceId',
);
ref.onValue.listen((DatabaseEvent event) {
await ref.onValue.listen(
(DatabaseEvent event) async {
Map<dynamic, dynamic> usersMap =
event.snapshot.value as Map<dynamic, dynamic>;
List<Status> statusList = [];
usersMap['status'].forEach((element) {
(usersMap['status'] as List<dynamic>?)?.forEach((element) {
statusList.add(Status(code: element['code'], value: element['value']));
});
deviceStatus = FlushMountedPresenceSensorModel.fromJson(statusList);
emit(FlushMountedPresenceSensorLoadingNewSate(model: deviceStatus));
});
} catch (_) {}
if (!emit.isDone) {
emit(FlushMountedPresenceSensorLoadingNewSate(model: deviceStatus));
}
},
onError: (error) => log(error.toString(), name: 'FirebaseDatabaseError'),
).asFuture();
}
void _onFlushMountedPresenceSensorChangeValueEvent(

View File

@ -9,7 +9,7 @@ abstract final class FlushMountedPresenceSensorBlocFactory {
required String deviceId,
}) {
return FlushMountedPresenceSensorBloc(
deviceId: '',
deviceId: deviceId,
controlDeviceService: DebouncedControlDeviceService(
decoratee: RemoteControlDeviceService(),
),