Skip to content

Commit 4a22c06

Browse files
authored
fix: legacy test settings urls not importing correctly (@fehmer) (monkeytypegame#6314)
Some people have old links with test settings we should support.
1 parent 660d856 commit 4a22c06

File tree

1 file changed

+42
-4
lines changed

1 file changed

+42
-4
lines changed

frontend/src/ts/utils/url-handler.ts

Lines changed: 42 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,20 @@ export function loadCustomThemeFromUrl(getOverride?: string): void {
135135
const TestSettingsSchema = z.tuple([
136136
ModeSchema.nullable(),
137137
Mode2Schema.nullable(),
138-
CustomText.CustomTextSettingsSchema.nullable(),
138+
CustomText.CustomTextSettingsSchema.partial({
139+
pipeDelimiter: true,
140+
limit: true,
141+
mode: true,
142+
})
143+
//legacy values
144+
.extend({
145+
isTimeRandom: z.boolean().optional(),
146+
isWordRandom: z.boolean().optional(),
147+
word: z.number().int().optional(),
148+
time: z.number().int().optional(),
149+
delimiter: z.string().optional(),
150+
})
151+
.nullable(),
139152
z.boolean().nullable(), //punctuation
140153
z.boolean().nullable(), //numbers
141154
z.string().nullable(), //language
@@ -186,9 +199,34 @@ export function loadTestSettingsFromUrl(getOverride?: string): void {
186199
if (de[2] !== null) {
187200
const customTextSettings = de[2];
188201
CustomText.setText(customTextSettings.text);
189-
CustomText.setLimitMode(customTextSettings.limit.mode);
190-
CustomText.setLimitValue(customTextSettings.limit.value);
191-
CustomText.setPipeDelimiter(customTextSettings.pipeDelimiter);
202+
203+
if (customTextSettings.limit !== undefined) {
204+
CustomText.setLimitMode(customTextSettings.limit.mode);
205+
CustomText.setLimitValue(customTextSettings.limit.value);
206+
}
207+
//convert legacy values
208+
else {
209+
if (customTextSettings.isWordRandom) {
210+
CustomText.setLimitMode("word");
211+
} else if (customTextSettings.isTimeRandom) {
212+
CustomText.setLimitMode("time");
213+
}
214+
if (customTextSettings.word !== undefined) {
215+
CustomText.setLimitValue(customTextSettings.word);
216+
} else if (customTextSettings.time !== undefined) {
217+
CustomText.setLimitValue(customTextSettings.time);
218+
}
219+
}
220+
221+
if (customTextSettings.pipeDelimiter) {
222+
CustomText.setPipeDelimiter(customTextSettings.pipeDelimiter);
223+
}
224+
//convert legacy values
225+
else if (customTextSettings.delimiter === "|") {
226+
CustomText.setPipeDelimiter(true);
227+
}
228+
229+
CustomText.setMode(customTextSettings.mode ?? "repeat");
192230

193231
applied["custom text settings"] = "";
194232
}

0 commit comments

Comments
 (0)