| import { create } from 'zustand'; |
| import { persist } from 'zustand/middleware'; |
| import type { User, AuthTokens } from '../types'; |
|
|
| interface AuthState { |
| user: User | null; |
| tokens: AuthTokens | null; |
| isAuthenticated: boolean; |
| isLoading: boolean; |
| setAuth: (user: User, tokens: AuthTokens) => void; |
| setTokens: (tokens: AuthTokens) => void; |
| logout: () => void; |
| setLoading: (loading: boolean) => void; |
| } |
|
|
| export const useAuthStore = create<AuthState>()( |
| persist( |
| (set) => ({ |
| user: null, tokens: null, isAuthenticated: false, isLoading: true, |
| setAuth: (user, tokens) => set({ user, tokens, isAuthenticated: true, isLoading: false }), |
| setTokens: (tokens) => set({ tokens }), |
| logout: () => set({ user: null, tokens: null, isAuthenticated: false }), |
| setLoading: (isLoading) => set({ isLoading }), |
| }), |
| { name: 'codesync-auth', partialize: (state) => ({ user: state.user, tokens: state.tokens, isAuthenticated: state.isAuthenticated }) } |
| ) |
| ); |
|
|