From b0cf7bc4be865e1474ce97fc59a601a4c224f710 Mon Sep 17 00:00:00 2001 From: Sanidhya Singh Date: Mon, 25 Mar 2024 21:29:40 +0530 Subject: [PATCH] fix(custom text): preserve state of the textarea when applying (sanidhyas3s) (#5186) --- .../src/ts/controllers/challenge-controller.ts | 4 ++-- frontend/src/ts/popups/custom-text-popup.ts | 14 +++----------- frontend/src/ts/test/custom-text.ts | 12 ++++++++++-- frontend/src/ts/test/practise-words.ts | 5 ++++- frontend/src/ts/test/test-logic.ts | 7 +++++-- frontend/src/ts/utils/url-handler.ts | 3 ++- 6 files changed, 26 insertions(+), 19 deletions(-) diff --git a/frontend/src/ts/controllers/challenge-controller.ts b/frontend/src/ts/controllers/challenge-controller.ts index 1304cc6eb..9bd4a833e 100644 --- a/frontend/src/ts/controllers/challenge-controller.ts +++ b/frontend/src/ts/controllers/challenge-controller.ts @@ -248,7 +248,7 @@ export async function setup(challengeName: string): Promise { UpdateConfig.setDifficulty("normal", true); } else if (challenge.type === "customText") { CustomText.setDelimiter(" "); - CustomText.setPopupTextareaState(challenge.parameters[0] as string); + CustomText.setPopupTextareaState(challenge.parameters[0] as string, true); CustomText.setText((challenge.parameters[0] as string).split(" ")); CustomText.setIsTimeRandom(false); CustomText.setIsSectionRandom(false); @@ -269,7 +269,7 @@ export async function setup(challengeName: string): Promise { text = text.replace(/[\n\r\t ]/gm, " "); text = text.replace(/ +/gm, " "); CustomText.setDelimiter(" "); - CustomText.setPopupTextareaState(text); + CustomText.setPopupTextareaState(text, true); CustomText.setText(text.split(" ")); CustomText.setIsWordRandom(false); CustomText.setIsSectionRandom(false); diff --git a/frontend/src/ts/popups/custom-text-popup.ts b/frontend/src/ts/popups/custom-text-popup.ts index f795ff3e4..ac260e34a 100644 --- a/frontend/src/ts/popups/custom-text-popup.ts +++ b/frontend/src/ts/popups/custom-text-popup.ts @@ -142,17 +142,7 @@ function hide(options = {} as HideOptions): void { options.noAnim ? 0 : 125, () => { if (options.resetState) { - const newText = CustomText.text.map((word) => { - if (word.endsWith("|")) { - word = word.slice(0, -1); - } - return word; - }); - - CustomText.setPopupTextareaState( - // CustomText.text.join(CustomText.delimiter) - newText.join(CustomText.delimiter) - ); + CustomText.setPopupTextareaStateToSaved(); } $(wrapper).addClass("hidden"); @@ -236,6 +226,8 @@ function apply(): void { return; } + CustomText.setPopupTextareaState(text, true); + text = text.trim(); // text = text.replace(/[\r]/gm, " "); diff --git a/frontend/src/ts/test/custom-text.ts b/frontend/src/ts/test/custom-text.ts index 2bff9b861..c4591904a 100644 --- a/frontend/src/ts/test/custom-text.ts +++ b/frontend/src/ts/test/custom-text.ts @@ -16,10 +16,18 @@ export let word = -1; export let time = -1; export let section = -1; export let delimiter = " "; -export let popupTextareaState = "The quick brown fox jumps over the lazy dog"; +export let popupTextareaState = text.join(" "); +export let savedPopupTextareaState = popupTextareaState; -export function setPopupTextareaState(value: string): void { +export function setPopupTextareaStateToSaved(): void { + popupTextareaState = savedPopupTextareaState; +} + +export function setPopupTextareaState(value: string, save = false): void { popupTextareaState = value; + if (save) { + savedPopupTextareaState = value; + } } export function setText(txt: string[]): void { diff --git a/frontend/src/ts/test/practise-words.ts b/frontend/src/ts/test/practise-words.ts index 81c5a8890..2e21d7f5f 100644 --- a/frontend/src/ts/test/practise-words.ts +++ b/frontend/src/ts/test/practise-words.ts @@ -116,7 +116,10 @@ export function init(missed: boolean, slow: boolean): boolean { } UpdateConfig.setMode("custom", true); - CustomText.setPopupTextareaState(newCustomText.join(CustomText.delimiter)); + CustomText.setPopupTextareaState( + newCustomText.join(CustomText.delimiter), + true + ); CustomText.setText(newCustomText); CustomText.setIsWordRandom(true); CustomText.setIsTimeRandom(false); diff --git a/frontend/src/ts/test/test-logic.ts b/frontend/src/ts/test/test-logic.ts index 67395dc32..6417ebffe 100644 --- a/frontend/src/ts/test/test-logic.ts +++ b/frontend/src/ts/test/test-logic.ts @@ -1064,13 +1064,16 @@ export async function finish(difficultyFailed = false): Promise { let newText = CustomText.getCustomText(customTextName, true); newText = newText.slice(newProgress); - CustomText.setPopupTextareaState(newText.join(CustomText.delimiter)); + CustomText.setPopupTextareaState( + newText.join(CustomText.delimiter), + true + ); CustomText.setText(newText); } else { // They finished the test CustomText.setCustomTextLongProgress(customTextName, 0); const text = CustomText.getCustomText(customTextName, true); - CustomText.setPopupTextareaState(text.join(CustomText.delimiter)); + CustomText.setPopupTextareaState(text.join(CustomText.delimiter), true); CustomText.setText(text); Notifications.add("Long custom text completed", 1, { duration: 5, diff --git a/frontend/src/ts/utils/url-handler.ts b/frontend/src/ts/utils/url-handler.ts index 66a0a4ced..b66e5a98a 100644 --- a/frontend/src/ts/utils/url-handler.ts +++ b/frontend/src/ts/utils/url-handler.ts @@ -147,7 +147,8 @@ export function loadTestSettingsFromUrl(getOverride?: string): void { if (de[2] !== null) { const customTextSettings = de[2]; CustomText.setPopupTextareaState( - customTextSettings.text.join(customTextSettings.delimiter) + customTextSettings.text.join(customTextSettings.delimiter), + true ); CustomText.setText(customTextSettings.text); CustomText.setIsTimeRandom(customTextSettings.isTimeRandom);