"use client"; import { useState } from "react"; import { useDispatch, useSelector } from "react-redux"; import type { RootState } from "../../../../../redux/store"; import handleSave from "../handlers/handleSave"; import handleDisplayEinschalten from "../handlers/handleDisplayEinschalten"; import firmwareUpdate from "../handlers/firmwareUpdate"; import { useAdminAuth } from "../../../settingsPageComponents/hooks/useAdminAuth"; interface Props { slot: number; showModal: boolean; onClose?: () => void; onModulNameChange?: (id: string) => void; } const memoryIntervalOptions = [ { value: 0, label: "Kein" }, { value: 1, label: "1 Minute" }, { value: 5, label: "5 Minuten" }, { value: 10, label: "10 Minuten" }, { value: 15, label: "15 Minuten" }, { value: 30, label: "30 Minuten" }, { value: 60, label: "60 Minuten" }, { value: 360, label: "6 Stunden" }, { value: 720, label: "12 Stunden" }, ]; export default function KueEinstellung({ slot, onClose = () => {}, onModulNameChange, }: Props) { const dispatch = useDispatch(); const { kueID, kueName, kueLimit1, kueDelay1, kueLimit2Low, kueLoopInterval, memoryInterval, } = useSelector((state: RootState) => state.kueDataSlice); const { isAdminLoggedIn } = useAdminAuth(true); const formCacheKey = `slot_${slot}`; if (typeof window !== "undefined") { window.__kueCache = window.__kueCache || {}; } const cached = typeof window !== "undefined" ? window.__kueCache?.[formCacheKey] : null; const [formData, setFormData] = useState(() => { if (cached) return cached; return { kueID: kueID[slot] || "", kueName: kueName[slot] || "", limit1: kueLimit1[slot]?.toString() ?? "", delay1: kueDelay1[slot]?.toString() ?? "", limit2Low: kueLimit2Low[slot]?.toString() ?? "", loopInterval: kueLoopInterval[slot]?.toString() ?? "", memoryInterval: memoryInterval[slot]?.toString() ?? "", }; }); const handleChange = (key: keyof typeof formData, value: string) => { const updated = { ...formData, [key]: value }; setFormData(updated); if (typeof window !== "undefined") { window.__kueCache![formCacheKey] = updated; } }; const handleSaveWrapper = async () => { const updatedKueID = [...kueID]; //updatedKueID[slot] = formData.kueID; /* if (Object.isFrozen(kueID)) { console.warn("kueID ist readonly!"); } */ const updatedKueName = [...kueName]; updatedKueName[slot] = formData.kueName; const updatedLimit1 = [...kueLimit1]; updatedLimit1[slot] = Number(formData.limit1); const updatedDelay1 = [...kueDelay1]; updatedDelay1[slot] = Number(formData.delay1); const updatedLimit2Low = [...kueLimit2Low]; updatedLimit2Low[slot] = Number(formData.limit2Low); const updatedLoopInterval = [...kueLoopInterval]; updatedLoopInterval[slot] = Number(formData.loopInterval); const updatedMemoryInterval = [...memoryInterval]; updatedMemoryInterval[slot] = Number(formData.memoryInterval); const newData = { kueID: updatedKueID[slot], kueName: updatedKueName[slot], limit1: updatedLimit1[slot].toString(), delay1: updatedDelay1[slot].toString(), limit2Low: updatedLimit2Low[slot].toString(), loopInterval: updatedLoopInterval[slot].toString(), memoryInterval: updatedMemoryInterval[slot].toString(), }; setFormData(newData); if (typeof window !== "undefined") { window.__kueCache![`slot_${slot}`] = newData; } // 🔧 handleSave aufrufen mit allen Daten await handleSave({ slot, ids: kueID, kueName: updatedKueName, isolationsgrenzwerte: updatedLimit1, verzoegerung: updatedDelay1, untereSchleifenGrenzwerte: updatedLimit2Low, obereSchleifenGrenzwerte: updatedLimit2Low, // ggf. anpassen, falls du später High-Werte brauchst schleifenintervall: updatedLoopInterval, speicherintervall: updatedMemoryInterval, originalValues: { kueID, kueName, isolationsgrenzwerte: kueLimit1, verzoegerung: kueDelay1, untereSchleifenGrenzwerte: kueLimit2Low, obereSchleifenGrenzwerte: kueLimit2Low, schleifenintervall: kueLoopInterval, speicherintervall: memoryInterval, }, dispatch, onModulNameChange: onModulNameChange ?? (() => {}), onClose, }); }; return (