'use client'; import { useRouter } from 'next/navigation'; import { useState } from 'react'; type EntryStatus = 'SIGNED_UP' | 'COMPLETED' | 'CANCELLED' | null; interface Props { opportunityId: string; initialStatus: EntryStatus; full: boolean; } export function SevaSignupButton({ opportunityId, initialStatus, full }: Props) { const router = useRouter(); const [status, setStatus] = useState(initialStatus); const [loading, setLoading] = useState(false); const act = async (action: 'signup' | 'cancel') => { setLoading(true); try { const res = await fetch(`/api/my/seva/${opportunityId}/${action}`, { method: 'POST' }); if (res.ok) { setStatus(action === 'signup' ? 'SIGNED_UP' : 'CANCELLED'); router.refresh(); } } finally { setLoading(false); } }; if (status === 'COMPLETED') { return ✓ Completed; } if (status === 'SIGNED_UP') { return ( ); } return ( ); }