// components/WindowVariables/WindowVariablesInitializer.tsx
"use client";

import { useEffect } from "react";
import { useDispatch } from "react-redux";
import { setInputs } from "../redux/slices/digitalInputsSlice";

const WindowVariablesInitializer = () => {
  const dispatch = useDispatch();

  useEffect(() => {
    const loadScriptsAndInitialize = async () => {
      try {
        // Beispielhafter Ladevorgang eines Skripts
        await loadScript("/CPLmockData/SERVICE/de.js");

        // Zugriff auf window-Variablen nach dem Laden der Skripte
        const winDeState = window.win_de_state || [];
        const winDeLabel = window.win_de_label || [];

        const initialInputs = winDeState.map(
          (status: number, index: number) => ({
            id: index + 1,
            label: winDeLabel[index] || `Eingang ${index + 1}`,
            status: status === 1,
          })
        );

        // Dispatch der Aktion zum Setzen der Inputs
        dispatch(setInputs(initialInputs));
      } catch (error) {
        console.error(
          "Fehler beim Laden der Skripte oder Initialisieren der Inputs:",
          error
        );
      }
    };

    loadScriptsAndInitialize();
  }, [dispatch]);

  return null;
};

export default WindowVariablesInitializer;

// Hilfsfunktion zum Laden eines Skripts
const loadScript = (src: string): Promise<void> => {
  return new Promise((resolve, reject) => {
    const script = document.createElement("script");
    script.src = src;
    script.async = true;
    script.onload = () => resolve();
    script.onerror = () =>
      reject(new Error(`Fehler beim Laden des Skripts: ${src}`));
    document.head.appendChild(script);
  });
};
