From 95f97c15262af87dbc82b9d6aab37a3332e90111 Mon Sep 17 00:00:00 2001 From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com> Date: Tue, 7 Apr 2026 19:55:08 +0200 Subject: [PATCH] feat: process DM WS events from all origins Remove home-only restriction on DM events. Add federatedId dedup check to dm_channel_created to prevent duplicate sidebar entries for cross-instance DMs. --- packages/web/src/hooks/useWebSocket.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/web/src/hooks/useWebSocket.ts b/packages/web/src/hooks/useWebSocket.ts index e3deea94..8e3cfb58 100644 --- a/packages/web/src/hooks/useWebSocket.ts +++ b/packages/web/src/hooks/useWebSocket.ts @@ -544,7 +544,7 @@ function handleEvent(origin: string, event: ServerEvent): void { break; } - // ─── DM events (home-only) ────────────────────────────────────────────── + // ─── DM events (all origins) ──────────────────────────────────────────── case 'dm_message_created': { if (!isHome) { @@ -817,16 +817,23 @@ function handleEvent(origin: string, event: ServerEvent): void { break; } - // ─── DM channel events (home-only) ────────────────────────────────────── + // ─── DM channel events (all origins) ──────────────────────────────────── - case 'dm_channel_created': + case 'dm_channel_created': { if (!isHome) { for (const m of event.dmChannel.members) { normalizeUserAssets(m, origin); } } + // Dedup: skip if a channel with the same federatedId already exists + const fid = event.dmChannel.federatedId; + if (fid) { + const existing = useSpaceStore.getState().dmChannels.find(dm => dm.federatedId === fid); + if (existing) break; + } addDmChannel(event.dmChannel, origin); break; + } case 'dm_channel_closed': removeDmChannel(event.dmChannelId);