/**
 * 头像工具函数
 * 使用 DiceBear API 自动生成默认头像
 */

// DiceBear 头像风格
export type AvatarStyle =
  | 'initials'      // 首字母风格
  | 'avataaars'     // 卡通人物风格
  | 'bottts'        // 机器人风格
  | 'pixel-art'     // 像素风格
  | 'identicon'     // GitHub风格的几何图案
  | 'thumbs'        // 拇指风格
  | 'shapes'        // 几何形状风格

export interface AvatarOptions {
  style?: AvatarStyle
  backgroundColor?: string
  textColor?: string
  size?: number
}

const defaultOptions: AvatarOptions = {
  style: 'initials',
  backgroundColor: '01412b',  // 深绿色主题（与侧边栏一致）
  textColor: 'ffffff',
  size: 64,
}

/**
 * 生成 DiceBear 头像 URL
 * @param seed - 用于生成头像的种子值（通常是用户名或ID）
 * @param options - 头像配置选项
 * @returns 头像 URL
 */
export function generateAvatarUrl(seed: string, options?: AvatarOptions): string {
  const opts = { ...defaultOptions, ...options }
  const params = new URLSearchParams()

  params.set('seed', seed)

  if (opts.backgroundColor) {
    params.set('backgroundColor', opts.backgroundColor)
  }

  if (opts.style === 'initials' && opts.textColor) {
    params.set('textColor', opts.textColor)
  }

  if (opts.size) {
    params.set('size', opts.size.toString())
  }

  return `https://api.dicebear.com/7.x/${opts.style}/svg?${params.toString()}`
}

/**
 * 获取用户头像 URL
 * 如果用户有自定义头像则返回自定义头像，否则自动生成默认头像
 * @param user - 用户对象
 * @param options - 头像配置选项
 * @returns 头像 URL
 */
export function getUserAvatar(
  user: { avatar?: string | null; username?: string; nickname?: string; id?: number } | null | undefined,
  options?: AvatarOptions
): string {
  // 如果用户有自定义头像，直接返回
  if (user?.avatar) {
    return user.avatar
  }

  // 否则根据用户名或昵称生成默认头像
  const seed = user?.username || user?.nickname || user?.id?.toString() || 'user'
  return generateAvatarUrl(seed, options)
}

/**
 * 生成随机颜色的头像
 * @param seed - 用于生成头像的种子值
 * @param style - 头像风格
 * @returns 头像 URL
 */
export function generateRandomAvatar(seed: string, style: AvatarStyle = 'initials'): string {
  return `https://api.dicebear.com/7.x/${style}/svg?seed=${encodeURIComponent(seed)}`
}
