refactor: align client state and ui with backend contract

This commit is contained in:
zetaloop
2026-05-03 05:40:01 +08:00
parent a3f0b49112
commit 0e7270aa8d
4 changed files with 51 additions and 9 deletions
+16 -3
View File
@@ -27,15 +27,28 @@ export default function ChatDetailPage({ params }: { params: Promise<{ id: strin
messages,
error,
createDM,
joinSession,
leaveSession,
sendTextMessage,
sendImageMessage,
} = useChatSocket()
const cacheKey = user?.id ? `chat:dm:${user.id}:${targetUserId}` : null
useEffect(() => {
if (!connected) return
createDM(targetUserId)
}, [connected, createDM, targetUserId])
if (!connected || !cacheKey) return
const cached = window.localStorage.getItem(cacheKey)
if (cached) {
joinSession(cached)
} else {
createDM(targetUserId)
}
}, [connected, cacheKey, createDM, joinSession, targetUserId])
useEffect(() => {
if (!sessionId || !cacheKey) return
window.localStorage.setItem(cacheKey, sessionId)
}, [sessionId, cacheKey])
useEffect(
() => () => {