'use client'; // Mark as a Client Component import { useState, useEffect } from 'react'; import { useSession } from 'next-auth/react'; import { useRouter } from 'next/navigation'; import Link from 'next/link'; import { joinTeam } from '../../actions/auth'; export default function TeamSelection() { const { data: session, status } = useSession(); const [teamCode, setTeamCode] = useState(''); const [error, setError] = useState(''); const [isLoading, setIsLoading] = useState(false); const router = useRouter(); // Use useEffect for navigation instead of doing it in render useEffect(() => { // Redirect if not authenticated if (status === 'unauthenticated') { router.push('/login'); } // Redirect if user is admin if (status === 'authenticated' && session?.user?.role === 'admin') { router.push('/admin'); } }, [status, session, router]); const handleJoinTeam = async (e) => { e.preventDefault(); setIsLoading(true); setError(''); try { const result = await joinTeam(session.user.id, teamCode); if (result.success) { router.push(`/team/${result.teamId}`); } else { setError(result.error || 'Team not found'); } } catch (err) { setError('An unexpected error occurred'); console.error(err); } finally { setIsLoading(false); } }; if (status === 'loading') { return
{error}
}