diff --git a/web/src/components/InviteModal.tsx b/web/src/components/InviteModal.tsx index ebb17fd..79664da 100644 --- a/web/src/components/InviteModal.tsx +++ b/web/src/components/InviteModal.tsx @@ -7,17 +7,18 @@ interface InviteModalProps { onClose: () => void; } -interface Invite { +interface InviteResult { code: string; - url: string; - expires_at: string | null; + server_name: string; max_uses: number | null; + use_count: number; + expires_at: string | null; } export function InviteModal({ serverId, serverName, onClose }: InviteModalProps) { const [expiresHours, setExpiresHours] = useState(24); const [maxUses, setMaxUses] = useState(''); - const [invite, setInvite] = useState(null); + const [invite, setInvite] = useState(null); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [copied, setCopied] = useState(false); @@ -32,7 +33,7 @@ export function InviteModal({ serverId, serverName, onClose }: InviteModalProps) if (maxUses !== '') { payload.max_uses = maxUses; } - const result = await api.post(`/servers/${serverId}/invites`, payload); + const result = await api.post(`/servers/${serverId}/invites`, payload); setInvite(result); } catch (err) { setError(err instanceof Error ? err.message : 'Failed to create invite'); @@ -41,9 +42,11 @@ export function InviteModal({ serverId, serverName, onClose }: InviteModalProps) } }; + const inviteUrl = invite ? `${window.location.origin}/invites/${invite.code}` : ''; + const copyLink = () => { - if (invite) { - navigator.clipboard.writeText(invite.url); + if (inviteUrl) { + navigator.clipboard.writeText(inviteUrl); setCopied(true); setTimeout(() => setCopied(false), 2000); } @@ -58,53 +61,51 @@ export function InviteModal({ serverId, serverName, onClose }: InviteModalProps) {!invite ? ( - <> -
-
- - -
-
- - setMaxUses(e.target.value === '' ? '' : Number(e.target.value))} - placeholder="unlimited" - min={1} - className="w-full px-2 py-1 bg-gb-bg-s text-gb-fg text-xs border-none outline-none" - /> -
- {error && ( -
{error}
- )} - +
) : (
Share this link: