From 71d06c12adb7aff2e367c967648d9b55d1de3a76 Mon Sep 17 00:00:00 2001 From: HPL-JesusCastro Date: Sat, 23 May 2026 02:41:14 +0800 Subject: [PATCH] fix streak counting --- backend/src/routes/letters.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/backend/src/routes/letters.ts b/backend/src/routes/letters.ts index 8f0b8ab..6a7fb8d 100644 --- a/backend/src/routes/letters.ts +++ b/backend/src/routes/letters.ts @@ -70,12 +70,20 @@ export async function letterRoutes(app: FastifyInstance) { let current = 0; let longest = 0; let streak = 0; + let inCurrentStreak = true; let prev: Date | null = null; - for (let i = 0; i < dates.length; i++) { - const d = new Date(dates[i]); - streak = prev === null ? 1 : (prev.getTime() - d.getTime()) / 86400000 === 1 ? streak + 1 : 1; - if (i === 0) current = streak; + for (const dateStr of dates) { + const d = new Date(dateStr); + if (prev === null) { + streak = 1; + } else if ((prev.getTime() - d.getTime()) / 86400000 === 1) { + streak++; + } else { + streak = 1; + inCurrentStreak = false; + } + if (inCurrentStreak) current = streak; longest = Math.max(longest, streak); prev = d; }