import { Head, router } from '@inertiajs/react';
import axios from 'axios';
import { Smartphone, Users } from 'lucide-react';
import { useEffect } from 'react';
import StudentLayout from '@/layouts/StudentLayout';

interface Props {
    session: {
        uuid: string;
        status: string;
        game: { title: string; subject?: string };
        team: { name: string; color: string; members: Array<{ id: number; name: string; squad_number: number }> };
    };
}

export default function Wait({ session }: Props) {
    useEffect(() => {
        const heartbeat = window.setInterval(() => {
            void axios.post(route('team-quest.heartbeat', session.uuid));
        }, 15000);
        const statePoll = window.setInterval(async () => {
            const response = await axios.get(route('team-quest.state', session.uuid));
            if (response.data.session.status !== 'waiting') {
                router.get(route('team-quest.play', session.uuid));
            }
        }, 2000);
        return () => {
            window.clearInterval(heartbeat);
            window.clearInterval(statePoll);
        };
    }, [session.uuid]);

    return (
        <>
            <Head title={`Menunggu - ${session.team.name}`} />
            <div className="mx-auto max-w-xl space-y-6 py-8 text-center">
                <div className="mx-auto flex h-20 w-20 items-center justify-center rounded-3xl bg-emerald-500/15 text-emerald-300"><Smartphone className="h-10 w-10" /></div>
                <div>
                    <p className="text-sm uppercase tracking-widest text-emerald-300">Perangkat Terhubung</p>
                    <h1 className="mt-2 text-3xl font-black">{session.team.name}</h1>
                    <p className="mt-2 text-text-muted">{session.game.title} · {session.game.subject}</p>
                </div>
                <div className="glass rounded-2xl border border-border/40 p-5 text-left">
                    <div className="mb-4 flex items-center gap-2 font-bold"><Users className="h-5 w-5" /> Anggota Kelompok</div>
                    <div className="grid gap-2 sm:grid-cols-2">
                        {session.team.members.map((member) => (
                            <div key={member.id} className="rounded-xl bg-surface-hover/40 px-3 py-2">
                                <div className="font-medium">{member.name}</div>
                                <div className="text-xs text-text-muted">Mini-squad {member.squad_number}</div>
                            </div>
                        ))}
                    </div>
                </div>
                <p className="animate-pulse text-sm text-text-muted">Menunggu guru memulai Team Quest...</p>
            </div>
        </>
    );
}

Wait.layout = (page: React.ReactNode) => <>{page}</>;

Wait.layout = (page: any) => <StudentLayout title="Team Quest">{page}</StudentLayout>;
