Replace useState-based useHub hook and separate useActiveAgent store with a single useHubStore (Zustand). This fixes the bug where HubSidebar and Chat held independent state copies, causing stale data and duplicate 30s polling. Agent create/delete logic now lives in the store with automatic activeAgentId management. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
19 lines
538 B
TypeScript
19 lines
538 B
TypeScript
"use client"
|
|
|
|
import { useEffect } from "react"
|
|
import { useHubStore } from "./use-hub-store"
|
|
|
|
export function useHubInit() {
|
|
const fetchHub = useHubStore((s) => s.fetchHub)
|
|
const status = useHubStore((s) => s.status)
|
|
const fetchAgents = useHubStore((s) => s.fetchAgents)
|
|
|
|
useEffect(() => { fetchHub() }, [fetchHub])
|
|
useEffect(() => {
|
|
if (status === "connected") fetchAgents()
|
|
}, [status, fetchAgents])
|
|
useEffect(() => {
|
|
const id = setInterval(fetchHub, 30_000)
|
|
return () => clearInterval(id)
|
|
}, [fetchHub])
|
|
}
|