fix streak counting
This commit is contained in:
@@ -70,12 +70,20 @@ export async function letterRoutes(app: FastifyInstance) {
|
|||||||
let current = 0;
|
let current = 0;
|
||||||
let longest = 0;
|
let longest = 0;
|
||||||
let streak = 0;
|
let streak = 0;
|
||||||
|
let inCurrentStreak = true;
|
||||||
let prev: Date | null = null;
|
let prev: Date | null = null;
|
||||||
|
|
||||||
for (let i = 0; i < dates.length; i++) {
|
for (const dateStr of dates) {
|
||||||
const d = new Date(dates[i]);
|
const d = new Date(dateStr);
|
||||||
streak = prev === null ? 1 : (prev.getTime() - d.getTime()) / 86400000 === 1 ? streak + 1 : 1;
|
if (prev === null) {
|
||||||
if (i === 0) current = streak;
|
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);
|
longest = Math.max(longest, streak);
|
||||||
prev = d;
|
prev = d;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user