import { useState, useEffect } from 'react'; import { gameInfo } from '../domain/GGSHService'; import { useGameId } from '../domain/gameStore'; export default () => { const gameId = useGameId(); const [scores, setScores] = useState(null); useEffect(() => { // define how to fetch scores const fetchInfo = async () => { const { players } = await gameInfo(); // TODO would be nice to only setScores on a change - maybe have back-end provide timestamp? setScores(players); }; // when the hook triggers, fetch the game info fetchInfo(); // and do it again every 5 seconds after const interval = setInterval(() => fetchInfo(), 5000); // and return a clean-up callback return () => { clearInterval(interval) }; }, [gameId]); return scores; }