import { IconDeviceFloppy, IconX, } from "@tabler/icons-react"; import { useEffect } from "react"; import { useForm } from "react-hook-form"; interface WireGuardServerModalProps { wgInterface?: any; onHide?: () => void; resolve?: (data: any) => void; } const WG_DEFAULT_MTU = 1420; const WG_DEFAULT_DNS = "1.1.1.1, 8.8.8.8"; function WireGuardServerModal({ wgInterface, onHide, resolve }: WireGuardServerModalProps) { const { register, handleSubmit, setValue, formState: { errors }, } = useForm({ defaultValues: { host: "", dns: WG_DEFAULT_DNS, mtu: WG_DEFAULT_MTU, isolate_clients: false, }, }); useEffect(() => { if (wgInterface) { setValue("host", wgInterface.host || ""); setValue("dns", wgInterface.dns || WG_DEFAULT_DNS); setValue("mtu", wgInterface.mtu || WG_DEFAULT_MTU); setValue("isolate_clients", wgInterface.isolateClients || false); } }, [wgInterface, setValue]); const onSubmit = (data: any) => { // Convert number types appropriately const submitData = { ...data, mtu: Number(data.mtu) || WG_DEFAULT_MTU, }; if (resolve) { resolve(submitData); } if (onHide) { onHide(); } }; return (