From 4c2e75b80c03d1d4a82231fa3987ea5c14e9ad3b Mon Sep 17 00:00:00 2001 From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com> Date: Fri, 3 Apr 2026 04:23:18 +0200 Subject: [PATCH] feat: handle deleted user cleanup in user_updated WebSocket handler --- packages/web/src/hooks/useWebSocket.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/web/src/hooks/useWebSocket.ts b/packages/web/src/hooks/useWebSocket.ts index 171ad162..e3deea94 100644 --- a/packages/web/src/hooks/useWebSocket.ts +++ b/packages/web/src/hooks/useWebSocket.ts @@ -13,6 +13,7 @@ import { registerSelfId } from '../utils/identity'; import { getActiveRoom } from './useLiveKit'; import { useUIStore } from '../stores/uiStore'; import { useActivityStore } from '../stores/activityStore'; +import { useDiscoverStore } from '../stores/discoverStore'; // ─── Connection state ───────────────────────────────────────────────────────── @@ -434,8 +435,22 @@ function handleEvent(origin: string, event: ServerEvent): void { ? useAuthStore.getState().user?.id : getMyUserIdForOrigin(origin); if (event.user.id === myId && isHome) { + // Self-deletion detected on another tab — log out + if (event.user.isDeleted) { + useAuthStore.getState().logout(); + break; + } setUser(event.user); } + + // Deleted user cleanup: remove from caches the existing pipeline doesn't cover + if (event.user.isDeleted) { + useSocialStore.getState().removeFriendLocally(event.user.id, origin); + useSocialStore.getState().removeRequestsForUser(event.user.id); + useActivityStore.getState().clearUserActivities(event.user.id); + useDiscoverStore.getState().removeUser(event.user.id); + useChatStore.getState().clearTypingForUser(event.user.id); + } break; }