mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-10 07:07:19 +00:00
Refactor debounce duration handling in BatchControlDevicesService and ControlDeviceService
This commit is contained in:
@ -11,7 +11,7 @@ abstract interface class BatchControlDevicesService {
|
||||
});
|
||||
}
|
||||
|
||||
class RemoteBatchControlDevicesService implements BatchControlDevicesService {
|
||||
final class RemoteBatchControlDevicesService implements BatchControlDevicesService {
|
||||
@override
|
||||
Future<bool> batchControlDevices({
|
||||
required List<String> uuids,
|
||||
@ -44,14 +44,15 @@ class RemoteBatchControlDevicesService implements BatchControlDevicesService {
|
||||
final class DebouncedBatchControlDevicesService
|
||||
implements BatchControlDevicesService {
|
||||
final BatchControlDevicesService decoratee;
|
||||
final Duration _debounceDuration;
|
||||
final List<(List<String> uuids, String code, Object value)> _pendingRequests = [];
|
||||
bool _isProcessing = false;
|
||||
final Duration debounceDuration;
|
||||
|
||||
final _pendingRequests = <(List<String> uuids, String code, Object value)>[];
|
||||
var _isProcessing = false;
|
||||
|
||||
DebouncedBatchControlDevicesService({
|
||||
required this.decoratee,
|
||||
Duration debounceDuration = const Duration(milliseconds: 1500),
|
||||
}) : _debounceDuration = debounceDuration;
|
||||
this.debounceDuration = const Duration(milliseconds: 1500),
|
||||
});
|
||||
|
||||
@override
|
||||
Future<bool> batchControlDevices({
|
||||
@ -61,17 +62,11 @@ final class DebouncedBatchControlDevicesService
|
||||
}) async {
|
||||
_pendingRequests.add((uuids, code, value));
|
||||
|
||||
if (_isProcessing) {
|
||||
log(
|
||||
'Request added to queue',
|
||||
name: 'DebouncedBatchControlDevicesService',
|
||||
);
|
||||
return false;
|
||||
}
|
||||
if (_isProcessing) return false;
|
||||
|
||||
_isProcessing = true;
|
||||
|
||||
await Future.delayed(_debounceDuration);
|
||||
await Future.delayed(debounceDuration);
|
||||
|
||||
final lastRequest = _pendingRequests.last;
|
||||
_pendingRequests.clear();
|
||||
|
Reference in New Issue
Block a user