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: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(

View File

@ -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(),
), ),