diff --git a/lib/pages/device_managment/flush_mounted_presence_sensor/bloc/flush_mounted_presence_sensor_bloc.dart b/lib/pages/device_managment/flush_mounted_presence_sensor/bloc/flush_mounted_presence_sensor_bloc.dart index f15c14d6..a3c15aa0 100644 --- a/lib/pages/device_managment/flush_mounted_presence_sensor/bloc/flush_mounted_presence_sensor_bloc.dart +++ b/lib/pages/device_managment/flush_mounted_presence_sensor/bloc/flush_mounted_presence_sensor_bloc.dart @@ -1,5 +1,4 @@ import 'dart:async'; -import 'dart:developer'; import 'package:bloc/bloc.dart'; import 'package:equatable/equatable.dart'; @@ -110,41 +109,16 @@ class FlushMountedPresenceSensorBloc Emitter emit, ) async { emit(FlushMountedPresenceSensorLoadingNewSate(model: deviceStatus)); - switch (event.code) { - case FlushMountedPresenceSensorModel.codeFarDetection: - deviceStatus.farDetection = event.value; - break; - case FlushMountedPresenceSensorModel.codeSensitivity: - log('updated sensitivity: ${deviceStatus.sensitivity}-${event.value}'); - deviceStatus.sensitivity = event.value; - break; - case FlushMountedPresenceSensorModel.codeNoneDelay: - log('updated none delay: ${deviceStatus.noneDelay}-${event.value}'); - deviceStatus.noneDelay = event.value; - break; - case FlushMountedPresenceSensorModel.codePresenceDelay: - deviceStatus.presenceDelay = event.value; - break; - case FlushMountedPresenceSensorModel.codeNearDetection: - deviceStatus.nearDetection = event.value; - break; - case FlushMountedPresenceSensorModel.codeOccurDistReduce: - deviceStatus.occurDistReduce = event.value; - break; - case FlushMountedPresenceSensorModel.codeSensiReduce: - deviceStatus.sensiReduce = event.value; - break; - default: - break; - } + _updateDeviceFunctionFromCode(event.code, event.value); emit(FlushMountedPresenceSensorUpdateState(model: deviceStatus)); - await _controlDevice( - deviceId: deviceId, - code: event.code, - value: event.value, - isBatch: false, - emit: emit, - ); + try { + await controlDeviceService.controlDevice( + deviceUuid: deviceId, + status: Status(code: event.code, value: event.value), + ); + } catch (_) { + await _reloadDeviceStatus(); + } } Future _onFlushMountedPresenceSensorBatchControlEvent( @@ -152,67 +126,54 @@ class FlushMountedPresenceSensorBloc Emitter emit, ) async { emit(FlushMountedPresenceSensorLoadingNewSate(model: deviceStatus)); - switch (event.code) { - case FlushMountedPresenceSensorModel.codeFarDetection: - deviceStatus.farDetection = event.value; - break; - case FlushMountedPresenceSensorModel.codeSensitivity: - deviceStatus.sensitivity = event.value; - break; - case FlushMountedPresenceSensorModel.codeNoneDelay: - deviceStatus.noneDelay = event.value; - break; - case FlushMountedPresenceSensorModel.codePresenceDelay: - deviceStatus.presenceDelay = event.value; - break; - case FlushMountedPresenceSensorModel.codeNearDetection: - deviceStatus.nearDetection = event.value; - break; - case FlushMountedPresenceSensorModel.codeOccurDistReduce: - deviceStatus.occurDistReduce = event.value; - break; - case FlushMountedPresenceSensorModel.codeSensiReduce: - deviceStatus.sensiReduce = event.value; - break; - default: - break; - } + _updateDeviceFunctionFromCode(event.code, event.value); emit(FlushMountedPresenceSensorUpdateState(model: deviceStatus)); - await _controlDevice( - deviceId: event.deviceIds, - code: event.code, - value: event.value, - emit: emit, - isBatch: true, - ); + + try { + await batchControlDevicesService.batchControlDevices( + uuids: event.deviceIds, + code: event.code, + value: event.value, + ); + } catch (_) { + await _reloadDeviceStatus(); + } } - Future _controlDevice({ - required dynamic deviceId, - required String code, - required dynamic value, - required Emitter emit, - required bool isBatch, - }) async { - try { - if (isBatch) { - await batchControlDevicesService.batchControlDevices( - uuids: deviceId, - code: code, - value: value, - ); - } else { - await controlDeviceService.controlDevice( - deviceUuid: deviceId, - status: Status(code: code, value: value), - ); - } - } catch (_) { - await Future.delayed(const Duration(milliseconds: 500)); - add(FlushMountedPresenceSensorFetchStatusEvent()); + void _updateDeviceFunctionFromCode(String code, int value) { + switch (code) { + case FlushMountedPresenceSensorModel.codeFarDetection: + deviceStatus.farDetection = value; + break; + case FlushMountedPresenceSensorModel.codeSensitivity: + deviceStatus.sensitivity = value; + break; + case FlushMountedPresenceSensorModel.codeNoneDelay: + deviceStatus.noneDelay = value; + break; + case FlushMountedPresenceSensorModel.codePresenceDelay: + deviceStatus.presenceDelay = value; + break; + case FlushMountedPresenceSensorModel.codeNearDetection: + deviceStatus.nearDetection = value; + break; + case FlushMountedPresenceSensorModel.codeOccurDistReduce: + deviceStatus.occurDistReduce = value; + break; + case FlushMountedPresenceSensorModel.codeSensiReduce: + deviceStatus.sensiReduce = value; + break; + default: + return; } } + Future _reloadDeviceStatus() async { + await Future.delayed(const Duration(milliseconds: 500), () { + add(FlushMountedPresenceSensorFetchStatusEvent()); + }); + } + Future _onFlushMountedPresenceSensorGetDeviceReportsEvent( FlushMountedPresenceSensorGetDeviceReportsEvent event, Emitter emit,