Page({

  /**
   * 页面的初始数据
   */
  data: {
    booShow: false,
    actions: [
      {
        name: '呼叫',
        value: 'makePhoneCall'
      },
      {
        name: '复制号码',
        value: 'setClipboardData'
      },
      {
        name: '添加到手机通讯录',
        value: 'addPhoneContact'
      }
    ],
    businessInfo: {
      phone: '13429176706'
    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },
  showActionSheet() {
    this.setData({ booShow: true })
  },
  hideActionSheet() {
    this.setData({ booShow: false })
  },
  async onSelect(event) {
    const { value } = event.detail
    const { businessInfo } = this.data
    this.hideActionSheet()
    switch (value) {
      case 'makePhoneCall':
        try {
          await wx.makePhoneCall({ phoneNumber: businessInfo.phone })
        } catch (err) {}
        break
      case 'setClipboardData':
        try {
          await wx.setClipboardData({ data: businessInfo.phone })
        } catch (err) {}
        break
      case 'addPhoneContact':
        this.handleGetSetting()
        break
      default:
    }
  },
  // 获取添加手机通讯录联系人权限
  async handleGetSetting() {
    const that = this

    try {
      const { errMsg, authSetting } = await wx.getSetting()
      if (errMsg === 'getSetting:ok') {
        if (authSetting['scope.addPhoneContact']) {
          await that.addPhoneContactBridge()
          return
        }
      }
    } catch (err) {}

    try {
      await wx.authorize({ scope: 'scope.addPhoneContact' })
      await that.addPhoneContactBridge()
    } catch (err) {
      wx.showModal({
        title: '提示',
        content: '未开启添加手机通讯录联系人权限，去设置中打开',
        success(res) {
          if (res.confirm) {
            that.openSetting()
          }
        }
      })
    }
  },
  // 去小程序自带设置页：返回
  async openSetting() {
    try {
      const openSettingData = await wx.openSetting()
      if (openSettingData.authSetting['scope.addPhoneContact']) {
        await this.addPhoneContactBridge()
      }
    } catch (err) {}
  },
  async addPhoneContactBridge() {
    const { businessInfo } = this.data

    try {
      await wx.addPhoneContact({
        firstName: 'businessInfo.phone',
        mobilePhoneNumber: businessInfo.phone
      })
    } catch (err) {}
  },
  async openLocationBridge() {
    try {
      // 测试 latitude: 30.25727 longitude: 120.20523
      await wx.openLocation({
        latitude: 30.25727,
        longitude: 120.20523,
        name: '浙江省杭州市余杭区'
      })
    } catch (err) {}
  }
})
