Prevent multiple guess submissions per attempt

This commit is contained in:
Hördle Bot
2025-11-22 19:35:12 +01:00
parent 5d5a75a735
commit 328c8fe98a

View File

@@ -30,6 +30,7 @@ export default function Game({ dailyPuzzle, genre = null, isSpecial = false, max
const [hasLost, setHasLost] = useState(false); const [hasLost, setHasLost] = useState(false);
const [shareText, setShareText] = useState('Share Result'); const [shareText, setShareText] = useState('Share Result');
const [lastAction, setLastAction] = useState<'GUESS' | 'SKIP' | null>(null); const [lastAction, setLastAction] = useState<'GUESS' | 'SKIP' | null>(null);
const [isProcessingGuess, setIsProcessingGuess] = useState(false);
useEffect(() => { useEffect(() => {
if (gameState && dailyPuzzle) { if (gameState && dailyPuzzle) {
@@ -53,6 +54,9 @@ export default function Game({ dailyPuzzle, genre = null, isSpecial = false, max
if (!gameState) return <div>Loading state...</div>; if (!gameState) return <div>Loading state...</div>;
const handleGuess = (song: any) => { const handleGuess = (song: any) => {
if (isProcessingGuess) return; // Prevent multiple guesses
setIsProcessingGuess(true);
setLastAction('GUESS'); setLastAction('GUESS');
if (song.id === dailyPuzzle.songId) { if (song.id === dailyPuzzle.songId) {
addGuess(song.title, true); addGuess(song.title, true);
@@ -66,6 +70,8 @@ export default function Game({ dailyPuzzle, genre = null, isSpecial = false, max
sendGotifyNotification(maxAttempts, 'lost', dailyPuzzle.id, genre); sendGotifyNotification(maxAttempts, 'lost', dailyPuzzle.id, genre);
} }
} }
// Reset after a short delay to allow UI update
setTimeout(() => setIsProcessingGuess(false), 500);
}; };
const handleSkip = () => { const handleSkip = () => {
@@ -175,7 +181,7 @@ export default function Game({ dailyPuzzle, genre = null, isSpecial = false, max
{!hasWon && !hasLost && ( {!hasWon && !hasLost && (
<> <>
<GuessInput onGuess={handleGuess} disabled={false} /> <GuessInput onGuess={handleGuess} disabled={isProcessingGuess} />
{gameState.guesses.length < 6 ? ( {gameState.guesses.length < 6 ? (
<button <button
onClick={handleSkip} onClick={handleSkip}