"use client"; import { useEffect } from "react"; import { useDispatch, useSelector } from "react-redux"; import { RootState } from "../../redux/store"; import { setDigitalOutputs } from "../../redux/slices/digitalOutputsSlice"; // Typ für digitale Ausgänge interface DigitalOutput { id: number; label: string; status: boolean; } export function useDigitalOutputs() { const dispatch = useDispatch(); const digitalOutputs = useSelector( (state: RootState) => state.digitalOutputs?.outputs ?? [] ); const isLoading = digitalOutputs.length === 0; useEffect(() => { const isDev = window.location.hostname === "localhost"; const script = document.createElement("script"); script.src = isDev ? "/CPLmockData/SERVICE/da.js" : "/CPL/SERVICE/da.js"; script.async = true; script.onload = () => { const da = window.win_da_state; const bezeichnungen = window.win_da_bezeichnung; if ( Array.isArray(da) && Array.isArray(bezeichnungen) && da.length === bezeichnungen.length ) { const outputs: DigitalOutput[] = da.map( (status: number, index: number) => ({ id: index + 1, label: bezeichnungen[index] || `Ausgang ${index + 1}`, status: status === 1, }) ); dispatch(setDigitalOutputs(outputs)); } else { console.error("Digitale Ausgänge konnten nicht geladen werden.", { da_state: da, da_bezeichnung: bezeichnungen, }); } }; script.onerror = () => { console.error("Fehler beim Laden der da.js-Datei."); }; document.body.appendChild(script); return () => { document.body.removeChild(script); }; }, [dispatch]); return { digitalOutputs, isLoading }; }