import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { supabase } from "@/integrations/supabase/client"; import { useQuery } from "@tanstack/react-query"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table"; import { useToast } from "@/components/ui/use-toast"; interface HighScore { id: string; player_name: string; score: number; avg_words_per_round: number; created_at: string; } interface HighScoreBoardProps { currentScore: number; avgWordsPerRound: number; onClose: () => void; onPlayAgain: () => void; } export const HighScoreBoard = ({ currentScore, avgWordsPerRound, onClose, onPlayAgain, }: HighScoreBoardProps) => { const [playerName, setPlayerName] = useState(""); const [isSubmitting, setIsSubmitting] = useState(false); const { toast } = useToast(); const { data: highScores, refetch } = useQuery({ queryKey: ["highScores"], queryFn: async () => { const { data, error } = await supabase .from("high_scores") .select("*") .order("score", { ascending: false }) .order("avg_words_per_round", { ascending: true }); if (error) throw error; return data as HighScore[]; }, }); const handleSubmitScore = async () => { if (!playerName.trim()) { toast({ title: "Error", description: "Please enter your name", variant: "destructive", }); return; } setIsSubmitting(true); try { const { error } = await supabase.from("high_scores").insert({ player_name: playerName.trim(), score: currentScore, avg_words_per_round: avgWordsPerRound, }); if (error) throw error; toast({ title: "Success!", description: "Your score has been recorded", }); await refetch(); setPlayerName(""); } catch (error) { console.error("Error submitting score:", error); toast({ title: "Error", description: "Failed to submit score. Please try again.", variant: "destructive", }); } finally { setIsSubmitting(false); } }; return (
Your score: {currentScore} rounds {currentScore > 0 && ` (${avgWordsPerRound.toFixed(1)} words/round)`}