diff --git a/frontend/src/hooks/useTicketContext.ts b/frontend/src/hooks/useTicketContext.ts new file mode 100644 index 00000000..523c8d71 --- /dev/null +++ b/frontend/src/hooks/useTicketContext.ts @@ -0,0 +1,40 @@ +import { useState, useEffect, useCallback } from 'react' +import { psaContextApi, type TicketContext } from '@/api/psaContext' + +interface UseTicketContextResult { + context: TicketContext | null + loading: boolean + error: string | null + refresh: () => void +} + +export function useTicketContext( + psaTicketId: string | null | undefined, + psaConnectionId: string | null | undefined +): UseTicketContextResult { + const [context, setContext] = useState(null) + const [loading, setLoading] = useState(false) + const [error, setError] = useState(null) + + const fetchContext = useCallback(async () => { + if (!psaTicketId || !psaConnectionId) return + + setLoading(true) + setError(null) + try { + const data = await psaContextApi.getTicketContext(psaTicketId) + setContext(data) + } catch (err) { + const message = err instanceof Error ? err.message : 'Failed to load ticket context' + setError(message) + } finally { + setLoading(false) + } + }, [psaTicketId, psaConnectionId]) + + useEffect(() => { + fetchContext() + }, [fetchContext]) + + return { context, loading, error, refresh: fetchContext } +}