diff --git a/backend/src/api/controllers/user.ts b/backend/src/api/controllers/user.ts index d4b18ffc3..0a27c573b 100644 --- a/backend/src/api/controllers/user.ts +++ b/backend/src/api/controllers/user.ts @@ -547,6 +547,7 @@ export async function updateStreak(uid, timestamp): Promise { const streak: MonkeyTypes.UserStreak = { lastResultTimestamp: user.streak?.lastResultTimestamp ?? 0, length: user.streak?.length ?? 0, + maxLength: user.streak?.length ?? 0, }; if (isYesterday(streak.lastResultTimestamp)) { @@ -555,6 +556,10 @@ export async function updateStreak(uid, timestamp): Promise { streak.length = 1; } + if (streak.length > streak.maxLength) { + streak.maxLength = streak.length; + } + streak.lastResultTimestamp = timestamp; await UserDAL.getUsersCollection().updateOne({ uid }, { $set: { streak } }); diff --git a/backend/src/dal/user.ts b/backend/src/dal/user.ts index 5a5f857f2..ba1ac509d 100644 --- a/backend/src/dal/user.ts +++ b/backend/src/dal/user.ts @@ -73,6 +73,7 @@ export async function resetUser(uid: string): Promise { streak: { length: 0, lastResultTimestamp: 0, + maxLength: 0, }, }, $unset: { diff --git a/backend/src/types/types.d.ts b/backend/src/types/types.d.ts index 372bb4103..05f5cf7a1 100644 --- a/backend/src/types/types.d.ts +++ b/backend/src/types/types.d.ts @@ -172,6 +172,7 @@ declare namespace MonkeyTypes { interface UserStreak { lastResultTimestamp: number; length: number; + maxLength: number; } interface UserInventory { diff --git a/frontend/src/ts/constants/default-snapshot.ts b/frontend/src/ts/constants/default-snapshot.ts index 861caa452..d2e3c4329 100644 --- a/frontend/src/ts/constants/default-snapshot.ts +++ b/frontend/src/ts/constants/default-snapshot.ts @@ -29,4 +29,5 @@ export const defaultSnap: MonkeyTypes.Snapshot = { xp: 0, inboxUnreadSize: 0, streak: 0, + maxStreak: 0, }; diff --git a/frontend/src/ts/db.ts b/frontend/src/ts/db.ts index 1aa952eac..d9a13975e 100644 --- a/frontend/src/ts/db.ts +++ b/frontend/src/ts/db.ts @@ -98,6 +98,7 @@ export async function initSnapshot(): Promise< snap.xp = userData.xp ?? 0; snap.inboxUnreadSize = userData.inboxUnreadSize ?? 0; snap.streak = userData?.streak?.length ?? 0; + snap.maxStreak = userData?.streak?.maxLength ?? 0; if (userData.lbMemory?.time15 || userData.lbMemory?.time60) { //old memory format diff --git a/frontend/src/ts/types/types.d.ts b/frontend/src/ts/types/types.d.ts index d6d62f09c..4e4a56317 100644 --- a/frontend/src/ts/types/types.d.ts +++ b/frontend/src/ts/types/types.d.ts @@ -475,6 +475,7 @@ declare namespace MonkeyTypes { xp: number; inboxUnreadSize: number; streak: number; + maxStreak: number; } interface UserDetails {