import { create } from 'zustand';

interface OutletUser {
  id: number;
  outlet_name: string;
  customer_code_bmu: string;
  qr_code: string;
  address?: string;
  contact_person?: string;
  city?: string;
  province?: string;
  email?: string;
}

interface OutletAuthState {
  outlet: OutletUser | null;
  token: string | null;
  setAuth: (outlet: OutletUser, token: string) => void;
  clearAuth: () => void;
  hydrate: () => void;
}

export const useOutletAuthStore = create<OutletAuthState>((set) => ({
  outlet: null,
  token: null,
  setAuth: (outlet, token) => {
    localStorage.setItem('outlet_token', token);
    localStorage.setItem('outlet_user', JSON.stringify(outlet));
    set({ outlet, token });
  },
  clearAuth: () => {
    localStorage.removeItem('outlet_token');
    localStorage.removeItem('outlet_user');
    set({ outlet: null, token: null });
  },
  hydrate: () => {
    const token = localStorage.getItem('outlet_token');
    const raw = localStorage.getItem('outlet_user');
    if (token && raw) {
      try { set({ token, outlet: JSON.parse(raw) }); } catch {}
    }
  },
}));
