
import gameToast from "../Network/gameToast"
import utils from "../Network/netUtils";
cc.Class({
    extends: cc.Component,

    properties: {
    },

    // LIFE-CYCLE CALLBACKS:

    onLoad() {
        cc.view.enableAutoFullScreen(false);
        cc.game.addPersistRootNode(this.node);
        let _self = this;

        async function dappInit() {
            let dapp = GlobalD.dapp = new Dapp()
            // gameToast.getInstance().show("loding...",5,()=>{
            //     console.log("finish toast!");
            // },_self);
            try {
                console.log('开始初始化dapp！')
                const isTestNet = window['isTestNet'];
                await dapp.init(isTestNet)
                console.log("用户当前钱包地址:" + dapp.getAddress()) // 初始化成功，得到用户当前钱包地址
                dapp.onAccountChanged((account) => {
                    console.log('当前钱包地址发生变化', account.address) // 用户钱包地址即为登录账户，使用过程中用户可以切换钱包地址，即游戏要进行当前地址退出登录，新地址重新登录的操作
                    // this.address = account.address
                    //跳回login 页面
                    cc.director.loadScene('Login', function () {
                        //重新初始化信息
                        console.log('onAccountChanged Login');
                        dappInit();
                    }.bind(this));
                })

                dapp.onNetworkChanged((node) => {
                    console.log('当前钱包节点发生变化', node) // 切换网络，一般可以不处理，实际用户端一般不会切换
                    //跳回login 页面
                    cc.director.loadScene('Login', function () {
                        //重新初始化信息
                        console.log('onNetworkChanged Login');
                        dappInit();
                    }.bind(this));
                })

                // 获取用户信息 
                const { err, res } = await dapp.userInfo()
                if (err === null) {
                    // 返回成功，见下面消息体
                    console.log(res)
                    GlobalD.Dapp.UserInfo = res;
                    // GameNet.getInstance().init(res.id, (data) => {
                    //     console.log('GameNet:' + data);
                    // }, _self);

                    const dappLoginData = await dapp.getLoginSign();
                    GlobalD.Dapp.signData = JSON.stringify(dappLoginData)
                    
                    // console.log("dappLoginData:"+JSON.stringify(dappLoginData));

                   let _temp = {
                        "address": dappLoginData.address, // 签名地址
                        "id": dappLoginData.id, // 所属账户ID
                        "signature": dappLoginData.signature, // 签名文本
                        "timestamp": dappLoginData.timestamp // 签名时间戳，需要在1分钟内完成验签，否则本次签名失效
                    };
                    // let _temp = {
                    //     "address": "TDw6xsVnDJWsdRBLkWAwXbv4hE2X2JQs5z", // 签名地址
                    //     "id": 1, // 所属账户ID
                    //     "signature": "0x09fda37fcad4a9bb7b72f652323881a33847be3a44e4403c7a576b3383df30ec6e5e256f28fbdbac5eb0642f304f331783f36d70b5e6fd576818bc42e14624191c", // 签名文本
                    //     "timestamp": 1641279989 // 签名时间戳，需要在1分钟内完成验签，否则本次签名失效
                    // };

                    utils.post(utils.api.loginTokenAndVerification, _temp, (res, value) => {
                        console.log("loginTokenAndVerification========>" + JSON.stringify(_temp));
                        console.log(res, value);
                    })

                    utils.get(utils.api.loginToken, { loginId: GlobalD.Dapp.UserInfo.id }, (res, value) => {
                        if (value.code == 0) {
                            /** 登录成功获取token */
                            utils.setToken(value.data.token);
                            /** 推送信息 */
                            utils.get(utils.api.playerPullInfo, {}, (res, playerPullInfoTemp) => {
                                let _playerData = JSON.parse(playerPullInfoTemp.data.playerData);
                                //记录读取的数据到内存里面
                                // 正常游戏
                                userData.readData = _playerData;
                                //跳转游戏
                                cc.find("Canvas").getComponent("Login").loginButton();

                                // GameNet.getInstance().init(GlobalD.Dapp.UserInfo.id, (data) => {
                                //     console.log('GameNet:' + data);
                                // }, _self);
                                utils.init(GlobalD.Dapp.UserInfo.id, (data) => {
                                    console.log('utils ws:' + data);
                                }, _self);
                            })
                        } else {
                            console.log(res, value);
                        }
                    })
                } else {
                    //TODO 服务错误
                    console.log("dappInit userInfo 错误");
                    console.log(err)
                }
                // try {
                //     const data = await dapp.getLoginSign()
                //     console.log(data)
                //     // this.signData = JSON.stringify(data)
                // } catch (err) {
                //     console.log(err)
                //     alert('为了避免游戏资产被人乱用，还是校验下身份再进入游戏吧')
                // }


            } catch (err) {
                console.log('catch到的错误:' + err) // 初始化失败，运行环境不是钱包环境
            }
        }
        //初始化调用 dappInit;
        dappInit();
    },

    start() {

    },

    // update (dt) {},
});
