feat(ui): add countdown timer to next daily puzzle

This commit is contained in:
Hördle Bot
2025-11-22 23:52:13 +01:00
parent fdc5594d69
commit 291fc2037c

View File

@@ -31,6 +31,25 @@ export default function Game({ dailyPuzzle, genre = null, isSpecial = false, max
const [shareText, setShareText] = useState('🔗 Share'); const [shareText, setShareText] = useState('🔗 Share');
const [lastAction, setLastAction] = useState<'GUESS' | 'SKIP' | null>(null); const [lastAction, setLastAction] = useState<'GUESS' | 'SKIP' | null>(null);
const [isProcessingGuess, setIsProcessingGuess] = useState(false); const [isProcessingGuess, setIsProcessingGuess] = useState(false);
const [timeUntilNext, setTimeUntilNext] = useState('');
useEffect(() => {
const updateCountdown = () => {
const now = new Date();
const tomorrow = new Date(now);
tomorrow.setHours(24, 0, 0, 0);
const diff = tomorrow.getTime() - now.getTime();
const hours = Math.floor(diff / (1000 * 60 * 60));
const minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));
setTimeUntilNext(`${hours}h ${minutes}m`);
};
updateCountdown();
const interval = setInterval(updateCountdown, 1000); // Update every second to be accurate
return () => clearInterval(interval);
}, []);
useEffect(() => { useEffect(() => {
if (gameState && dailyPuzzle) { if (gameState && dailyPuzzle) {
@@ -160,6 +179,9 @@ export default function Game({ dailyPuzzle, genre = null, isSpecial = false, max
<div className="container"> <div className="container">
<header className="header"> <header className="header">
<h1 className="title">Hördle #{dailyPuzzle.id}{genre ? ` / ${genre}` : ''}</h1> <h1 className="title">Hördle #{dailyPuzzle.id}{genre ? ` / ${genre}` : ''}</h1>
<div style={{ fontSize: '0.9rem', color: '#666', marginTop: '-0.5rem', marginBottom: '1rem' }}>
Next puzzle in: {timeUntilNext}
</div>
</header> </header>
<main className="game-board"> <main className="game-board">