<script>
import { nextTick } from 'vue'
import { AppType } from './utils/constant.js'
import util from './utils/util.js'

export default {
  onLaunch: function () {
    // #ifdef APP-PLUS
    // APP模式下保持竖屏
    // eslint-disable-next-line no-console
    console.log('mall4j.v240115')
    // eslint-disable-next-line no-undef
    plus.screen.lockOrientation('portrait-primary')
    uni.getSystemInfo({
      success: (sysInfo) => {
        if (sysInfo.platform === 'android') {
          uni.setStorageSync('cloudAppType', AppType.ANDROID)
        } else {
          uni.setStorageSync('cloudAppType', AppType.IOS)
        }
      }
    })
    // #endif
    // #ifdef H5
    uni.getSystemInfo({
      success: function (res) {
        // 客户端平台，值域为：ios、android
        if (res.platform === 'ios') {
          uni.setStorageSync('cloudIosUrl', window.location.href.split('#')[0])
        }
      }
    })
    // #endif

    // #ifdef H5
    // 判断浏览器环境
    uni.setStorageSync('cloudAppType', AppType.H5) // 普通H5
    const ua = navigator.userAgent.toLowerCase()
    if (ua.search(/MicroMessenger/i) > -1) {
      // 微信环境
      uni.setStorageSync('cloudAppType', AppType.MP)
    }
    // #endif

    // #ifdef MP-WEIXIN
    uni.setStorageSync('cloudAppType', AppType.MINI)
    // 检查小程序版本
    this.checkMiniUpdate()
    // #endif
    // 进入应用时清除重定向地址
    uni.removeStorageSync('cloudRouteUrlAfterLogin')
    // 进入应用时清除地区缓存
    uni.removeStorageSync('cloudProvArray')
    // 微信环境统一登录方法
    util.weChatLogin()
    nextTick(() => {
      // 获取网站配置
      util.getWebConfig()

      // 获取并更新通联支付配置
      const params = {
        url: '/tmerclub_admin/ua/app/sys_config/pay_settlement_type',
        method: 'GET'
      }
      http.request(params).then((res) => {
        if (res) {
          uni.setStorageSync('cloudPaySettlementType', JSON.parse(res).paySettlementType || 0)
        }
      })
    })
    // #ifndef H5
    uni.getSystemInfo({
      success: function (res) {
        // px转换到rpx的比例
        const pxToRpxScale = 750 / res.windowWidth
        const systems = {
          ktxStatusHeight: res.statusBarHeight * pxToRpxScale, // 状态栏的高度
          navigationHeight: 44 * pxToRpxScale, // 导航栏的高度
          ktxWindowWidth: res.windowWidth * pxToRpxScale, // window的宽度
          ktxWindowHeight: res.windowHeight * pxToRpxScale, // window的高度
          ktxScreentHeight: res.screenHeight * pxToRpxScale // 屏幕的高度
        }
        provide('$system', systems)
        provide('$lineHeight', systems.ktxStatusHeight + systems.navigationHeight)
      }
    })
    // #endif
  },
  onShow: function (options) {
    // #ifdef MP-WEIXIN
    // 通联支付从通联微信小程序返回后接收的参数
    if (uni.getStorageSync('cloudPaySettlementType') !== 1) {
      // 非通联支付模式下不处理
      return
    }
    if (options.referrerInfo && options.referrerInfo.extraData) {
      let backMerchantUrl = options.referrerInfo.extraData.backMerchantUrl
      if (backMerchantUrl) {
        backMerchantUrl = decodeURIComponent(backMerchantUrl)
        const result = backMerchantUrl.split('?')[1].split('&')
        const query = {}
        for (let i = 0; i < result.length; i++) {
          const item = result[i].split('=')
          query[item[0]] = item[1]
        }
        if (Number(query.isSignSuccess) === 1 && query.bizContent) {
          // 获取内存中的签约编号
          const acctProtocolNo = uni.getStorageSync('cloudAllinpayAcctProtocolNo')
          const bizContent = JSON.parse(decodeURIComponent(query.bizContent))
          if (bizContent.acctProtocolNo !== acctProtocolNo) {
            uni.showToast({
              title: '签约成功',
              icon: 'none'
            })
            uni.setStorageSync('cloudAllinpayAcctProtocolNo', bizContent.acctProtocolNo)
          }
        } else if (Number(query.isSignSuccess) === 0) {
          uni.showToast({
            title: '签约失败',
            icon: 'none'
          })
        }
      }
    }
    // #endif
    // #ifdef APP-PLUS
    // 通联支付从通联APP返回后接收的参数
    // eslint-disable-next-line no-undef
    const args = plus.runtime.arguments
    if (args) {
      // 处理args参数的逻辑代码，如直达到某新页面等
      if (uni.getStorageSync('cloudPaySettlementType') !== 1) {
        // 非通联支付模式下不处理
        return
      }
      const result = args.split('?')[1].split('&')
      const query = {}
      for (let i = 0; i < result.length; i++) {
        const item = result[i].split('=')
        query[item[0]] = item[1]
      }
      if (query.isBuyVip === '0' || query.isBuyVip === '1') {
        // 如果是购买会员，则跳转到会员中心
        uni.navigateTo({
          url: '/package-activities/pages/member-center/member-center'
        })
      }
      // eslint-disable-next-line no-undef
      plus.runtime.arguments = '' // 清空参数防止多次进入
    }
    // #endif
  },
  // 页面不存在时触发
  onPageNotFound: function () {
    uni.reLaunch({
      url: '/pages/index/index'
    })
  },
  globalData: {
    // 定义全局请求队列
    requestQueue: [],
    // 埋点请求队列
    flowRequestQueue: [],
    // 是否正在进行登陆
    isLanding: false,
    // 购物车商品数量
    totalCartCount: 0,
    // 当前请求数量
    currentReqCounts: 0,
    // 设备信息
    sysInfo: {},
    // 直播间socket任务
    imSocketTask: null,
    /**
     * 由于浏览器的flash支持问题,h5暂不兼容rtmp
     * 小程序&h5支持flv和m3u8播放(小程序播放flv采用web-view方式引入，必须发布h5才可使用)，app3个都支持
     * 若想小程序支持3个类型播放，可申请live-player播放组件
     */
    // 直播播放类型 1.rtmp 2.flv 3.m3u8
    livePlayType: 2,
    // 小程序是否使用live-player进行播放
    useLivePlayer: false // 使用live-player播放器
  },
  methods: {
    /**
     * 微信小程序检查升级
     */
    checkMiniUpdate () {
      const updateManager = wx.getUpdateManager()
      updateManager.onUpdateReady(function () {
        wx.showModal({
          title: '更新提示',
          content: '新版本已经准备好，是否重启应用？',
          success: function (res) {
            if (res.confirm) {
              // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
              updateManager.applyUpdate()
            }
          }
        })
      })
      updateManager.onUpdateFailed(function () {
        // 新版本下载失败
        uni.showToast({
          title: '新版本下载失败,请重试',
          duration: 2000,
          icon: 'none'
        })
      })
    }
  }
}
</script>
<!-- eslint-disable-next-line vue-scoped-css/enforce-style-type -->
<style>
/* #ifndef APP-PLUS-NVUE */
@import url("./app.css");
/* #endif */
</style>
