From c96bd88f2ac1b6643adb9f2cfa260533c67d717b Mon Sep 17 00:00:00 2001 From: Markov Date: Tue, 24 Feb 2026 10:15:12 +0100 Subject: [PATCH] fix: deduplicate WS messages in ChatPanel + remove StrictMode --- src/components/ChatPanel.tsx | 6 +++++- src/main.tsx | 7 +++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/components/ChatPanel.tsx b/src/components/ChatPanel.tsx index c1ebbb1..3d2d35e 100644 --- a/src/components/ChatPanel.tsx +++ b/src/components/ChatPanel.tsx @@ -31,7 +31,11 @@ export default function ChatPanel({ chatId, fullscreen = false }: Props) { useEffect(() => { const unsub = wsClient.on("message.new", (data: any) => { if (data.chat_id === chatId) { - setMessages((prev) => [...prev, data as Message]); + setMessages((prev) => { + // Dedup by message id + if (prev.some((m) => m.id === data.id)) return prev; + return [...prev, data as Message]; + }); } }); return () => { unsub?.(); }; diff --git a/src/main.tsx b/src/main.tsx index 3d4bdea..c1ba65c 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,10 +1,9 @@ -import { StrictMode } from 'react' +// StrictMode removed — causes double WS subscriptions (double useEffect) +// import { StrictMode } from 'react' import { createRoot } from 'react-dom/client' import './index.css' import App from './App.tsx' createRoot(document.getElementById('root')!).render( - - - , + , ) \ No newline at end of file