|
|
|
|
@ -63,16 +63,19 @@ class WebSocketSender: |
|
|
|
|
return |
|
|
|
|
|
|
|
|
|
with self._debounce_lock: |
|
|
|
|
timer_device_id = device_id |
|
|
|
|
if user_ids_key in self._debounce_registry: |
|
|
|
|
old_timer, _ = self._debounce_registry[user_ids_key] |
|
|
|
|
old_timer, old_device_id = self._debounce_registry[user_ids_key] |
|
|
|
|
old_timer.cancel() |
|
|
|
|
if old_device_id != device_id: # we want to notify all devices if there all multiple ones |
|
|
|
|
timer_device_id = None |
|
|
|
|
|
|
|
|
|
new_timer = Timer( |
|
|
|
|
self._buffer_timeout, |
|
|
|
|
self._handle_debounced_action, |
|
|
|
|
args=[user_ids_key, device_id] |
|
|
|
|
args=[user_ids_key, timer_device_id] |
|
|
|
|
) |
|
|
|
|
self._debounce_registry[user_ids_key] = (new_timer, device_id) # Store new timer and latest device_id |
|
|
|
|
self._debounce_registry[user_ids_key] = (new_timer, device_id) |
|
|
|
|
new_timer.start() |
|
|
|
|
|
|
|
|
|
def _handle_debounced_action(self, user_ids_key, device_id): |
|
|
|
|
|