'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'; export default function TeamPage({ params }) { const { data: session, status } = useSession(); const [team, setTeam] = useState(null); const [teamMembers, setTeamMembers] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(''); const router = useRouter(); const { teamId } = params; // Fetch team data useEffect(() => { async function fetchTeamData() { try { if (!teamId) { throw new Error('No team ID provided'); } // Fetch team details const teamResponse = await fetch(`/api/teams/${teamId}`); if (!teamResponse.ok) { const errorData = await teamResponse.json(); throw new Error(errorData.error || 'Failed to fetch team data'); } const teamData = await teamResponse.json(); setTeam(teamData); // Fetch team members const membersResponse = await fetch(`/api/teams/${teamId}/members`); if (!membersResponse.ok) { // Don't throw here, just log the error console.error('Failed to fetch team members'); } else { const membersData = await membersResponse.json(); setTeamMembers(membersData); } } catch (err) { console.error('Team page error:', err); setError(err.message); } finally { setLoading(false); } } if (status === 'authenticated' && teamId) { fetchTeamData(); } }, [teamId, status]); // Handle authentication useEffect(() => { if (status === 'unauthenticated') { router.push('/login'); } }, [status, router]); if (status === 'loading' || loading) { return
Loading...
; } if (error) { return
Error: {error}
; } if (!team) { return
Team not found
; } return (
←
Team Details

{team.name}

Team Code

{team.code}

Share this code with others to join your team

Team Members

{teamMembers.length === 0 ? (

No members have joined yet

) : (
    {teamMembers.map(member => (
  • {member.username}
  • ))}
)}
Start Hunt
🏠
📊
🏆
👤
); }