fix: resolve race conditions in assistant/cockpit session loading
- Always load session data on mount even when urlSessionId matches activeChatId, fixing empty state after view toggle between /assistant and /cockpit (tasks/messages not showing until sidebar click) - Add loadingRef for synchronous guards preventing duplicate sends, duplicate session creation, and prefill races - Fix stale evidence_items closure in CockpitPage handlers - Move setLoading(true) before first await in handlePrefill and handleResumeNew Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -99,20 +99,26 @@ export default function CockpitPage() {
|
||||
|
||||
const handleEvidenceAdd = useCallback(async (text: string, status: EvidenceItem['status']) => {
|
||||
const newItem: EvidenceItem = { text, status }
|
||||
const updated = [...triageMeta.evidence_items, newItem]
|
||||
setTriageMeta(prev => ({ ...prev, evidence_items: updated }))
|
||||
let updated: EvidenceItem[] = []
|
||||
setTriageMeta(prev => {
|
||||
updated = [...prev.evidence_items, newItem]
|
||||
return { ...prev, evidence_items: updated }
|
||||
})
|
||||
if (session.activeChatId) {
|
||||
try { await aiSessionsApi.updateTriage(session.activeChatId, { evidence_items: updated }) } catch { /* best-effort */ }
|
||||
}
|
||||
}, [session.activeChatId, triageMeta.evidence_items])
|
||||
}, [session.activeChatId])
|
||||
|
||||
const handleEvidenceEdit = useCallback(async (index: number, text: string, status: EvidenceItem['status']) => {
|
||||
const updated = triageMeta.evidence_items.map((item, i) => i === index ? { text, status } : item)
|
||||
setTriageMeta(prev => ({ ...prev, evidence_items: updated }))
|
||||
let updated: EvidenceItem[] = []
|
||||
setTriageMeta(prev => {
|
||||
updated = prev.evidence_items.map((item, i) => i === index ? { text, status } : item)
|
||||
return { ...prev, evidence_items: updated }
|
||||
})
|
||||
if (session.activeChatId) {
|
||||
try { await aiSessionsApi.updateTriage(session.activeChatId, { evidence_items: updated }) } catch { /* best-effort */ }
|
||||
}
|
||||
}, [session.activeChatId, triageMeta.evidence_items])
|
||||
}, [session.activeChatId])
|
||||
|
||||
const handleStepComplete = useCallback((index: number) => {
|
||||
setCompletedSteps(prev => {
|
||||
|
||||
Reference in New Issue
Block a user