From 3193fd26fefdc2f3505dba90c3b323c0b2fee774 Mon Sep 17 00:00:00 2001 From: Faris Armoush Date: Sun, 27 Apr 2025 11:04:54 +0300 Subject: [PATCH] refactor: update presence delay value and enhance request handling in DebouncedBatchControlDevicesService --- ...ed_presence_sensor_batch_control_view.dart | 2 +- .../batch_control_devices_service.dart | 32 ++++++++++++------- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/lib/pages/device_managment/flush_mounted_presence_sensor/views/flush_mounted_presence_sensor_batch_control_view.dart b/lib/pages/device_managment/flush_mounted_presence_sensor/views/flush_mounted_presence_sensor_batch_control_view.dart index 4f27183d..2860e5cc 100644 --- a/lib/pages/device_managment/flush_mounted_presence_sensor/views/flush_mounted_presence_sensor_batch_control_view.dart +++ b/lib/pages/device_managment/flush_mounted_presence_sensor/views/flush_mounted_presence_sensor_batch_control_view.dart @@ -109,7 +109,7 @@ class FlushMountedPresenceSensorBatchControlView extends StatelessWidget ), ), PresenceUpdateData( - value: model.presenceDelay.toDouble(), + value: model.sensiReduce.toDouble(), title: 'Trigger Level:', minValue: 0, maxValue: 3, diff --git a/lib/services/batch_control_devices_service.dart b/lib/services/batch_control_devices_service.dart index de5af9ee..f78cdef4 100644 --- a/lib/services/batch_control_devices_service.dart +++ b/lib/services/batch_control_devices_service.dart @@ -46,14 +46,14 @@ final class DebouncedBatchControlDevicesService final BatchControlDevicesService decoratee; final Duration debounceDuration; - final _pendingRequests = <(List uuids, String code, Object value)>[]; - var _isProcessing = false; - DebouncedBatchControlDevicesService({ required this.decoratee, - this.debounceDuration = const Duration(milliseconds: 800), + this.debounceDuration = const Duration(milliseconds: 1500), }); + final _pendingRequests = <(List uuids, String code, Object value)>[]; + var _isProcessing = false; + @override Future batchControlDevices({ required List uuids, @@ -68,16 +68,26 @@ final class DebouncedBatchControlDevicesService await Future.delayed(debounceDuration); - final lastRequest = _pendingRequests.last; + final groupedRequests = + uuids, String code, Object value)>{}; + for (final request in _pendingRequests) { + final (_, requestCode, requestValue) = request; + groupedRequests[requestCode] = request; + } _pendingRequests.clear(); try { - final (lastRequestUuids, lastRequestCode, lastRequestValue) = lastRequest; - return decoratee.batchControlDevices( - uuids: lastRequestUuids, - code: lastRequestCode, - value: lastRequestValue, - ); + var allSuccessful = true; + for (final request in groupedRequests.values) { + final (lastRequestUuids, lastRequestCode, lastRequestValue) = request; + final success = await decoratee.batchControlDevices( + uuids: lastRequestUuids, + code: lastRequestCode, + value: lastRequestValue, + ); + if (!success) allSuccessful = false; + } + return allSuccessful; } finally { _isProcessing = false; }