/* eslint-disable */
var versionInfo = ''
var bridge // 用于调用C++接口的对象
    // 改造监听localstorage
var orignalSetItem = localStorage.setItem
localStorage.setItem = function(key, newValue) {
    var setItemEvent = new Event('setItemEvent')
    setItemEvent.key = key
    setItemEvent.newValue = newValue
    window.dispatchEvent(setItemEvent)
    orignalSetItem.apply(this, arguments)
}
localStorage.setItem('historyLength', 0)
new QWebChannel(
    qt.webChannelTransport,
    function(channel) {
        bridge = channel.objects.mychannel
        bridge.is_test(function(returnValue) {
            console.log(returnValue, 'istest—environment')
            is_test = returnValue
        })

        bridge.get_data('userInfo', function(returnValue) {
            let userInfo = returnValue ? JSON.parse(returnValue) : {
                userId: 0,
                phone: '',
                nickname: '未登录',
                headUrl: '',
                email: ''
            }
            localStorage.setItem('userId', parseInt(userInfo.userId))
            localStorage.setItem('userInfoLocal', JSON.stringify(userInfo))
            if (userInfo.userId) {
                setTimeout(() => {
                    localStorage.setItem('hasLogined', true)
                }, 250)
            }
        })

        // 获取客户端系统信息
        bridge.get_system_info(function(returnValue) {
            console.log(returnValue)
            localStorage.setItem('systemInfo', returnValue)
        })


        bridge.get_data('history', function(returnValue) {
            localStorage.setItem('historyArr', returnValue)
        })

        // 删除以前的登录数据
        bridge.delete_data('email')
        bridge.delete_data('headUrl')
        bridge.delete_data('nickname')
        bridge.delete_data('phone')
        bridge.delete_data('userId')
    }
)

