| 202 | if (mode === "quote") return; |
| 203 | if (!dbSnapshot) return; |
| 204 | function cont(): void { |
| 205 | if (!dbSnapshot) return; |
| 206 | let found = false; |
| 207 | |
| 208 | dbSnapshot.personalBests ??= { |
| 209 | time: {}, |
| 210 | words: {}, |
| 211 | quote: {}, |
| 212 | zen: {}, |
| 213 | custom: {}, |
| 214 | }; |
| 215 | |
| 216 | dbSnapshot.personalBests[mode] ??= { |
| 217 | [mode2]: [], |
| 218 | }; |
| 219 | |
| 220 | dbSnapshot.personalBests[mode][mode2] ??= |
| 221 | [] as unknown as PersonalBests[M][Mode2<M>]; |
| 222 | |
| 223 | ( |
| 224 | dbSnapshot.personalBests[mode][mode2] as unknown as PersonalBest[] |
| 225 | ).forEach((pb) => { |
| 226 | if ( |
| 227 | (pb.punctuation ?? false) === punctuation && |
| 228 | (pb.numbers ?? false) === numbers && |
| 229 | pb.difficulty === difficulty && |
| 230 | pb.language === language && |
| 231 | (pb.lazyMode ?? false) === lazyMode |
| 232 | ) { |
| 233 | found = true; |
| 234 | pb.wpm = wpm; |
| 235 | pb.acc = acc; |
| 236 | pb.raw = raw; |
| 237 | pb.timestamp = Date.now(); |
| 238 | pb.consistency = consistency; |
| 239 | pb.lazyMode = lazyMode; |
| 240 | } |
| 241 | }); |
| 242 | if (!found) { |
| 243 | //nothing found |
| 244 | (dbSnapshot.personalBests[mode][mode2] as unknown as PersonalBest[]).push( |
| 245 | { |
| 246 | language, |
| 247 | difficulty, |
| 248 | lazyMode, |
| 249 | punctuation, |
| 250 | numbers, |
| 251 | wpm, |
| 252 | acc, |
| 253 | raw, |
| 254 | timestamp: Date.now(), |
| 255 | consistency, |
| 256 | }, |
| 257 | ); |
| 258 | } |
| 259 | } |
| 260 | |
| 261 | if (dbSnapshot !== null) { |