import React, { useState } from 'react'; export default function InviteModal({ server, onClose, token }) { const [inviteCode, setInviteCode] = useState(''); const [loading, setLoading] = useState(false); const [copied, setCopied] = useState(false); const [error, setError] = useState(''); const generateInvite = async () => { setLoading(true); setError(''); try { const res = await fetch(`/api/invites/servers/${server.id}/invites`, { method: 'POST', headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' }, }); if (!res.ok) throw new Error('Failed to generate invite'); const data = await res.json(); setInviteCode(data.code); } catch (err) { setError(err.message); } finally { setLoading(false); } }; const inviteLink = inviteCode ? `${window.location.origin}/invite/${inviteCode}` : ''; const copyToClipboard = async () => { try { await navigator.clipboard.writeText(inviteLink); setCopied(true); setTimeout(() => setCopied(false), 2000); } catch { // Fallback const ta = document.createElement('textarea'); ta.value = inviteLink; document.body.appendChild(ta); ta.select(); document.execCommand('copy'); document.body.removeChild(ta); setCopied(true); setTimeout(() => setCopied(false), 2000); } }; return (
e.stopPropagation()}>

Invite Friends to {server?.name}

Share this link to let others join your server

{!inviteCode ? ( ) : (
)} {error &&

{error}

}
); }