( mode: M, mode2: Mode2<M> | undefined, language: Language, rank: number, api = false, )
| 264 | } |
| 265 | |
| 266 | export async function updateLbMemory<M extends Mode>( |
| 267 | mode: M, |
| 268 | mode2: Mode2<M> | undefined, |
| 269 | language: Language, |
| 270 | rank: number, |
| 271 | api = false, |
| 272 | ): Promise<void> { |
| 273 | if (mode2 === undefined) return; |
| 274 | if (mode === "time") { |
| 275 | const timeMode = mode; |
| 276 | const timeMode2 = mode2 as "15" | "60"; |
| 277 | |
| 278 | const snapshot = getSnapshot(); |
| 279 | if (!snapshot) return; |
| 280 | snapshot.lbMemory ??= { |
| 281 | time: { "15": { english: 0 }, "60": { english: 0 } }, |
| 282 | }; |
| 283 | snapshot.lbMemory[timeMode] ??= { |
| 284 | "15": { english: 0 }, |
| 285 | "60": { english: 0 }, |
| 286 | }; |
| 287 | snapshot.lbMemory[timeMode][timeMode2] ??= {}; |
| 288 | const current = snapshot.lbMemory?.[timeMode]?.[timeMode2]?.[language]; |
| 289 | |
| 290 | //this is protected above so not sure why it would be undefined |
| 291 | const mem = snapshot.lbMemory[timeMode][timeMode2]; |
| 292 | mem[language] = rank; |
| 293 | if (api && current !== rank) { |
| 294 | await Ape.users.updateLeaderboardMemory({ |
| 295 | body: { mode, mode2, language, rank }, |
| 296 | }); |
| 297 | } |
| 298 | setSnapshot(snapshot); |
| 299 | } |
| 300 | } |
| 301 | |
| 302 | export type SaveLocalResultData = { |
| 303 | xp?: number; |
no test coverage detected