function on_app_exit() {
    localStorage.removeItem('userInfoLocal')
    localStorage.removeItem('historyLength')
    localStorage.removeItem('userId')
    if (bridge) {
        let historyArr = localStorage.getItem('historyArr')
        bridge.save_data('history', historyArr)
    }
}
// 通知回调
function notifyState(type, value) {
    var result = {
        type: type,
        value: value
    }
    localStorage.setItem('notifyState', result)
}
// 接受websocket回调
function websocketMsg(msgInfo) {
    localStorage.setItem('websocketMsg', msgInfo)
}
// 游戏已被彻底关闭通知
function gameClosedTotally(gameId) {
    localStorage.setItem('gameClosedTotally', gameId)
}
// 游戏大床排队成功进入游戏回调
function queueSuccessStratGame() {
    localStorage.setItem('queueSuccessStratGame', true)
}
// 是否监听窗口变化
function notifyWindowStateChanged(isMaximized) {
    localStorage.setItem('isMaxWindow', isMaximized)
}
// 蒙层关闭
function hideShadow() {
    $('#clientShadow').remove()
}
// 开通会员
function notifyMemberState(memberState) {
    console.log('-------用户开通会员-----')
    localStorage.setItem('notifyMemberState', memberState)
}
// 开通通时长
function notifyAddPlayTime() {
    console.log('-------用户开通时长包-----')
    localStorage.setItem('notifyAddPlayTime', true)
}
// 用户登陆
function logIn(userInfo) {
    console.log('-------用户登陆-----')
    localStorage.setItem('userId', userInfo.userId)
    localStorage.setItem('userInfoLocal', JSON.stringify(userInfo))
    localStorage.setItem('isLoginSuccess', true)
        // 删除以前的登录数据
    if (bridge) {
        bridge.delete_data('email')
        bridge.delete_data('headUrl')
        bridge.delete_data('nickname')
        bridge.delete_data('phone')
        bridge.delete_data('userId')
    }
}
// 拉起最近在玩游戏
function openLatestGame() {
    localStorage.setItem('openLatestGame', true)
}
// 拉起详情页跳转至评测位置
function closeGame(gameId) {
    localStorage.setItem('closeGame', gameId)
}
// 退出登陆
function logOut() {
    console.log('-------用户强制退出登陆-----')
    localStorage.setItem('logOut', true)
}
// 关闭登录弹窗
function closeLoginWindow() {
    localStorage.setItem('closeLoginWindow', true)
}
// 展示更新信息
function show_update_info(msg) {
    localStorage.setItem('versionInfo', msg)
}
// push页面跳转
function pushLinkInfo(info) {
    localStorage.setItem('pushLinkInfo', info)
}
// 测速回调
function testSpeedResult(speedInfo) {
    localStorage.setItem('speedInfo', speedInfo)
}
// 跳转游戏详情页拉起下载
function openDownloadModal(gameId) {
    localStorage.setItem('openDownload', gameId)
}
// 邀新按钮-拉起游戏详情页，定位新手引导
function openGameDetail(gameId) {
    bridge.get_data('hasClickedGuidance', function(value) {
        var hasClickedGuidanceList = value ? JSON.parse(value) : []
        if (hasClickedGuidanceList) {
            hasClickedGuidanceList.map((item, index) => {
                if (item == '8-2') {
                    hasClickedGuidanceList.splice(index, 1)
                    bridge.save_data('hasClickedGuidance', JSON.stringify(hasClickedGuidanceList))
                }
            })
        }
        setTimeout(() => {
            localStorage.setItem('openGameDetail', gameId)
        }, 500)
    })
}
// 调起排队小窗口、
function openWaitModal(msg) {
    console.log(msg)
    localStorage.setItem('openWaitTab', JSON.stringify(msg))
}
// 账号排队通知剩余人数
function notifyAccountQueueNum(account_num) {
    localStorage.setItem('accountQueueNum', account_num)
}
// 与close2()配合使用意见反馈（去看看跳转到本地玩标签列表）参数为0  + 会员参数为1
// 与close4(【'game'+gameId】) 配合使用跳转游戏详情页 参数为【'game'+gameId】
// 与close4(【'label'+labelId+labelName】) 配合使用跳转标签搜索页 参数为【'label'+labelId+labelName】
// 与close4(【'mail'+type+...】) 配合使用跳转站内信页 参数为【'mail'+type+...】
function urlCallback(type) {
    localStorage.setItem('urlCallBack', type)
}
// 打开游戏详情页并启动游戏
function outsideStartGame(gameId) {
    localStorage.setItem('outsideStartGame', gameId)
}
// 通知商店扫描本地游戏结果
function scanLocalGameResult(result) {
    localStorage.setItem('localProgramList', result)
}
// 通知商店扫描本地文件地址
function scanLocalAddress(address) {
    localStorage.setItem('scanLocalAddress', address)
}
// 拉起游戏进度
function openGameState() {
    localStorage.setItem('openGameState', 'close')
}
// 下载请求校验进度 + 解压缩进度
function updateDownloadStatus(msg) {
    localStorage.setItem('updateDownloadStatus', msg)
}
// 游戏进度
function getDownloadInfo(msg) {
    localStorage.setItem('downloadMsg', msg)
}
// 通知商店清空下载游戏
function notifyRemoveAllGame() {
    localStorage.setItem('removeAllGame', true)
}
// 回调事件
function eventCallBack(name, value) {
    localStorage.setItem(name, value)
}

// 反转数组
function reverse(array) {
    for (var i = 0; i < array.length / 2; i++) {
        var temp = array[i]
        array[i] = array[array.length - 1 - i]
        array[array.length - 1 - i] = temp
    }
    return array // Array对象中的方法返回了一个数组。
}

// 将时间格式化为yyyyMMddHHmmssSSS
Date.prototype.format = function(fmt) { // author: meizz
    var o = {
        'M+': this.getMonth() + 1, // 月份
        'd+': this.getDate(), // 日
        'H+': this.getHours(), // 小时
        'm+': this.getMinutes(), // 分
        's+': this.getSeconds(), // 秒
        'q+': Math.floor((this.getMonth() + 3) / 3), // 季度
        'S+': this.getMilliseconds() // 毫秒
    }
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length))
    for (var k in o) { if (new RegExp('(' + k + ')').test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length))) }
    return fmt
}