/**
 * 接口根地址（与 ruoyi-ui 的 VUE_APP_BASE_API 对齐）
 *
 * - 开发：.env.development → /dev-api（H5 代理）或 VITE_APP_API_HOST 直连
 * - 生产：.env.production → /prod-api（与 ruoyi-ui/.env.production 一致，由 Nginx 转发）
 *
 * 打包 H5：uni build -p h5
 */

/** 开发兜底 / 小程序未配域名时的默认值（生产 H5 不应依赖此项） */
const apiHost = String(import.meta.env.VITE_APP_API_HOST || 'http://192.168.1.6:8010').replace(/\/$/, '')

/** .env 显式配置的后端域名（小程序/App 生产环境必填 https） */
const hostFromEnv = String(import.meta.env.VITE_APP_API_HOST || '').trim().replace(/\/$/, '')

/** 与 ruoyi-ui 的 VUE_APP_BASE_API 同源配置（dev/prod 由 .env 注入） */
const envBaseApi = String(import.meta.env.VITE_APP_BASE_API || '').trim()

/**
 * H5 开发是否走 /dev-api 代理（需 vite.config.js server.proxy）
 * true：请求发到当前页同源 /dev-api，由 Vite 转发到 VITE_APP_API_HOST（推荐，避免跨域）
 * false：直连 VITE_APP_API_HOST（仅调试代理问题时使用）
 */
export const H5_USE_PROXY = true

function resolveBaseApi() {
  if (import.meta.env.PROD) {
    return envBaseApi || '/prodapi'
  }
  const devBase = envBaseApi || '/dev-api'
  // #ifdef H5
  return H5_USE_PROXY ? devBase : apiHost
  // #endif
  // #ifndef H5
  return apiHost
  // #endif
}

export const BASE_API = resolveBaseApi()

/**
 * 后端完整地址（开发 / 小程序打包用 .env 的 VITE_APP_API_HOST）
 * H5 生产图片在运行时由 getFileBase() 自动取 window.location.origin
 */
export const API_HOST = hostFromEnv || apiHost

/** 图片根地址（构建时）；H5 生产以运行时 getFileBase() 为准 */
export const FILE_BASE = API_HOST

/**
 * 拼接图片、上传文件等静态资源地址（profile/upload 等）
 * @param {string} path
 */
export function joinFileUrl(path) {
  if (!path) {
    return FILE_BASE
  }
  if (/^https?:\/\//i.test(path)) {
    return path
  }
  const p = path.startsWith('/') ? path : '/' + path
  const base = String(FILE_BASE).replace(/\/$/, '')
  return base + p
}

/**
 * 拼接接口或静态资源地址（/login、/profile/...）
 * @param {string} path
 */
export function joinApiUrl(path) {
  if (!path) {
    return BASE_API
  }
  if (/^https?:\/\//i.test(path)) {
    return path
  }
  const p = path.startsWith('/') ? path : '/' + path
  const base = String(BASE_API).replace(/\/$/, '')
  return base + p
}

export const TOKEN_KEY = 'Admin-Token'
export const REMEMBER_USERNAME_KEY = 'login_username'
