@@ -4,36 +4,53 @@ import { persist } from 'zustand/middleware'
44
55type AuthState = {
66 user : User | null
7+ lastStreakUpdate ?: number
78 providerId : string | null
89}
910
1011type AuthActions = {
1112 initState : ( state : AuthState ) => void
1213 setStreak : ( streak : number ) => void
14+ setLastStreakUpdate : ( timestamp : number ) => void
1315 clear : ( ) => void
1416}
1517
18+ type AuthStoreType = AuthState & AuthActions
1619export const AuthStore = create (
17- persist < AuthState & AuthActions > (
20+ persist < AuthStoreType > (
1821 ( set ) => ( {
1922 user : null ,
2023 providerId : null ,
24+ lastStreakUpdate : undefined ,
25+ setLastStreakUpdate : ( timestamp : number ) => set ( { lastStreakUpdate : timestamp } ) ,
2126 initState : ( newState : AuthState ) =>
2227 set ( {
2328 user : newState . user ,
2429 providerId : newState . providerId ,
2530 } ) ,
2631 setStreak : ( streak : number ) =>
2732 set ( ( state ) => ( {
33+ lastStreakUpdate : Date . now ( ) ,
2834 user : {
2935 ...state . user ! ,
3036 streak,
3137 } ,
3238 } ) ) ,
33- clear : ( ) => set ( { user : null } ) ,
39+ clear : ( ) => set ( { user : null , lastStreakUpdate : undefined } ) ,
3440 } ) ,
3541 {
36- name : 'auth-storage' , // key in localStorage
42+ version : 1 ,
43+ name : 'auth-storage' ,
44+ migrate : ( persistedState , version ) => {
45+ const typedPersistedState = persistedState as unknown as AuthStoreType
46+ if ( version === 0 ) {
47+ return {
48+ ...typedPersistedState ,
49+ lastStreakUpdate : undefined ,
50+ }
51+ }
52+ return typedPersistedState
53+ } ,
3754 }
3855 )
3956)
0 commit comments