import React from 'react'; import { useNavigate, useSearchParams } from 'react-router-dom'; import { getEvent, getEventStats, toggleEvent, createInviteLink } from '../api'; import { Button } from '@/components/ui/button'; export default function EventDetailPage() { const [sp] = useSearchParams(); const id = Number(sp.get('id')); const nav = useNavigate(); const [ev, setEv] = React.useState(null); const [stats, setStats] = React.useState<{ total: number; featured: number; likes: number } | null>(null); const [invite, setInvite] = React.useState(null); async function load() { const e = await getEvent(id); setEv(e); setStats(await getEventStats(id)); } React.useEffect(() => { load(); }, [id]); async function onToggle() { const isActive = await toggleEvent(id); setEv((o: any) => ({ ...(o || {}), is_active: isActive })); } async function onInvite() { const link = await createInviteLink(id); setInvite(link); try { await navigator.clipboard.writeText(link); } catch {} } if (!ev) return
Lade…
; const joinLink = `${location.origin}/e/${ev.slug}`; const qrUrl = `/admin/qr?data=${encodeURIComponent(joinLink)}`; return (

Event: {renderName(ev.name)}

Slug: {ev.slug}
Datum: {ev.date ?? '-'}
Status: {ev.is_active ? 'Aktiv' : 'Inaktiv'}
{stats?.total ?? 0}
Fotos
{stats?.featured ?? 0}
Featured
{stats?.likes ?? 0}
Likes gesamt
Join-Link
QR
QR
{invite &&
Erzeugt und kopiert: {invite}
}
); } function renderName(name: any): string { if (typeof name === 'string') return name; if (name && (name.de || name.en)) return name.de || name.en; return JSON.stringify(name); }