mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2024-09-20 23:36:37 +08:00
updated mode2 type
This commit is contained in:
parent
cc95aff900
commit
17ddb87abb
|
@ -618,7 +618,7 @@ export async function saveLocalPB<M extends MonkeyTypes.Mode>(
|
|||
};
|
||||
|
||||
dbSnapshot.personalBests[mode][mode2] ??=
|
||||
[] as unknown as MonkeyTypes.PersonalBests[M][keyof MonkeyTypes.PersonalBests[M]];
|
||||
[] as unknown as MonkeyTypes.PersonalBests[M][MonkeyTypes.Mode2<M>];
|
||||
|
||||
(
|
||||
dbSnapshot.personalBests[mode][
|
||||
|
@ -697,7 +697,7 @@ export async function getLocalTagPB<M extends MonkeyTypes.Mode>(
|
|||
};
|
||||
|
||||
filteredtag.personalBests[mode][mode2] ??=
|
||||
[] as unknown as MonkeyTypes.PersonalBests[M][keyof MonkeyTypes.PersonalBests[M]];
|
||||
[] as unknown as MonkeyTypes.PersonalBests[M][MonkeyTypes.Mode2<M>];
|
||||
|
||||
const personalBests = (filteredtag.personalBests[mode][mode2] ??
|
||||
[]) as MonkeyTypes.PersonalBest[];
|
||||
|
@ -753,7 +753,7 @@ export async function saveLocalTagPB<M extends MonkeyTypes.Mode>(
|
|||
};
|
||||
|
||||
filteredtag.personalBests[mode][mode2] ??=
|
||||
[] as unknown as MonkeyTypes.PersonalBests[M][keyof MonkeyTypes.PersonalBests[M]];
|
||||
[] as unknown as MonkeyTypes.PersonalBests[M][MonkeyTypes.Mode2<M>];
|
||||
|
||||
try {
|
||||
let found = false;
|
||||
|
@ -818,7 +818,7 @@ export async function saveLocalTagPB<M extends MonkeyTypes.Mode>(
|
|||
timestamp: Date.now(),
|
||||
consistency: consistency,
|
||||
},
|
||||
] as unknown as MonkeyTypes.PersonalBests[M][keyof MonkeyTypes.PersonalBests[M]];
|
||||
] as unknown as MonkeyTypes.PersonalBests[M][MonkeyTypes.Mode2<M>];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -308,15 +308,20 @@ async function fillContent(): Promise<void> {
|
|||
}
|
||||
|
||||
if (result.mode === "time") {
|
||||
let timefilter: MonkeyTypes.Mode2Custom<"time"> = "custom";
|
||||
let timefilter: MonkeyTypes.Mode2<"time"> | "custom" = "custom";
|
||||
if (
|
||||
["15", "30", "60", "120"].includes(
|
||||
`${result.mode2}` //legacy results could have a number in mode2
|
||||
)
|
||||
) {
|
||||
timefilter = `${result.mode2}`;
|
||||
timefilter = `${result.mode2}` as `${number}`;
|
||||
}
|
||||
if (!ResultFilters.getFilter("time", timefilter)) {
|
||||
if (
|
||||
!ResultFilters.getFilter(
|
||||
"time",
|
||||
timefilter as "custom" | "15" | "30" | "60" | "120"
|
||||
)
|
||||
) {
|
||||
if (filterDebug) {
|
||||
console.log(`skipping result due to time filter`, result);
|
||||
}
|
||||
|
@ -329,9 +334,14 @@ async function fillContent(): Promise<void> {
|
|||
`${result.mode2}` //legacy results could have a number in mode2
|
||||
)
|
||||
) {
|
||||
wordfilter = `${result.mode2}`;
|
||||
wordfilter = `${result.mode2}` as `${number}`;
|
||||
}
|
||||
if (!ResultFilters.getFilter("words", wordfilter)) {
|
||||
if (
|
||||
!ResultFilters.getFilter(
|
||||
"words",
|
||||
wordfilter as "custom" | "10" | "25" | "50" | "100"
|
||||
)
|
||||
) {
|
||||
if (filterDebug) {
|
||||
console.log(`skipping result due to word filter`, result);
|
||||
}
|
||||
|
|
|
@ -1321,6 +1321,7 @@ async function saveResult(
|
|||
if (response?.data?.isPb) {
|
||||
//new pb
|
||||
if (
|
||||
//@ts-expect-error TODO fix this
|
||||
DB.getSnapshot()?.personalBests?.[Config.mode]?.[completedEvent.mode2]
|
||||
) {
|
||||
Result.showConfetti();
|
||||
|
|
18
frontend/src/ts/types/types.d.ts
vendored
18
frontend/src/ts/types/types.d.ts
vendored
|
@ -16,7 +16,7 @@ declare namespace MonkeyTypes {
|
|||
|
||||
type Mode = keyof PersonalBests;
|
||||
|
||||
type Mode2<M extends Mode> = keyof PersonalBests[M];
|
||||
type Mode2<M extends Mode> = M extends M ? keyof PersonalBests[M] : never;
|
||||
|
||||
type StringNumber = `${number}`;
|
||||
|
||||
|
@ -624,17 +624,17 @@ declare namespace MonkeyTypes {
|
|||
custom: boolean;
|
||||
};
|
||||
words: {
|
||||
10: boolean;
|
||||
25: boolean;
|
||||
50: boolean;
|
||||
100: boolean;
|
||||
"10": boolean;
|
||||
"25": boolean;
|
||||
"50": boolean;
|
||||
"100": boolean;
|
||||
custom: boolean;
|
||||
};
|
||||
time: {
|
||||
15: boolean;
|
||||
30: boolean;
|
||||
60: boolean;
|
||||
120: boolean;
|
||||
"15": boolean;
|
||||
"30": boolean;
|
||||
"60": boolean;
|
||||
"120": boolean;
|
||||
custom: boolean;
|
||||
};
|
||||
quoteLength: {
|
||||
|
|
|
@ -1159,24 +1159,28 @@ export async function swapElements(
|
|||
return;
|
||||
}
|
||||
|
||||
export function getMode2(
|
||||
export function getMode2<M extends keyof MonkeyTypes.PersonalBests>(
|
||||
config: MonkeyTypes.Config,
|
||||
randomQuote: MonkeyTypes.Quote
|
||||
): string {
|
||||
): MonkeyTypes.Mode2<M> {
|
||||
const mode = config.mode;
|
||||
let retVal: string;
|
||||
|
||||
if (mode === "time") {
|
||||
return config.time.toString();
|
||||
retVal = config.time.toString();
|
||||
} else if (mode === "words") {
|
||||
return config.words.toString();
|
||||
retVal = config.words.toString();
|
||||
} else if (mode === "custom") {
|
||||
return "custom";
|
||||
retVal = "custom";
|
||||
} else if (mode === "zen") {
|
||||
return "zen";
|
||||
retVal = "zen";
|
||||
} else if (mode === "quote") {
|
||||
return randomQuote.id.toString();
|
||||
retVal = randomQuote.id.toString();
|
||||
} else {
|
||||
throw new Error("Invalid mode");
|
||||
}
|
||||
|
||||
return "";
|
||||
return retVal as MonkeyTypes.Mode2<M>;
|
||||
}
|
||||
|
||||
export async function downloadResultsCSV(
|
||||
|
|
Loading…
Reference in a new issue