import { create } from 'zustand'; export interface User { id: number; username: string; email: string; is_admin: boolean; } interface AuthState { user: User | null; token: string | null; isAuthenticated: boolean; login: (user: User, token: string) => void; updateUser: (user: Partial) => void; logout: () => void; } export const useAuthStore = create((set) => ({ user: JSON.parse(localStorage.getItem('user') || 'null'), token: localStorage.getItem('token'), isAuthenticated: !!localStorage.getItem('token'), login: (user, token) => { localStorage.setItem('user', JSON.stringify(user)); localStorage.setItem('token', token); set({ user, token, isAuthenticated: true }); }, updateUser: (updatedUser) => set((state) => { const user = state.user ? { ...state.user, ...updatedUser } : null; if (user) { localStorage.setItem('user', JSON.stringify(user)); } return { user }; }), logout: () => { localStorage.removeItem('user'); localStorage.removeItem('token'); set({ user: null, token: null, isAuthenticated: false }); }, }));