import { createApp } from 'vue';
import { Sticky, Lazyload, Popup, Overlay, Loading, Dialog, Swipe, SwipeItem, Switch, PullRefresh, Row, Col, List, Tab, Tabs, Toast, Skeleton, setToastDefaultOptions } from 'vant';

import App from './App.vue';
import Router from './router';
import store from './store';
import 'vant/lib/index.css';
import 'amfe-flexible';
import './until/rem';
import 'animate.css/animate.min.css';
import './assets/icons/index.js';
import SvgIcon from './components/SvgIcon.vue';
import * as user_api from '@/api/user_api';
const app = createApp(App);
app.component('svg-icon', SvgIcon);
app.use(store);
// 暴露router到window上
(window as any).router = Router;

// import { useStore } from 'vuex';
// const use_store = useStore();
const last_user_update_time = { value: 0 };

(window as any).app_go = async ({ path, query, token }: any) => {
  try {
    let user_info: any = store.state.userInfo;
    if (token && !user_info?.user_id) {
      let datas: any = {
        token: token,
        mac_code: 'vue_html5',
        t: (new Date()).valueOf()
      };
      user_api.user_auto_login(datas).then(function () {
        // alert("user_info23 : "+result?.Result?.user_id)
        store.dispatch('fetchUserInfo');
      });
    }
  } catch (error: any) {
    // alert('login_check_error'+error.message)
  }

  try {

    let location: any = (window as any).location;

    //登录信息检查。判断上次登录时间是否超过1分钟,可异步检查
    let now = (new Date()).valueOf();
    if (now - last_user_update_time.value > 60 * 1000) {
      // console.info(`update user info :---------`);
      last_user_update_time.value = now;
      store.dispatch('fetchUserInfo');
    }

    //如果是详情页面,且比赛id相同,则不跳转,但要重新加载数据
    if (location.pathname.indexOf('game') > -1 && path.indexOf('game') > -1
      && query?.yiqiuid && location.search.indexOf(query.yiqiuid) > -1) {
      console.info(`query ${JSON.stringify(query)}`);
      store.commit('updateAppIsBack', false);
      // 万不得已的情况下使用 reload()
      // location.reload();
      // 增加时间戳,来让页面重新加载数据
      return await Router.replace({ path, query: { ...query, t: (new Date()).valueOf() } });
    } else if (location.pathname.indexOf('game') > -1 && path.indexOf('game') > -1) {
      return await Router.replace({ path, query });
    }
  } catch (e: any) {
    console.info(`app go page error:`, e.message);
  }
  return await Router.push({ path, query });
};

(window as any).app_back = ({ args }: any) => {
  console.info(args);
  store.commit('updateAppIsBack', true);
  if(store.state.app_is_back){
    return 'app_back success';
  }else{
    return 'app_back fail';
  }
};

(window as any).login_check = async ({ token }: any) => {
  try {
    let datas: any = {
      token: token,
      mac_code: 'vue_html5',
      t: (new Date()).valueOf()
    };
    user_api.user_auto_login(datas).then(function () {
      // alert("user_info23 : "+result?.Result?.user_id)
      store.dispatch('fetchUserInfo');
    });
    // store.commit('updateUserInfo', token);
    // if(args){

    // }
  } catch (error) {
    // alert('login_check_error')
  }

  return 'success';
};

(window as any).logout_check = async ({ args }: any) => {
  store.commit('updateUserInfo', {});
  console.info(args);
  try {
    user_api.ydn_logout({}).then(function (result: any) {
      console.info(result);
      // alert("user_info23 : "+result?.Result?.user_id)
      // store.dispatch('fetchUserInfo');
    });
  } catch (error) {
    // alert('login_check_error')
  }

  return 'success';
};

(window as any).get_user_info = (args: any = null) => {
  let user_info: any = store.state.userInfo;
  // alert('user_info')
  // alert(JSON.stringify(args))
  if (!user_info?.user_id) {
    user_api.get_logined_virtual_account().then(function () {
      // alert("user_info2 : " + result?.Result?.user_id)
    });

    try {
      let datas: any = {
        token: JSON.stringify(args),
        mac_code: 'vue_html5',
        t: (new Date()).valueOf()
      };
      user_api.user_auto_login(datas).then(function () {
        // alert("user_info23 : "+result?.Result?.user_id)
      });
    } catch (error) {
      alert('login_check_error');
    }

  }
  if (user_info && user_info?.user_id) {
    return JSON.stringify(user_info);
  }
  // alert('user_info is null')
  return null;
};


app.use(Router);
app.use(Lazyload, { lazyComponent: true })
  .use(Sticky)
  .use(Popup)
  .use(Overlay)
  .use(Loading)
  .use(Dialog)
  .use(Toast)
  .use(Swipe)
  .use(SwipeItem)
  .use(Switch)
  .use(PullRefresh)
  .use(Row)
  .use(Col)
  .use(List)
  .use(Tab)
  .use(Tabs)
  .use(Skeleton);
app.mount('#app');

setToastDefaultOptions({ duration: 1000 });
setToastDefaultOptions('loading', {
  message: '加载中…',
  forbidClick: true,//是否禁止背景点击
  overlay: true, //是否显示背景遮罩层
  closeOnClickOverlay: true,//是否在点击遮罩层后关闭
  icon: 'https://img2.ydniu.com/app/images/sports_ydniu/m-load.gif',
  iconSize: 30,
  className: 'loading-style',
  transition: 'custom-toast'//动画类名
});