/**
 * 统一认证帮助函数
 * 用于在所有 API 请求中自动注入 Bearer token
 */

const baseUrl = import.meta.env.VITE_MOSQUITO_API_BASE_URL ?? ''

/**
 * 获取存储的 token（优先从 localStorage，fallback 到环境变量）
 */
export function getAuthToken(): string {
  if (typeof localStorage !== 'undefined') {
    const storedToken = localStorage.getItem('mosquito_token')
    if (storedToken) {
      return storedToken
    }
  }
  return import.meta.env.VITE_MOSQUITO_USER_TOKEN ?? ''
}

/**
 * 获取 X-Admin-Token（用于管理员操作的特殊认证头）
 * 优先从 localStorage 获取，其次从环境变量
 */
export function getAdminToken(): string {
  if (typeof localStorage !== 'undefined') {
    const storedToken = localStorage.getItem('mosquito_admin_token')
    if (storedToken) {
      return storedToken
    }
  }
  return import.meta.env.VITE_MOSQUITO_ADMIN_TOKEN ?? ''
}

/**
 * 获取认证请求头
 */
export function getAuthHeaders(): Record<string, string> {
  const token = getAuthToken()
  const adminToken = getAdminToken()
  const headers: Record<string, string> = {
    'Content-Type': 'application/json'
  }
  if (token) {
    headers['Authorization'] = `Bearer ${token}`
  }
  if (adminToken) {
    headers['X-Admin-Token'] = adminToken
  }
  return headers
}

/**
 * 统一的 fetch 封装，自动添加认证头
 */
export async function authFetch(
  url: string,
  options: RequestInit = {}
): Promise<Response> {
  return fetch(url, {
    ...options,
    headers: {
      ...getAuthHeaders(),
      ...options.headers
    }
  })
}

export { baseUrl }
