/** 배포(Render) 백엔드 — Vercel 등 외부 호스팅용 */
export const RENDER_API = 'https://eene-dashboard-backend.onrender.com';

/** 사설망·로컬 IP 여부 (로컬 서버 우선 연결) */
export function isLocalNetworkHost(hostname: string): boolean {
  return (
    hostname === 'localhost' ||
    hostname === '127.0.0.1' ||
    /^172\.(1[6-9]|2\d|3[01])\./.test(hostname) ||
    /^192\.168\./.test(hostname) ||
    /^10\./.test(hostname)
  );
}

/** API·소켓·정적 파일이 붙는 백엔드 origin (프로토콜+호스트+포트) */
export function getBackendOrigin(): string {
  const envUrl = import.meta.env.VITE_API_URL || import.meta.env.VITE_SOCKET_URL;
  if (envUrl) {
    return String(envUrl).replace(/\/$/, '');
  }

  if (import.meta.env.DEV && typeof window !== 'undefined') {
    return `${window.location.protocol}//${window.location.hostname}:4000`;
  }

  if (typeof window !== 'undefined' && isLocalNetworkHost(window.location.hostname)) {
    return `${window.location.protocol}//${window.location.hostname}:4000`;
  }

  return RENDER_API;
}

/** REST API base (/api 포함) */
export function getApiBaseUrl(): string {
  if (import.meta.env.VITE_API_URL) {
    return `${import.meta.env.VITE_API_URL.replace(/\/$/, '')}/api`;
  }
  if (import.meta.env.DEV) {
    return '/api';
  }
  if (typeof window !== 'undefined' && isLocalNetworkHost(window.location.hostname)) {
    return `${getBackendOrigin()}/api`;
  }
  return `${RENDER_API}/api`;
}

export function getSocketUrl(): string {
  if (import.meta.env.VITE_SOCKET_URL) {
    return import.meta.env.VITE_SOCKET_URL;
  }
  // dev: Vite proxy /socket.io → API (localhost·LAN IP 동일 origin)
  if (import.meta.env.DEV && typeof window !== 'undefined') {
    return window.location.origin;
  }
  return getBackendOrigin();
}

/** /uploads/... 경로를 브라우저에서 열 수 있는 URL로 변환 */
export function staticAssetUrl(path: string | null | undefined): string {
  if (!path) return '';
  if (/^https?:\/\//i.test(path) || path.startsWith('data:')) return path;

  const normalized = path.startsWith('/') ? path : `/${path}`;

  if (import.meta.env.DEV) {
    return normalized;
  }

  return `${getBackendOrigin()}${normalized}`;
}
