import React from 'react'; import { useSearchParams } from 'react-router-dom'; import { Button } from '@/components/ui/button'; import { deletePhoto, featurePhoto, getEventPhotos, unfeaturePhoto } from '../api'; import { isAuthError } from '../auth/tokens'; export default function EventPhotosPage() { const [sp] = useSearchParams(); const id = Number(sp.get('id')); const [rows, setRows] = React.useState([]); const [loading, setLoading] = React.useState(true); const load = React.useCallback(async () => { setLoading(true); try { setRows(await getEventPhotos(id)); } catch (error) { if (!isAuthError(error)) { console.error(error); } } finally { setLoading(false); } }, [id]); React.useEffect(() => { load(); }, [load]); async function onFeature(photo: any) { try { await featurePhoto(photo.id); await load(); } catch (error) { if (!isAuthError(error)) { console.error(error); } } } async function onUnfeature(photo: any) { try { await unfeaturePhoto(photo.id); await load(); } catch (error) { if (!isAuthError(error)) { console.error(error); } } } async function onDelete(photo: any) { try { await deletePhoto(photo.id); await load(); } catch (error) { if (!isAuthError(error)) { console.error(error); } } } return (

Fotos moderieren

{loading &&
Lade ...
}
{rows.map((p) => (
{p.caption
?? {p.likes_count}
{p.is_featured ? ( ) : ( )}
))}
); }