updated mode2 type

This commit is contained in:
Miodec 2023-06-26 14:13:21 +02:00
parent cc95aff900
commit 17ddb87abb
5 changed files with 41 additions and 26 deletions

View file

@ -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>];
}
}

View file

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

View file

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

View file

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

View file

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