import EasyModal, { useModal } from "ez-modal-react"; import { useState, useEffect } from "react"; import Modal from "react-bootstrap/Modal"; import { Button } from "src/components"; import type { WgInterface } from "src/api/backend/wireguard"; interface WireGuardClientModalProps { interfaces: WgInterface[]; defaultInterfaceId?: number; } const WireGuardClientModal = EasyModal.create(({ interfaces, defaultInterfaceId }: WireGuardClientModalProps) => { const modal = useModal(); const [name, setName] = useState(""); const [selectedInterfaceId, setSelectedInterfaceId] = useState(0); useEffect(() => { if (defaultInterfaceId) { setSelectedInterfaceId(defaultInterfaceId); } else if (interfaces && interfaces.length > 0) { setSelectedInterfaceId(interfaces[0].id); } }, [interfaces, defaultInterfaceId]); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (name.trim() && selectedInterfaceId) { modal.resolve({ name: name.trim(), interface_id: selectedInterfaceId }); modal.hide(); } }; const handleClose = () => { modal.resolve(null); modal.hide(); }; return (
{ e.stopPropagation(); handleSubmit(e); }}> New WireGuard Client
setName(e.target.value)} autoFocus required />
A friendly name to identify this client.
{interfaces && interfaces.length > 0 && (
Select which server this client will connect to.
)}
); }); export default WireGuardClientModal;