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