'use client'; import { useEffect, useState } from 'react'; import io from 'socket.io-client'; export default function HomePage() { let baseUrl = ""; if (typeof window !== "undefined") { baseUrl = `${window.location.protocol}//${window.location.hostname}`; } const backendUrl = `${baseUrl}:${process.env.NEXT_PUBLIC_API_BASE}`; const socket = io(`${backendUrl}`); const [time, setTime] = useState(new Date()); const [currentPlayer, setCurrentPlayer] = useState(null); const [gameStatus, setGameStatus] = useState<{ gameActive: boolean, players: any[] }>({ gameActive: false, players: [], }); useEffect(() => { socket.on('connect', () => { console.log('Connected to Socket.IO server'); }); socket.on('player_update', (data: { nextPlayer: string }) => { setCurrentPlayer(data.nextPlayer); fetchStatus(); }); return () => { socket.off('player_update'); }; }, []); const advanceTurn = async () => { await fetch(`${baseUrl}/next`); // triggers backend to emit event }; const fetchStatus = async () => { try { const res = await fetch(`${backendUrl}/status`); const data = await res.json(); setGameStatus(data); } catch (err) { console.error("Failed to fetch status", err); } }; if (gameStatus.gameActive) { return (

Game Turn Tracker

{currentPlayer ? (

🎯 Current Player: {currentPlayer.name} ({currentPlayer.group})

) : (

Waiting for turn to start…

)}
); } else { return (
{time.getTime()} This will show the time
); } }