|
@@ -7,7 +7,7 @@ interface Screen2GameProps {
|
|
|
guesses: GuessEntry[];
|
|
guesses: GuessEntry[];
|
|
|
letterColors: Record<string, string | undefined>;
|
|
letterColors: Record<string, string | undefined>;
|
|
|
message: string | null;
|
|
message: string | null;
|
|
|
- onGuess: (guess: string) => Promise<void>;
|
|
|
|
|
|
|
+ onGuess: (guess: string) => Promise<boolean>;
|
|
|
onDismissMessage: () => void;
|
|
onDismissMessage: () => void;
|
|
|
gameOver: boolean;
|
|
gameOver: boolean;
|
|
|
}
|
|
}
|
|
@@ -24,8 +24,10 @@ export function Screen2Game({ guesses, letterColors, message, onGuess, onDismiss
|
|
|
|
|
|
|
|
const submitCurrent = useCallback(async () => {
|
|
const submitCurrent = useCallback(async () => {
|
|
|
if (currentGuess.length !== 5 || gameOver) return;
|
|
if (currentGuess.length !== 5 || gameOver) return;
|
|
|
- await onGuess(currentGuess);
|
|
|
|
|
- setCurrentGuess(''); // clear on valid submission
|
|
|
|
|
|
|
+ const accepted = await onGuess(currentGuess);
|
|
|
|
|
+ if (accepted) {
|
|
|
|
|
+ setCurrentGuess(''); // only clear when guess was valid
|
|
|
|
|
+ }
|
|
|
}, [currentGuess, onGuess, gameOver]);
|
|
}, [currentGuess, onGuess, gameOver]);
|
|
|
|
|
|
|
|
// Physical keyboard handler
|
|
// Physical keyboard handler
|
|
@@ -38,12 +40,7 @@ export function Screen2Game({ guesses, letterColors, message, onGuess, onDismiss
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
if (e.key === 'Backspace') {
|
|
if (e.key === 'Backspace') {
|
|
|
- // If there's a message (invalid word), clear the whole row
|
|
|
|
|
- if (message) {
|
|
|
|
|
- onDismissMessage();
|
|
|
|
|
- setCurrentGuess('');
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if (message) onDismissMessage();
|
|
|
setCurrentGuess((prev) => prev.slice(0, -1));
|
|
setCurrentGuess((prev) => prev.slice(0, -1));
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
@@ -63,11 +60,7 @@ export function Screen2Game({ guesses, letterColors, message, onGuess, onDismiss
|
|
|
if (key === 'Enter') {
|
|
if (key === 'Enter') {
|
|
|
submitCurrent();
|
|
submitCurrent();
|
|
|
} else if (key === 'Backspace') {
|
|
} else if (key === 'Backspace') {
|
|
|
- if (message) {
|
|
|
|
|
- onDismissMessage();
|
|
|
|
|
- setCurrentGuess('');
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if (message) onDismissMessage();
|
|
|
setCurrentGuess((prev) => prev.slice(0, -1));
|
|
setCurrentGuess((prev) => prev.slice(0, -1));
|
|
|
} else if (currentGuess.length < 5) {
|
|
} else if (currentGuess.length < 5) {
|
|
|
setCurrentGuess((prev) => prev + key.toLowerCase());
|
|
setCurrentGuess((prev) => prev + key.toLowerCase());
|