import { create } from 'zustand';

interface DealerUser {
  id: number;
  dealer_name: string;
  customer_code_bmu: string;
  email?: string;
  address?: string;
  contact_person?: string;
  city?: string;
  province?: string;
  brand?: string;
}

interface DealerAuthState {
  dealer: DealerUser | null;
  token: string | null;
  setAuth: (dealer: DealerUser, token: string) => void;
  clearAuth: () => void;
  hydrate: () => void;
}

export const useDealerAuthStore = create<DealerAuthState>((set) => ({
  dealer: null,
  token: null,
  setAuth: (dealer, token) => {
    localStorage.setItem('dealer_token', token);
    localStorage.setItem('dealer_user', JSON.stringify(dealer));
    set({ dealer, token });
  },
  clearAuth: () => {
    localStorage.removeItem('dealer_token');
    localStorage.removeItem('dealer_user');
    set({ dealer: null, token: null });
  },
  hydrate: () => {
    const token = localStorage.getItem('dealer_token');
    const raw   = localStorage.getItem('dealer_user');
    if (token && raw) {
      try { set({ token, dealer: JSON.parse(raw) }); } catch {}
    }
  },
}));
