/**
 * 设备检测工具函数
 */

import Decimal from 'decimal.js'

/**
 * 检测是否为移动端设备
 * @param userAgent - 用户代理字符串，可选
 * @returns 是否为移动端设备
 */
export function isMobileDevice(userAgent?: string): boolean {
  // 服务端环境，使用传入的 userAgent
  if (typeof window === 'undefined') {
    if (!userAgent) return false
    return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(userAgent)
  }

  // 客户端环境，使用 navigator.userAgent
  const ua = userAgent || window.navigator.userAgent

  // 检测移动设备的正则表达式
  const mobileRegex = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i

  // 也可以通过屏幕宽度来判断
  const isSmallScreen = window.innerWidth <= 768

  return mobileRegex.test(ua) || isSmallScreen
}

/**
 * 检测是否为微信浏览器
 */
export function isWeChatBrowser(userAgent?: string): boolean {
  const ua = userAgent || (typeof window !== 'undefined' ? window.navigator.userAgent : '')
  return /MicroMessenger/i.test(ua)
}

/**
 * 检测是否为iOS设备
 */
export function isIOSDevice(userAgent?: string): boolean {
  const ua = userAgent || (typeof window !== 'undefined' ? window.navigator.userAgent : '')
  return /iPad|iPhone|iPod/.test(ua)
}

/**
 * 检测是否为Android设备
 */
export function isAndroidDevice(userAgent?: string): boolean {
  const ua = userAgent || (typeof window !== 'undefined' ? window.navigator.userAgent : '')
  return /Android/.test(ua)
}
