import { create } from 'zustand'; import { persist } from 'zustand/middleware'; import type { User, AuthState } from '../types'; interface AuthStore extends AuthState { // Actions login: (user: User, token: string, refreshToken: string) => void; logout: () => void; updateUser: (user: Partial) => void; setToken: (token: string) => void; } export const useAuthStore = create()( persist( (set) => ({ // Initial state user: null, token: null, refreshToken: null, isAuthenticated: false, // Actions login: (user, token, refreshToken) => set({ user, token, refreshToken, isAuthenticated: true, }), logout: () => set({ user: null, token: null, refreshToken: null, isAuthenticated: false, }), updateUser: (userData) => set((state) => ({ user: state.user ? { ...state.user, ...userData } : null, })), setToken: (token) => set({ token }), }), { name: 'mecanicas-auth-storage', partialize: (state) => ({ token: state.token, refreshToken: state.refreshToken, user: state.user, isAuthenticated: state.isAuthenticated, }), } ) );