// WXS 时间格式化桥接 — WXML 中不能调用 TS/JS 模块，需通过 WXS 桥接
// 规范：docs/miniprogram-dev/design-system/DATETIME-DISPLAY-STANDARD.md
//
// 规则：
//   < 120s       -> 刚刚
//   2~59min      -> N分钟前
//   1~23h        -> N小时前
//   1~3d         -> N天前
//   >3d 同年     -> MM-DD
//   >3d 跨年     -> YYYY-MM-DD

function relativeTime(value) {
  if (value === undefined || value === null || value === '') return '--'

  var ts
  if (typeof value === 'number') {
    ts = value
  } else {
    var parsed = getDate(value)
    ts = parsed.getTime()
    if (isNaN(ts)) return '--'
  }

  var now = getDate().getTime()
  var diff = Math.floor((now - ts) / 1000)

  if (diff < 120) return '刚刚'
  if (diff < 3600) return Math.floor(diff / 60) + '分钟前'
  if (diff < 86400) return Math.floor(diff / 3600) + '小时前'
  if (diff < 259200) return Math.floor(diff / 86400) + '天前'

  var date = getDate(ts)
  var nowDate = getDate(now)
  var year = date.getFullYear()
  var nowYear = nowDate.getFullYear()
  var month = date.getMonth() + 1
  var day = date.getDate()
  var mm = month < 10 ? '0' + month : '' + month
  var dd = day < 10 ? '0' + day : '' + day

  if (year === nowYear) return mm + '-' + dd
  return year + '-' + mm + '-' + dd
}

// IM 气泡内时间戳格式
// 今天内      -> HH:mm
// 今年非今天  -> MM-DD HH:mm
// 跨年        -> YYYY-MM-DD HH:mm
function imTime(value) {
  if (value === undefined || value === null || value === '') return ''

  var ts
  if (typeof value === 'number') {
    ts = value
  } else {
    var parsed = getDate(value)
    ts = parsed.getTime()
    if (isNaN(ts)) return ''
  }

  var date = getDate(ts)
  var now = getDate()
  var hh = date.getHours()
  var mn = date.getMinutes()
  var hhStr = hh < 10 ? '0' + hh : '' + hh
  var mnStr = mn < 10 ? '0' + mn : '' + mn
  var timeStr = hhStr + ':' + mnStr

  var isSameDay =
    date.getFullYear() === now.getFullYear() &&
    date.getMonth() === now.getMonth() &&
    date.getDate() === now.getDate()
  if (isSameDay) return timeStr

  var month = date.getMonth() + 1
  var day = date.getDate()
  var mm = month < 10 ? '0' + month : '' + month
  var dd = day < 10 ? '0' + day : '' + day
  if (date.getFullYear() === now.getFullYear()) return mm + '-' + dd + ' ' + timeStr
  return date.getFullYear() + '-' + mm + '-' + dd + ' ' + timeStr
}

module.exports = {
  relativeTime: relativeTime,
  imTime: imTime,
}
