UNPKG

testeranto

Version:

the AI powered BDD test framework for typescript projects

57 lines (49 loc) 1.53 kB
import { useState, useEffect, useCallback } from "react"; import { Process } from "./components/pure/ProcessManagerViewTypes"; export const useTerminalWebSocket = ( ws: WebSocket | null, selectedProcess: Process | null ) => { const [processLogs, setProcessLogs] = useState<string[]>([]); // Handle WebSocket messages for the selected process const handleMessage = useCallback( (event: MessageEvent) => { try { const data = JSON.parse(event.data); // Handle process data response if ( data.type === "processData" && selectedProcess && data.processId === selectedProcess.processId ) { setProcessLogs(data.logs || []); } // Handle new log messages else if ( (data.type === "processStdout" || data.type === "processStderr") && selectedProcess && data.processId === selectedProcess.processId ) { setProcessLogs((prev) => [...prev, data.data]); } } catch (error) { console.error("Error parsing WebSocket message:", error); } }, [selectedProcess] ); // Reset logs when selected process changes useEffect(() => { setProcessLogs(selectedProcess?.logs || []); }, [selectedProcess]); useEffect(() => { if (!ws) return; ws.addEventListener("message", handleMessage); return () => { ws.removeEventListener("message", handleMessage); }; }, [ws, handleMessage]); return { processLogs, }; };