fix: deduplicate WS messages in ChatPanel + remove StrictMode
This commit is contained in:
parent
f9d0bfd3a3
commit
c96bd88f2a
@ -31,7 +31,11 @@ export default function ChatPanel({ chatId, fullscreen = false }: Props) {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const unsub = wsClient.on("message.new", (data: any) => {
|
const unsub = wsClient.on("message.new", (data: any) => {
|
||||||
if (data.chat_id === chatId) {
|
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?.(); };
|
return () => { unsub?.(); };
|
||||||
|
|||||||
@ -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 { createRoot } from 'react-dom/client'
|
||||||
import './index.css'
|
import './index.css'
|
||||||
import App from './App.tsx'
|
import App from './App.tsx'
|
||||||
|
|
||||||
createRoot(document.getElementById('root')!).render(
|
createRoot(document.getElementById('root')!).render(
|
||||||
<StrictMode>
|
<App />,
|
||||||
<App />
|
|
||||||
</StrictMode>,
|
|
||||||
)
|
)
|
||||||
Loading…
Reference in New Issue
Block a user