import { create } from 'zustand';

interface EndUser {
  id: number;
  full_name: string;
  phone: string;
  email?: string;
  address?: string;
  birth_date?: string;
  total_points: number;
}

interface AuthState {
  user: EndUser | null;
  token: string | null;
  setAuth: (user: EndUser, token: string) => void;
  clearAuth: () => void;
  hydrate: () => void;
}

export const useAuthStore = create<AuthState>((set) => ({
  user: null,
  token: null,
  setAuth: (user, token) => {
    localStorage.setItem('token', token);
    localStorage.setItem('user', JSON.stringify(user));
    set({ user, token });
  },
  clearAuth: () => {
    localStorage.removeItem('token');
    localStorage.removeItem('user');
    set({ user: null, token: null });
  },
  hydrate: () => {
    const token = localStorage.getItem('token');
    const raw = localStorage.getItem('user');
    if (token && raw) {
      try { set({ token, user: JSON.parse(raw) }); } catch {}
    }
  },
}));
