// app.js
import {
  userLogin,
  getMyInfo
} from '~/api/user'
import {
  createStoreBindings
} from 'mobx-miniprogram-bindings'
import {
  store
} from '~/store/index'
let storeBindings
App({
  onLaunch() {
    this.updateApplet()
    this.checkIsIos()
    this.getNavbarInfo()
  },
  async onShow(options) {
    if (!this.storeBindings) {
      this.storeBindings = createStoreBindings(this, {
        store,
        actions: ['setUser']
      })
    }
    let shareUid = options.query.uid || ''
    let uid = wx.getStorageSync('uid')
    if (uid) {
      let userInfo = await getMyInfo()
      this.setUser(userInfo.user)
      if (getApp().callBack) {
        getApp().callBack();
      }
    } else {
      this.login(shareUid)
    }
  },
  login(shareUid) {
    wx.login({
      success: async (res) => {
        if (res.code) {
          // 获取openid
          let data = {
            code: res.code,
            shareUid
          }
          let userRes = await userLogin(data)
          this.setUser(userRes.data)
          wx.setStorageSync('uid', userRes.data.uid)
          wx.setStorageSync('user', userRes.data)
          this.globalData.userInfo = userRes.data
          if (getApp().callBack) {
            getApp().callBack(userRes);
          }
        }
      }
    })
  },
  checkIsIos: function () {
    wx.getSystemInfo({
      success: (res) => {
        if (res.system.search('iOS') != -1) {
          this.globalData.isIOS = true
        }
        let {
          scene
        } = wx.getLaunchOptionsSync()
        // 1023	安卓系统桌面图标,1104微信聊天主界面下拉,「我的小程序」栏(基础库2.2.4-2.29.0版本废弃,2.29.1版本起生效) 
        if (this.globalData.isIOS ? scene != 1104 : scene != 1023) {
          let preTime = wx.getStorageSync('preDesktopTime')
          let flag = !preTime ? true : (new Date() - preTime) / 43200000 > 1 ? true : false
          if (flag || !preTime) {
            this.globalData.desktopTips = true
            wx.setStorage({
              key: "preDesktopTime",
              data: new Date()
            })
          }
        }
      }
    })
  },
  getNavbarInfo() {
    // 获取系统信息
    const systemInfo = wx.getSystemInfoSync();
    // 胶囊按钮位置信息
    const menuButtonInfo = wx.getMenuButtonBoundingClientRect();
    // 导航栏高度 = 状态栏高度 + 44
    this.globalData.navBarHeight = systemInfo.statusBarHeight + 44;
    this.globalData.menuRight = systemInfo.screenWidth - menuButtonInfo.right;
    this.globalData.menuTop = menuButtonInfo.top;
    this.globalData.menuHeight = menuButtonInfo.height;
  },
  updateApplet() {
    // 获取小程序更新机制兼容
    if (wx.canIUse('getUpdateManager')) {
      const updateManager = wx.getUpdateManager()
      updateManager.onCheckForUpdate(function (res) {
        // 请求完新版本信息的回调
        if (res.hasUpdate) {
          updateManager.onUpdateReady(function () {
            wx.showModal({
              title: '更新提示',
              content: '新版本已经准备好,是否重启应用?',
              success: function (res) {
                if (res.confirm) {
                  // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
                  updateManager.applyUpdate()
                }
              }
            })
          })
          updateManager.onUpdateFailed(function () {
            // 新的版本下载失败
            wx.showModal({
              title: '已经有新版本了哟~',
              content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~',
            })
          })
        }
      })
    }
  },
  globalData: {
    userInfo: null,
    isIOS: false, // 判断设备是否为苹果
    desktopTips: false,
    navBarHeight: 0, // 导航栏高度
    menuRight: 0, // 胶囊距右方间距(方保持左、右间距一致)
    menuTop: 0, // 胶囊距底部间距(保持底部间距一致)
    menuHeight: 0, // 胶囊高度(自定义内容可与胶囊高度保证一致)
  }
})