/**
 * 图片URL处理工具
 * 将远程图片URL转换为本地路径
 *
 * @author 系统开发团队
 * @date 2023-05-15
 * @version 1.0.0
 * @description
 *   该工具用于处理图片URL，支持将远程图片URL转换为本地路径。
 *   主要用于开发环境中，可以通过环境变量控制是否启用本地图片映射。
 *   简化处理逻辑：只处理以 /admin-api/ 开头的路径，本地路径和http/https URL不处理。
 */
import { getMappedImagePath } from '@/config/image-mapping'

/**
 * 转换图片URL为本地路径
 * @param url 原始图片URL
 * @returns 转换后的URL
 *
 * @example
 * // 返回原始URL（未启用本地映射）
 * convertImageUrl('http://example.com/image.jpg')
 *
 * @example
 * // 返回本地路径（启用本地映射）
 * convertImageUrl('/admin-api/infra/file/1/get/image.jpg')
 * // 返回: 'https://api.ifoodme.com/admin-api/infra/file/1/get/image.jpg'
 */
export const convertImageUrl = (url: string): string => {
  if (!url) return ''

  // 判断是否启用本地图片映射
  const useLocalMapping = import.meta.env.VITE_USE_LOCAL_IMAGES === 'true'
  if (!useLocalMapping) return url

  // 首先检查是否有特定的映射配置
  const mappedPath = getMappedImagePath(url)
  if (mappedPath) {
    return mappedPath
  }

  // 如果是http或https开头的URL，不处理
  if (url.startsWith('http://') || url.startsWith('https://')) {
    return url
  }

  // 如果是本地路径（不以/admin-api/开头），不处理
  if (!url.startsWith('/admin-api/')) {
    return url
  }

  // 处理以/admin-api/开头的路径
  // 在原来的URL基础上追加localImageBase前缀
  const localImageBase = import.meta.env.VITE_LOCAL_IMAGE_BASE || 'https://api.ifoodme.com'

  // 不替换前缀，而是追加前缀
  return `${localImageBase}${url}`
}

/**
 * 检查URL是否为图片
 * @param url 要检查的URL
 * @returns 是否为图片URL
 *
 * @example
 * isImageUrl('image.jpg') // 返回: true
 * isImageUrl('document.pdf') // 返回: false
 */
export const isImageUrl = (url: string): boolean => {
  if (!url) return false
  return /\.(jpg|jpeg|png|gif|bmp|webp)$/i.test(url)
}

/**
 * 获取图片文件名
 * @param url 图片URL
 * @returns 文件名
 *
 * @example
 * getImageFileName('http://example.com/images/photo.jpg') // 返回: 'photo.jpg'
 */
export const getImageFileName = (url: string): string => {
  if (!url) return ''
  const parts = url.split('/')
  return parts[parts.length - 1]
}
