File size: 994 Bytes
8f9c4ef | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | 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 }) }
)
);
|