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 [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}
|
||||||
|
|||||||
Reference in New Issue
Block a user