From 69961185e02c339ab0db5632e7f1e63470d42497 Mon Sep 17 00:00:00 2001 From: Miodec Date: Wed, 30 Aug 2023 12:41:56 +0200 Subject: [PATCH] fix(typing): limit word length using input length, not char index 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 --- frontend/src/ts/controllers/input-controller.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/frontend/src/ts/controllers/input-controller.ts b/frontend/src/ts/controllers/input-controller.ts index cad5fa08c..9ea13d1d7 100644 --- a/frontend/src/ts/controllers/input-controller.ts +++ b/frontend/src/ts/controllers/input-controller.ts @@ -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. @@ -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") {