// components/modales/handlers/handleSubmit.ts import handleReboot from "./handleReboot"; interface OriginalValues { name: string; ip: string; subnet: string; gateway: string; ntp1: string; ntp2: string; ntp3: string; ntpTimezone: string; active: boolean; } interface CurrentValues { name: string; ip: string; subnet: string; gateway: string; ntp1: string; ntp2: string; ntp3: string; ntpTimezone: string; active: boolean; } const handleSubmit = ( originalValues: OriginalValues, currentValues: CurrentValues ): void => { const changes: { [key: string]: string | boolean } = {}; let networkChanges = false; let newIp: string | null = null; // Überprüfe, welche Werte sich geändert haben if (currentValues.name !== originalValues.name) { changes.SNNA = currentValues.name; networkChanges = true; } if (currentValues.ip !== originalValues.ip) { changes.SEI01 = currentValues.ip; newIp = currentValues.ip; // Neue IP speichern networkChanges = true; } if (currentValues.subnet !== originalValues.subnet) { changes.SEI02 = currentValues.subnet; networkChanges = true; } if (currentValues.gateway !== originalValues.gateway) { changes.SEI03 = currentValues.gateway; networkChanges = true; } if (currentValues.ntp1 !== originalValues.ntp1) { changes.SNIP1 = currentValues.ntp1; } if (currentValues.ntp2 !== originalValues.ntp2) { changes.SNIP2 = currentValues.ntp2; } if (currentValues.ntp3 !== originalValues.ntp3) { changes.SNIP3 = currentValues.ntp3; } if (currentValues.ntpTimezone !== originalValues.ntpTimezone) { changes.SNTZ = currentValues.ntpTimezone; } if (currentValues.active !== originalValues.active) { changes.SNAC = currentValues.active; } if (Object.keys(changes).length > 0) { // URL für die Änderungen erstellen let url = `${window.location.origin}/CPL?${window.location.pathname}`; Object.keys(changes).forEach((paramKey) => { url += `&${paramKey}=${encodeURIComponent(String(changes[paramKey]))}`; }); console.log(url); fetch(url, { method: "GET" }) .then(() => { alert("Daten erfolgreich gesendet!"); if (networkChanges) { alert( "Hinweis: Die Änderungen in CPL-Name und den Netzwerkeinstellungen werden erst nach einem Neustart des CPL wirksam." ); handleReboot(newIp); // handleReboot mit neuer IP aufrufen } }) .catch((error) => { console.error("Fehler beim Senden der Daten:", error); alert("Fehler beim Senden der Daten."); }); } else { alert("Keine Änderungen vorgenommen."); } }; export default handleSubmit;