From bffc62a52b287d15d649a27327073af5ed162d1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9?= <48084558+servusrene@users.noreply.github.com> Date: Sun, 15 Mar 2026 18:51:01 +0100 Subject: [PATCH] fix: listen to user:offline event to individually mark viewers offline The ActiveUserHandler emits "user:offline" when a viewers online cache TTL expires (7.5 min without activity), but no listener existed for this event. This meant viewers were never individually marked offline in the ViewerDB - only bulk-cleared on chat disconnect or stream end. --- src/backend/viewers/viewer-online-status-manager.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/backend/viewers/viewer-online-status-manager.ts b/src/backend/viewers/viewer-online-status-manager.ts index abca848d3..aee9765d1 100644 --- a/src/backend/viewers/viewer-online-status-manager.ts +++ b/src/backend/viewers/viewer-online-status-manager.ts @@ -41,6 +41,10 @@ class ViewerOnlineStatusManager { ActiveUserHandler.on("user:online", (user) => { void this.setChatViewerOnline(user); }); + + ActiveUserHandler.on("user:offline", (userId) => { + void this.setChatViewerOffline(userId); + }); } async getOnlineViewers(): Promise {