fix(custom text): preserve state of the textarea when applying (sanidhyas3s) (#5186)

This commit is contained in:
Sanidhya Singh 2024-03-25 21:29:40 +05:30 committed by GitHub
parent 7c4435e14b
commit b0cf7bc4be
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 26 additions and 19 deletions

View file

@ -248,7 +248,7 @@ export async function setup(challengeName: string): Promise<boolean> {
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<boolean> {
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);

View file

@ -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, " ");

View file

@ -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 {

View file

@ -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);

View file

@ -1064,13 +1064,16 @@ export async function finish(difficultyFailed = false): Promise<void> {
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,

View file

@ -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);