Fix streak broken logic

This commit is contained in:
Alex Gleason 2025-02-06 14:53:42 -06:00
parent abea4f17b3
commit 080c34d13f
No known key found for this signature in database
GPG key ID: 7211D1F99744FBB7

View file

@ -37,23 +37,25 @@ export async function updateStats({ event, kysely, store, x = 1 }: UpdateStatsOp
/** Update stats for kind 1 event. */ /** Update stats for kind 1 event. */
async function handleEvent1(kysely: Kysely<DittoTables>, event: NostrEvent, x: number): Promise<void> { async function handleEvent1(kysely: Kysely<DittoTables>, event: NostrEvent, x: number): Promise<void> {
await updateAuthorStats(kysely, event.pubkey, (prev) => { await updateAuthorStats(kysely, event.pubkey, (prev) => {
const now = event.created_at;
let start = prev.streak_start; let start = prev.streak_start;
let end = prev.streak_end; let end = prev.streak_end;
if (start && end) { // Streak exists. if (start && end) { // Streak exists.
if (event.created_at <= end) { if (now <= end) {
// Streak cannot go backwards in time. Skip it. // Streak cannot go backwards in time. Skip it.
} else if (end - start > 86400) { } else if (now - end > 86400) {
// Streak is broken. Start a new streak. // Streak is broken. Start a new streak.
start = event.created_at; start = now;
end = event.created_at; end = now;
} else { } else {
// Extend the streak. // Extend the streak.
end = event.created_at; end = now;
} }
} else { // New streak. } else { // New streak.
start = event.created_at; start = now;
end = event.created_at; end = now;
} }
return { return {