import React, { useState, useEffect } from 'react' import Board from './components/Board' import Score from './components/Score' import AudioPlayer from './components/AudioPlayer' import FinalJeopardy from './components/FinalJeopardy' // Use relative URLs in production, localhost in development const API_URL = import.meta.env.DEV ? 'http://localhost:3001' : '' export default function App() { const [data, setData] = useState(null) const [showId, setShowId] = useState(null) const [showNumber, setShowNumber] = useState(null) const [approxYear, setApproxYear] = useState(null) const [round, setRound] = useState('jeopardy') const [score, setScore] = useState(0) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) const [finalData, setFinalData] = useState(null) const [showFinal, setShowFinal] = useState(false) const loadRandomGame = async () => { setLoading(true) setError(null) try { // Server will always scrape a new game (deletes old ones automatically) const response = await fetch(`${API_URL}/api/random-game`) if (!response.ok) throw new Error('Failed to load game') const gameData = await response.json() setData({ categories: gameData.categories }) setShowId(gameData.showId) setShowNumber(gameData.showNumber) setApproxYear(gameData.approxYear) setRound('jeopardy') setScore(0) } catch (err) { console.error('Error loading game:', err) setError(err.message) } finally { setLoading(false) } } const loadDoubleJeopardy = async () => { if (!showId) return setLoading(true) try { const response = await fetch(`${API_URL}/api/game/${showId}/double`) if (!response.ok) throw new Error('Failed to load double jeopardy') const doubleData = await response.json() setData({ categories: doubleData.categories }) setRound('double') } catch (err) { console.error('Error loading double jeopardy:', err) setError(err.message) } finally { setLoading(false) } } const loadFinalJeopardy = async () => { if (!showId) return setLoading(true) try { const response = await fetch(`${API_URL}/api/game/${showId}/final`) if (!response.ok) throw new Error('Failed to load final jeopardy') const finalData = await response.json() setFinalData(finalData) setShowFinal(true) } catch (err) { console.error('Error loading final jeopardy:', err) setError(err.message) } finally { setLoading(false) } } const handleFinalComplete = () => { setShowFinal(false) setFinalData(null) loadRandomGame() } useEffect(() => { loadRandomGame() }, []) if (loading) return
Game #{showNumber} from {approxYear}
)}