Skip to content

Commit

Permalink
fix(typing): limit word length using input length, not char index
Browse files Browse the repository at this point in the history
This fixes an issue where long korean words would not be finishable.
Char index includes compose characters, meaning the word was stopped too early.

This will very likely close #4389
  • Loading branch information
Miodec committed Aug 31, 2023
1 parent 17c5eec commit 6996118
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion frontend/src/ts/controllers/input-controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ const wordsInput = document.getElementById("wordsInput") as HTMLInputElement;
const koInputVisual = document.getElementById("koInputVisual") as HTMLElement;

function setWordsInput(value: string): void {
console.log("setting words input to", value);

// Only change #wordsInput if it's not already the wanted value
// Avoids Safari triggering unneeded events, causing issues with
// dead keys.
Expand Down Expand Up @@ -615,12 +617,18 @@ function handleChar(
}

//max length of the input is 20 unless in zen mode then its 30
console.log("char index", charIndex);
console.log("res word len", resultingWord.length);
console.log("cur word len", TestWords.words.getCurrent().length);

if (
(Config.mode === "zen" && charIndex < 30) ||
(Config.mode !== "zen" &&
charIndex < TestWords.words.getCurrent().length + 20)
resultingWord.length < TestWords.words.getCurrent().length + 20)
) {
TestInput.input.current = resultingWord;
} else {
console.error("Hitting word limit");
}

if (!thisCharCorrect && Config.difficulty === "master") {
Expand Down

0 comments on commit 6996118

Please sign in to comment.