// app.js
import {
    loginLog,
    userLogin,
    getMyInfo,
    bindDevice
} from '~/api/user'
import {
    createStoreBindings
} from 'mobx-miniprogram-bindings'
import {
    store
} from '~/store/index'
let storeBindings
App({
    async onLaunch() {
        this.updateApplet()
        this.checkIsIos()
        this.getNavbarInfo()
        await loginLog()
    },
    async onShow(options) {
        if (!this.storeBindings) {
            this.storeBindings = createStoreBindings(this, {
                store,
                actions: ['setUser']
            })
        }
        let {
            path,
            scene,
            query
        } = wx.getEnterOptionsSync()
        //判断是不是扫海报进入
        if (query.scene && [1047, 1048].includes(scene) && path == 'pages/index/index') {
            let params = decodeURIComponent(query.scene).split('&')
            if (params.length == 1) {
                this.login(params[0])
            } else {
                this.login()
            }
        } else {
            let shareUid = options.query.uid || ''
            let userChannelCode = '3001'
            if ([1045, 1046, 1084].includes(scene)) {
                console.log("朋友圈广告进入");
                userChannelCode = '4001'
            }
            this.login(shareUid, userChannelCode)
        }
    },
    async login(shareUid, userChannelCode = '3001') {
        let uid = wx.getStorageSync('uid')
        if (uid) {
            let userInfo = await getMyInfo()
            this.setUser(userInfo.user)
            this.globalData.userInfo = userInfo.user
            this.deviceLogin()
            if (getApp().callBack) {
                getApp().callBack();
            }
        } else {
            wx.getMiniProgramCode({
                success: async (res) => {
                    if (res.code) {
                        // 获取openid
                        let data = {
                            code: res.code,
                            userChannelCode
                        }
                        if (shareUid != 'undefined' && shareUid) {
                            data.shareUid = 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
                        this.deviceLogin()
                        if (getApp().callBack) {
                            getApp().callBack(userRes);
                        }
                    }
                }
            })
        }
    },
    checkIsIos: function () {
        wx.getSystemInfo({
            success: (res) => {
                // 设备显示区域的宽度，单位px
                this.globalData.windowWidth = res.windowWidth
                this.globalData.windowHeight = res.windowHeight
                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 (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()
                        })
                    }
                }
            }
        })
    },
    // 音箱端登录
    deviceLogin() {
        let {
            path,
            scene,
            query
        } = wx.getEnterOptionsSync()
        // 1047	扫描小程序码	1048长按图片识别小程序码
        var gradeObj = Object.keys({
            "PRESCHOOL": "学前班",
            "PRIMARY_FIRST_GRADE": "一年级",
            "PRIMARY_SECOND_GRADE": "二年级",
            "PRIMARY_THREE_GRADE": "三年级",
            "PRIMARY_SENIOR_GRADE": "四年级",
            "PRIMARY_FIVE_GRADE": "五年级",
            "PRIMARY_SIX_GRADE": "六年级",
        })
        if (query.scene && [1047, 1048].includes(scene) && path == 'pages/index/index') {
            let params = decodeURIComponent(query.scene).split('&')
            if (params.length > 1) {
                bindDevice({
                    deviceCode: params[0],
                    channelCode: params[1],
                    grade: gradeObj[params[2]],
                    uid: wx.getStorageSync('uid')
                }).then(res => {
                    console.log(res);
                })
            }
        }
    },
    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, // 胶囊高度（自定义内容可与胶囊高度保证一致）
        windowWidth: 0,
        windowHeight: 0
    }
})