/**
 * 图片预览 Hook
 * 支持本地图片（自动转 base64）和网络图片
 */
export function useImagePreview(defaultImageUrl: string) {
  /**
   * 预览图片
   * @param imageUrl 图片地址，不传则使用默认图片
   */
  const preview = (imageUrl?: string | Event) => {
    // 处理事件对象或非字符串参数
    const url = (typeof imageUrl === 'string') ? imageUrl : defaultImageUrl

    // 判断是否为网络图片
    if (url.startsWith('http://') || url.startsWith('https://')) {
      uni.previewImage({
        urls: [url]
      })
    } else {
      // 本地图片转 base64 后预览
      uni.getFileSystemManager().readFile({
        filePath: url,
        encoding: 'base64',
        success: (res) => {
          // 根据后缀判断图片类型
          const ext = url.split('.').pop()?.toLowerCase() || 'png'
          const mimeType = ext === 'jpg' || ext === 'jpeg' ? 'image/jpeg' : `image/${ext}`
          const base64Url = `data:${mimeType};base64,${res.data}`
          uni.previewImage({
            urls: [base64Url]
          })
        },
        fail: (err) => {
          console.error('读取图片失败:', err)
        }
      })
    }
  }

  return {
    preview
  }
}
