diff --git a/frontend/src/pages/clients/ClientFormModal.tsx b/frontend/src/pages/clients/ClientFormModal.tsx index daab62e8a..0534a81c7 100644 --- a/frontend/src/pages/clients/ClientFormModal.tsx +++ b/frontend/src/pages/clients/ClientFormModal.tsx @@ -48,6 +48,7 @@ const CLIENT_IP_LOG_MODAL_Z_INDEX = CLIENT_FORM_MODAL_Z_INDEX + 1; interface ExternalLinkRow { kind: 'link' | 'subscription'; value: string; + remark: string; } interface ApiMsg { @@ -138,6 +139,7 @@ function toExternalLinkRows(links: ExternalLink[] | undefined): ExternalLinkRow[ return (links || []).map((l) => ({ kind: l.kind === 'subscription' ? 'subscription' : 'link', value: l.value || '', + remark: l.remark || '', })); } @@ -207,7 +209,7 @@ export default function ClientFormModal({ const limitIpNotice = getLimitIpNotice(fail2ban, t); function addExternalLinkRow(kind: 'link' | 'subscription') { - appendExternalLink({ kind, value: '' }); + appendExternalLink({ kind, value: '', remark: '' }); } useEffect(() => { @@ -547,7 +549,7 @@ export default function ClientFormModal({ } const externalLinks: ExternalLinkInput[] = values.externalLinks - .map((r) => ({ kind: r.kind, value: r.value.trim(), remark: '' })) + .map((r) => ({ kind: r.kind, value: r.value.trim(), remark: (r.remark || '').trim() })) .filter((r) => r.value !== ''); setSubmitting(true); @@ -917,6 +919,13 @@ export default function ClientFormModal({ placeholder="vless:// · vmess:// · trojan:// · ss:// · hysteria2:// · wireguard://" /> + + +