From 71c96f248d1561d6cd69ceccbda38d5315d8e8a5 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Fri, 18 Apr 2025 21:14:33 +0200 Subject: [PATCH 1/3] make typescript verify enemyStatKey is comprehensive --- src/services/statsService.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/services/statsService.ts b/src/services/statsService.ts index 626bbe27..67124c24 100644 --- a/src/services/statsService.ts +++ b/src/services/statsService.ts @@ -137,12 +137,14 @@ export const updateStats = async (accountOwnerId: string, payload: IStatsUpdate) case "HEADSHOT": case "KILL_ASSIST": { playerStats.Enemies ??= []; - const enemyStatKey = { - KILL_ENEMY: "kills", - EXECUTE_ENEMY: "executions", - HEADSHOT: "headshots", - KILL_ASSIST: "assists" - }[category] as "kills" | "executions" | "headshots" | "assists"; + const enemyStatKey = ( + { + KILL_ENEMY: "kills", + EXECUTE_ENEMY: "executions", + HEADSHOT: "headshots", + KILL_ASSIST: "assists" + } as const + )[category]; for (const [type, count] of Object.entries(data as IUploadEntry)) { const enemy = playerStats.Enemies.find(element => element.type === type); -- 2.47.2 From d41ce64267db0de432f371791e5405493643701d Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Fri, 18 Apr 2025 21:15:18 +0200 Subject: [PATCH 2/3] fix captures not being tracked for a new enemy --- src/services/statsService.ts | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/services/statsService.ts b/src/services/statsService.ts index 67124c24..668598d4 100644 --- a/src/services/statsService.ts +++ b/src/services/statsService.ts @@ -147,26 +147,24 @@ export const updateStats = async (accountOwnerId: string, payload: IStatsUpdate) )[category]; for (const [type, count] of Object.entries(data as IUploadEntry)) { - const enemy = playerStats.Enemies.find(element => element.type === type); - if (enemy) { - if (category === "KILL_ENEMY") { - enemy.kills ??= 0; - const captureCount = (actionData as IStatsAdd)["CAPTURE_ENEMY"]?.[type]; - if (captureCount) { - enemy.kills += Math.max(count - captureCount, 0); - enemy.captures ??= 0; - enemy.captures += captureCount; - } else { - enemy.kills += count; - } + let enemy = playerStats.Enemies.find(element => element.type === type); + if (!enemy) { + enemy = { type: type }; + playerStats.Enemies.push(enemy); + } + if (category === "KILL_ENEMY") { + enemy.kills ??= 0; + const captureCount = (actionData as IStatsAdd)["CAPTURE_ENEMY"]?.[type]; + if (captureCount) { + enemy.kills += Math.max(count - captureCount, 0); + enemy.captures ??= 0; + enemy.captures += captureCount; } else { - enemy[enemyStatKey] ??= 0; - enemy[enemyStatKey] += count; + enemy.kills += count; } } else { - const newEnemy: IEnemy = { type: type }; - newEnemy[enemyStatKey] = count; - playerStats.Enemies.push(newEnemy); + enemy[enemyStatKey] ??= 0; + enemy[enemyStatKey] += count; } } break; -- 2.47.2 From 529b0d07024c98aeae40fa316980b967abc34212 Mon Sep 17 00:00:00 2001 From: Sainan <63328889+Sainan@users.noreply.github.com> Date: Fri, 18 Apr 2025 21:18:09 +0200 Subject: [PATCH 3/3] remove now-unused import --- src/services/statsService.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/services/statsService.ts b/src/services/statsService.ts index 668598d4..a074b637 100644 --- a/src/services/statsService.ts +++ b/src/services/statsService.ts @@ -1,6 +1,5 @@ import { Stats, TStatsDatabaseDocument } from "@/src/models/statsModel"; import { - IEnemy, IStatsAdd, IStatsMax, IStatsSet, -- 2.47.2