From b133625bae4d2bdb348fbf360845f069834dd64e Mon Sep 17 00:00:00 2001 From: Patrick Cloke Date: Tue, 22 Aug 2023 15:45:50 -0400 Subject: [PATCH] Remove offline devices. --- synapse/handlers/presence.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/synapse/handlers/presence.py b/synapse/handlers/presence.py index bd4efef179e7..ecbb744f630b 100644 --- a/synapse/handlers/presence.py +++ b/synapse/handlers/presence.py @@ -2053,6 +2053,7 @@ def handle_timeout( # Check per-device whether the device should be considered idle or offline # due to timeouts. device_changed = False + offline_devices = [] for device_id, device_state in user_devices.items(): if device_state.state == PresenceState.ONLINE: if now - device_state.last_active_ts > IDLE_TIMER: @@ -2072,9 +2073,13 @@ def handle_timeout( if now - sync_or_active > SYNC_ONLINE_TIMEOUT: # Mark the device as going offline. - device_state.state = PresenceState.OFFLINE + offline_devices.append(device_id) device_changed = True + # Offline devices are not needed and do not add information. + for device_id in offline_devices: + user_devices.pop(device_id) + # If the presence state of the devices changed, then (maybe) update # the user's overall presence state. if device_changed: