// API 기본 설정
// 환경별 URL 결정:
// - 로컬 개발 (npm start): .env.development → localhost:8083
// - 서버 빌드 (deploy-home.sh, deploy-server.sh): .env.server → exdev.co.kr
// - env 미설정 시: 런타임에 window.location 기반 (localhost 접속→localhost, exdev.co.kr 접속→exdev.co.kr)

const REMOTE_SERVER = 'https://exdev.co.kr';

let cachedApiBaseUrl: string | null = null;

/**
 * API 베이스 URL 가져오기
 * 1. REACT_APP_API_BASE_URL 설정 시 → 사용 (서버 빌드)
 * 2. 미설정 시 → 런타임: localhost 접속이면 localhost:8083, 그 외엔 현재 origin
 */
export const getApiBaseUrl = (): string => {
  if (cachedApiBaseUrl !== null) {
    return cachedApiBaseUrl;
  }

  // 1. 빌드 타임 환경 변수 우선 사용
  const envBase = process.env.REACT_APP_API_BASE_URL;
  if (envBase) {
    const finalUrl = envBase.endsWith('/api') ? envBase : `${envBase}/api`;
    cachedApiBaseUrl = finalUrl;
    return finalUrl;
  }

  // 2. 런타임 환경 감지 (Fallback) - SSR/빌드 시 window 없음 (캐시하지 않음)
  if (typeof window === 'undefined') {
    return '/api';
  }

  const isLocalhost =
    window.location.hostname === 'localhost' ||
    window.location.hostname === '127.0.0.1' ||
    window.location.hostname === '';

  if (isLocalhost) {
    const url = 'http://localhost:8083/api';
    cachedApiBaseUrl = url;
    return url;
  }

  // 서버 환경: 반드시 현재 origin 사용 (localhost 절대 사용 금지)
  const url = `${window.location.origin}/api`;
  cachedApiBaseUrl = url;
  return url;
};

/**
 * 알림(SSE) API 베이스 URL
 * - 로컬 실행 시 localhost:8083 사용
 * - REACT_APP_NOTIFICATION_API_URL 설정 시 해당 URL 사용
 */
export const getNotificationApiBaseUrl = (): string => {
  const envUrl = process.env.REACT_APP_NOTIFICATION_API_URL;
  if (envUrl) {
    return envUrl.endsWith('/api') ? envUrl : `${envUrl}/api`;
  }
  if (typeof window === 'undefined') {
    return '/api';
  }
  const isLocalhost =
    window.location.hostname === 'localhost' ||
    window.location.hostname === '127.0.0.1' ||
    window.location.hostname === '';
  if (isLocalhost) {
    return 'http://localhost:8083/api';
  }
  return getApiBaseUrl();
};

// API 베이스 URL (동적으로 생성)
export const API_BASE_URL = getApiBaseUrl();

// Axios 공통 설정
export const API_CONFIG = {
  baseURL: API_BASE_URL,
  headers: {
    'Content-Type': 'application/json',
  },
};

