import { formatDate } from '@vueuse/shared'
export const isNullOrBlank = (string: string | null | undefined | number) =>
  string == null ||
  (string as string).length === 0 ||
  /^\s+$/.test(string as string)

export const isLegadoUrl = (/** @type {string} */ url: string) =>
  /,\s*\{/.test(url) ||
  !(
    url.startsWith('http') ||
    url.startsWith('data:') ||
    url.startsWith('blob:')
  )

/**
 * 验证输入的URL是否符合阅读后端地址规则
 * @param allowedProtocols 允许的协议,默认`["https:", "http:"]`
 */
export const validatorHttpUrl = (
  http_url: string | URL,
  allowedProtocols: string[] = ['https:', 'http:'],
) => {
  try {
    const url = new URL(http_url)
    const { protocol } = url
    if (!allowedProtocols.includes(protocol))
      throw new Error(
        `Expected protocol ${allowedProtocols.join('/')}, but ${protocol}`,
      )
    return true
  } catch {
    return false
  }
}

export const dateFormat = (/** @type {number} */ t: number) => {
  const time = new Date().getTime()
  const offset = Math.floor((time - t) / 1000)
  let str = ''

  if (offset <= 30) {
    str = '刚刚'
  } else if (offset < 60) {
    str = offset + '秒前'
  } else if (offset < 3600) {
    str = Math.floor(offset / 60) + '分钟前'
  } else if (offset < 86400) {
    str = Math.floor(offset / 3600) + '小时前'
  } else if (offset < 2592000) {
    str = Math.floor(offset / 86400) + '天前'
  } else {
    str = formatDate(new Date(t), 'YYYY-MM-DD')
  }
  return str
}