// 用来保存图片的函数
//  params: 需要授权的内容
// scope.userInfo   	用户信息
// scope.userLocation  	地理位置
// scope.userLocationBackground 	后台定位	微信小程序
// scope.address	 	通信地址
// scope.record 		录音功能
// scope.writePhotosAlbum	  	保存到相册	抖音小程序的返回值是scope.album
// scope.camera 	摄像头
// scope.invoice		获取发票
// scope.invoiceTitle		发票抬头
// scope.werun	wx.getWeRunData	微信运动步数
const scopeList = {
  userInfo: 'scope.userInfo',
  userLocation: 'scope.userLocation',
  userLocationBackground: 'scope.userLocationBackground',
  address: 'scope.address',
  record: 'scope.record',
  writePhotosAlbum: 'scope.writePhotosAlbum',
  camera: 'scope.camera',
  invoice: 'scope.invoice',
  invoiceTitle: 'scope.invoiceTitle',
  werun: 'scope.werun',
}
const authorize = ({
  scope,
  successfn,
  failfn,
}) => {
  if (!scopeList[scope]) {
    uni.showToast({
      title: 'scope参数错误',
      icon: 'error'
    })
    return
  }
  uni.authorize({
    scope: scopeList[scope],
    success() {
      successfn()
    },
    fail() {
      failfn()
    }
  })
}

// 检验手机号格式
const checkPhone = (phone) => {
  if (!phone || !/^1[3-9]\d{9}$/.test(phone)) {
    return false
  }
  return true;
}

// 转换时间戳为yyyy-mm-dd
// params： 时间戳
// return yyyy-mmm-dd
const formatTime = (time) => {
  if (!time) {
    return '时间格式错误，需要传入时间戳'
  }
  const date = new Date(time)
  const year = date.getFullYear()
  const month = String(date.getMonth() + 1).padStart(2, '0')
  const day = String(date.getDate()).padStart(2, '0')
  return `${year}-${month}-${day}`
}

// 计算yyyy-mm-dd与当前时间的差值
// params： yyyy-mm-dd格式的字符串
// return： 差值（天）
const calculateDateDifference = (dateString) => {
  if (!dateString) {
    return '时间格式错误，需要传入yyyy-mm-dd格式的字符串'
  }
  // 传入值为yyyy-mm-dd格式的字符串
  const inputDate = new Date(dateString)
  // 化为时间戳
  // const inputTime = inputDate.getTime()
  const currentDate = new Date()
  const timeDifference = inputDate - currentDate  
  
  if (!(currentDate.setHours(0, 0, 0, 0) - inputDate.setHours(0, 0, 0, 0))) {
    return 0
  }
  // 如果为负 返回-1
  if (timeDifference < 0) {
    return -1
  }
  // 计算天数
  const dayDifference = Math.ceil(timeDifference / (1000 * 60 * 60 * 24))
  
  return dayDifference
}

export {
  authorize,
  checkPhone,
  formatTime,
  calculateDateDifference
}