zzzz
2024-04-21 3f3e2d5977787b0c6e09cd5cba7b41e5fb7d3fd0
src/store/modules/user.js
@@ -1,128 +1,160 @@
// import { getStorage, setStorage, getBrowserLang } from "@/utils/utis";
import { Toast } from "vant";
import { _register, _info, perpetualContracts } from '@/API/user.api'
import { SET_USERINFO, GET_USERINFO, SET_OUT,CONNECT_WALLET, SET_STATUS, SET_CONFIG,GET_DAPPUSERINFO } from "@/store/const.store";
import { _getBalance } from '@/API/trade.api'
import { _register, _info, perpetualContracts } from "@/API/user.api";
import {
  SET_USERINFO,
  GET_USERINFO,
  SET_OUT,
  CONNECT_WALLET,
  SET_STATUS,
  SET_CONFIG,
  GET_DAPPUSERINFO,
} from "@/store/const.store";
import { _getBalance } from "@/API/trade.api";
import i18n from "@/i18n";
import { _getIdentify } from "@/API/fund.api";
export default {
  namespaced: true,
  state: {
    status: 0, // 状态
    kyc: "",
    gasObj: {}, //
    userInfo: {
      usercode: '', //
      token: '', // 登录token
      username: '',
      usercode: "", //
      token: "", // 登录token
      username: "",
      perpetual_contracts_status: 0,
      account: '', // 钱包地址
    }
      account: "", // 钱包地址
    },
  },
  getters: {
    mingStatus: state => state.status,
    isToken: state => state.token,
    userInfo: state => state.userInfo
    mingStatus: (state) => state.status,
    isToken: (state) => state.token,
    userInfo: (state) => state.userInfo,
    kyc: (state) => state.kyc,
  },
  mutations: {
    // SET_GAS_OBJ(state,gasObj){
    //   state.gasObj=gasObj
    // },
    [SET_STATUS](state, status) { // 质押状态
    [SET_STATUS](state, status) {
      // 质押状态
      state.status = status;
    },
    [SET_USERINFO](state, info) {
      console.log('用户信息', info)
      state.userInfo = { ...state.userInfo, ...info }
      console.log("用户信息", info);
      state.userInfo = { ...state.userInfo, ...info };
    },
    [SET_OUT](state) { // 退出
      state.userInfo = {}
    [SET_OUT](state) {
      // 退出
      state.userInfo = {};
    },
    [SET_CONFIG](state, status) {
      // console.log('statusstatus',status)
      state.userInfo.perpetual_contracts_status = status
    }
      state.userInfo.perpetual_contracts_status = status;
    },
    SET_UERS_KYC(state, data) {
      state.kyc = data;
    },
  },
  actions: {
    // actionsGasObj({commit},data){
    //   commit("SET_GAS_OBJ", data);
    // },
    // actionsLogin({ commit }, data) {
    //   commit("SET_UESR_OBJ", data);
    // },
    async [GET_USERINFO]({ commit }, accounts) { // 发送请求获取信息
      commit(SET_USERINFO, accounts) // 登陆
      let data = await _info()
      commit(SET_USERINFO, data) // 用户信息
      data = await _getBalance()
      commit(SET_USERINFO, { balance: data.money }) // 余额
    actionsLogin({ commit }, data) {
      // commit("SET_UESR_OBJ", data);
    },
    async [GET_USERINFO]({ commit }, accounts) {
      // 发送请求获取信息
      commit(SET_USERINFO, accounts); // 登陆
      let data = await _info();
      commit(SET_USERINFO, data); // 用户信息
      data = await _getBalance();
      commit(SET_USERINFO, { balance: data.money }); // 余额
    },
    async [SET_CONFIG]({ commit, state, }) {
      const data = await perpetualContracts().catch(err => Promise.reject((err)))
    async GET_UERS_KYC({ commit, state }) {
      const data = await _getIdentify().catch((err) => Promise.reject(err));
      console.log("data222222222222", data.status);
      // let status = data.perpetual_contracts
      commit("SET_UERS_KYC", data.status);
    },
    async [SET_CONFIG]({ commit, state }) {
      const data = await perpetualContracts().catch((err) =>
        Promise.reject(err)
      );
      // console.log('data222222222222',data)
      let status = data.perpetual_contracts
      commit(SET_CONFIG, status)
      let status = data.perpetual_contracts;
      commit(SET_CONFIG, status);
    },
    async [GET_DAPPUSERINFO]({ commit }, accounts) { // 发送请求获取信息
    async [GET_DAPPUSERINFO]({ commit }, accounts) {
      // 发送请求获取信息
      // console.log('accounts', accounts)
      Toast.loading({ duration: 0, forbidClick: true })
      commit(SET_USERINFO, { account: accounts[0] }) //  钱包地址
      let data = await _register(accounts[0], localStorage.getItem('usercode'))
      commit(SET_USERINFO, data) // 登陆
      data = await _info()
      commit(SET_USERINFO, data) // 用户信息
      data = await _getBalance()
      commit(SET_USERINFO, { balance: data.money }) // 余额
      Toast.loading({ duration: 0, forbidClick: true });
      commit(SET_USERINFO, { account: accounts[0] }); //  钱包地址
      let data = await _register(accounts[0], localStorage.getItem("usercode"));
      commit(SET_USERINFO, data); // 登陆
      data = await _info();
      commit(SET_USERINFO, data); // 用户信息
      data = await _getBalance();
      commit(SET_USERINFO, { balance: data.money }); // 余额
    },
    async [CONNECT_WALLET]({ commit, state, dispatch }, type) {
      Toast.loading({ duration: 0, forbidClick: true })
      Toast.loading({ duration: 0, forbidClick: true });
      setTimeout(async () => {
        const eth = window.ethereum
        if (eth) { // 钱包环境
          const accounts = await eth.request({ method: "eth_requestAccounts" }).catch(err => {
            const { code } = err
            if (code === 4001) {
              Toast.fail(i18n.t('您拒绝了链接'));
              return;
            } if (code === 'ECONNABORTED') {
              this.$toast(this.$t('网络超时!'));
              return;
            }
          })
        const eth = window.ethereum;
        if (eth) {
          // 钱包环境
          const accounts = await eth
            .request({ method: "eth_requestAccounts" })
            .catch((err) => {
              const { code } = err;
              if (code === 4001) {
                Toast.fail(i18n.t("您拒绝了链接"));
                return;
              }
              if (code === "ECONNABORTED") {
                this.$toast(this.$t("网络超时!"));
                return;
              }
            });
          if (accounts) {
            if (!state.userInfo.token) {
              await dispatch(GET_DAPPUSERINFO, accounts)
              Toast.success(i18n.t('连接钱包成功'))
              return false
              await dispatch(GET_DAPPUSERINFO, accounts);
              Toast.success(i18n.t("连接钱包成功"));
              return false;
            } else {
              if (type == 'connect') {
                await dispatch(GET_DAPPUSERINFO, accounts)
                Toast.success(i18n.t('连接钱包成功'))
              if (type == "connect") {
                await dispatch(GET_DAPPUSERINFO, accounts);
                Toast.success(i18n.t("连接钱包成功"));
              } else {
                Toast.success(i18n.t('刷新完成'))
                Toast.success(i18n.t("刷新完成"));
              }
            }
            // await dispatch(GET_DAPPUSERINFO, accounts)
            // Toast.success(i18n.t('连接钱包成功'))
            eth.on('accountsChanged', async (accounts) => { // 登录变了
              commit(SET_OUT)
            eth.on("accountsChanged", async (accounts) => {
              // 登录变了
              commit(SET_OUT);
              if (!accounts.length) {
                Toast.fail(i18n.t('已断开钱包连接'))
              } else { // 重新请求数据
                await dispatch(GET_DAPPUSERINFO, accounts)
                const data = await _checkStatus()
                commit(SET_STATUS, data.status)
                Toast.success(i18n.t('钱包切换成功'))
                Toast.fail(i18n.t("已断开钱包连接"));
              } else {
                // 重新请求数据
                await dispatch(GET_DAPPUSERINFO, accounts);
                const data = await _checkStatus();
                commit(SET_STATUS, data.status);
                Toast.success(i18n.t("钱包切换成功"));
              }
            })
            });
          } else {
            // Toast('连接钱包异常')
          }
        } else {
          Toast.fail(i18n.t('请先安装钱包插件'))
          Toast.fail(i18n.t("请先安装钱包插件"));
        }
      }, 300);
    }
    },
  },
};