import { Navigate, useLocation } from 'react-router-dom';
import { getPartnerProfile, hasPartnerWxSession } from '../lib/api';
import { usePartnerSession } from '../contexts/PartnerSessionContext';
import { partnerHomePath } from '../lib/partnerAccess';

const PUBLIC_PATHS = new Set(['/login']);

export default function AuthGate({ children }: { children: React.ReactNode }) {
  const { ready, authenticated, account } = usePartnerSession();
  const location = useLocation();

  if (!ready) {
    return <div className="empty">加载中...</div>;
  }

  if (authenticated && location.pathname === '/login') {
    return <Navigate to={partnerHomePath(account ?? getPartnerProfile())} replace />;
  }

  if (!authenticated && !PUBLIC_PATHS.has(location.pathname)) {
    const profile = getPartnerProfile();
    if (profile && hasPartnerWxSession()) {
      return <Navigate to="/login?quick=1" replace state={{ from: location }} />;
    }
    return <Navigate to="/login" replace state={{ from: location }} />;
  }

  return <>{children}</>;
}
