const DEFAULT_API_BASE_URL = 'http://localhost:3001'

function normalizeBaseUrl(baseUrl) {
  return (baseUrl || DEFAULT_API_BASE_URL).replace(/\/+$/, '')
}

function normalizePath(path) {
  return path.startsWith('/') ? path : `/${path}`
}

export function buildApiUrl(path) {
  const baseUrl = normalizeBaseUrl(import.meta.env.VITE_API_BASE_URL)
  const normalizedPath = normalizePath(path)

  if (baseUrl.endsWith('/api') && normalizedPath.startsWith('/api/')) {
    return `${baseUrl}${normalizedPath.slice(4)}`
  }

  return `${baseUrl}${normalizedPath}`
}

export function toUserFacingApiError(error, fallbackMessage) {
  const rawMessage = `${error?.message ?? ''}`.trim()

  if (!rawMessage) {
    return fallbackMessage
  }

  if (
    rawMessage.includes('Failed to fetch') ||
    rawMessage.includes('NetworkError') ||
    rawMessage.includes('Load failed')
  ) {
    return '서버에 연결하지 못했습니다. 잠시 후 다시 시도해 주세요.'
  }

  if (
    rawMessage.includes('Route ') ||
    rawMessage.includes('not found') ||
    rawMessage.includes('/api/')
  ) {
    return '로그인 요청을 처리하지 못했습니다. 잠시 후 다시 시도해 주세요.'
  }

  return rawMessage
}
