import { useState, useEffect, useRef } from 'react' import { createWebSocket } from '../utils/api.js' /** * Custom hook for WebSocket connection * @param {string} jobId - The job ID to connect to * @returns {{jobData: object|null, isConnected: boolean, error: string|null}} */ export function useWebSocket(jobId) { const [jobData, setJobData] = useState(null) const [isConnected, setIsConnected] = useState(false) const [error, setError] = useState(null) const wsRef = useRef(null) useEffect(() => { if (!jobId) return setError(null) setIsConnected(false) wsRef.current = createWebSocket( jobId, (data) => { setJobData(data) setIsConnected(true) setError(null) }, () => { setIsConnected(false) // Don't set error on normal close } ) return () => { if (wsRef.current) { wsRef.current.close() } } }, [jobId]) return { jobData, isConnected, error, } }