import EasyModal, { useModal } from "ez-modal-react"; import { useState } from "react"; import Modal from "react-bootstrap/Modal"; import { Button } from "src/components"; import type { WgClient } from "src/api/backend/wireguard"; interface WireGuardClientEditModalProps { client: WgClient; } const WireGuardClientEditModal = EasyModal.create(({ client }: WireGuardClientEditModalProps) => { const modal = useModal(); const [name, setName] = useState(client.name); const [storageLimitMb, setStorageLimitMb] = useState(client.storageLimitMb ?? 500); const [txLimit, setTxLimit] = useState(client.txLimit ?? 0); const [rxLimit, setRxLimit] = useState(client.rxLimit ?? 0); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (name.trim()) { modal.resolve({ name: name.trim(), storage_limit_mb: storageLimitMb, tx_limit: txLimit, rx_limit: rxLimit }); modal.hide(); } }; const handleClose = () => { modal.resolve(null); modal.hide(); }; return (
{ e.stopPropagation(); handleSubmit(e); }}> Edit Client: {client.name}
setName(e.target.value)} required />

Limits & Quotas
setStorageLimitMb(Number(e.target.value))} min="0" required />
Maximum size of encrypted file storage per client. 0 = Unlimited.
setTxLimit(Number(e.target.value))} min="0" required />
0 = Unlimited.
setRxLimit(Number(e.target.value))} min="0" required />
0 = Unlimited.
); }); export default WireGuardClientEditModal;