import Vue from "vue";
import Vuex from "vuex";
import user from "./modules/user";
import internship from "./modules/internship";
Vue.use(Vuex);

const appNameData = {
  2021004125649367: "智用工",
  wx2a515776284cae17: "新华实习",
};

let lifeData = {};
let appId = "2021004125649367";
// 新华网
// let appId = 'wx2a515776284cae17';

try {
  // 尝试获取本地是否存在lifeData变量,第一次启动APP时是不存在的
  lifeData = uni.getStorageSync("lifeData");
} catch (e) {}

// 需要永久存储,且下次APP启动需要取出的,在state中的变量名
let saveStateKeys = [
  "vuex_user",
  "vuex_tenant",
  "vuex_token",
  "workai_vuex_token",
  "vuex_phone",
  "vuex_weixinUserInfo",
  "vuex_role",
  "vuex_userid",
  "vuex_refresh_token",
  "vuex_baseImgUrl",
  "vuex_theme",
  "vuex_expect_job",
];

// 保存变量到本地存储中
const saveLifeData = function (key, value) {
  // 判断变量名是否在需要存储的数组中
  if (saveStateKeys.indexOf(key) != -1) {
    // 获取本地存储的lifeData对象,将变量添加到对象中
    let tmp = uni.getStorageSync("lifeData");
    // 第一次打开APP,不存在lifeData变量,故放一个{}空对象
    tmp = tmp ? tmp : {};
    tmp[key] = value;
    // 执行这一步后,所有需要存储的变量,都挂载在本地的lifeData对象中
    uni.setStorageSync("lifeData", tmp);
  }
};

const handleTabBars = function (type) {
  const tabBars = [
    {
      pagePath: "/pages/student/tabBar/home/home",
      iconPath: "/static/img/common/home.png",
      selectedIconPath: `https://yxlypublic.oss-cn-beijing.aliyuncs.com/WeChat/wx84b71301436652ce/homeHL.png`,
      text: "首页",
    },
    // {
    //   "pagePath": "/pages/student/tabBar/internship/internship",
    //   "iconPath": "/static/img/common/internship.png",
    //   "selectedIconPath": `https://yxlypublic.oss-cn-beijing.aliyuncs.com/WeChat/${appId}/internshipHL.png`,
    //   "text": "实习"
    // },
    // {
    //   "pagePath": "/pages/student/tabBar/promote/promote",
    //   "iconPath": "/static/img/common/promote.png",
    //   "selectedIconPath": `https://yxlypublic.oss-cn-beijing.aliyuncs.com/WeChat/${appId}/promoteHL.png`,
    //   "text": "提升"
    // },
    //  {
    //    "pagePath": "/pages/student/tabBar/message/message",
    //    "iconPath": "/static/img/common/message.png",
    //    "selectedIconPath": `https://yxlypublic.oss-cn-beijing.aliyuncs.com/WeChat/${appId}/messageHL.png`,
    //    "text": "消息",
    //    'isDot': true,
    //    'count': 0,
    //  },
    {
      pagePath: "/pages/student/tabBar/my/my",
      iconPath: "/static/img/common/my.png",
      selectedIconPath: `https://yxlypublic.oss-cn-beijing.aliyuncs.com/WeChat/wx84b71301436652ce/myHL.png`,
      text: "我的",
    },
  ];
  // if (appId == 'wx2a515776284cae17') {
  //   tabBars.splice(2, 1)
  // }

  // if (type == 'worker') {
  //   tabBars.splice(1, 1)
  //   return tabBars
  // }

  // if (type == 'student') {
  //   return tabBars
  // }
  return tabBars;
};

const store = new Vuex.Store({
  modules: {
    user,
    internship,
  },
  state: {
    vuex_appId: appId,
    vuex_appName: appNameData[appId],
    vuex_alipay: false,
    // 如果上面从本地获取的lifeData对象下有对应的属性,就赋值给state中对应的变量
    // 加上vuex_前缀,是防止变量名冲突,也让人一目了然
    vuex_user: lifeData.vuex_user ? lifeData.vuex_user : {},
    vuex_tenant: lifeData.vuex_tenant ? lifeData.vuex_tenant : {},
    vuex_weixinUserInfo: lifeData.vuex_weixinUserInfo
      ? lifeData.vuex_weixinUserInfo
      : {},
    vuex_token: lifeData.vuex_token ? lifeData.vuex_token : "",
    workai_vuex_token: lifeData.workai_vuex_token
      ? lifeData.workai_vuex_token
      : "",
    vuex_phone: lifeData.vuex_phone ? lifeData.vuex_phone : "",
    vuex_role: lifeData.vuex_role ? lifeData.vuex_role : "",
    vuex_userid: lifeData.vuex_userid ? lifeData.vuex_userid : "",
    vuex_refresh_token: lifeData.vuex_refresh_token
      ? lifeData.vuex_refresh_token
      : "",
    // 如果vuex_version无需保存到本地永久存储,无需lifeData.vuex_version方式
    vuex_version: "1.0.0",
    vuex_noAuth: true,
    vuex_demo: "绛紫",
    vuex_baseImgUrl: "",
    vuex_ossUrl: "https://yxly.oss-cn-beijing.aliyuncs.com",
    vuex_ossUrlPubilc: "https://yxlypublic.oss-cn-beijing.aliyuncs.com",
    // vuex_ossUrl: "https://oss.workai.com.cn",
    vuex_OssInit: {},
    vuex_area: {},
    vuex_theme: "",
    // vuex_theme: this.theme,
    // 自定义tabbar数据
    vuex_tabbar: handleTabBars("worker"),
    vuex_tabbar_inter: handleTabBars("student"),
    vuex_expect_job: lifeData.vuex_expect_job
      ? lifeData.vuex_expect_job
      : "全部职位",
  },

  getters: {
    doneTenantType: (state) => {
      return state.vuex_tenant && state.vuex_tenant.type
        ? String(state.vuex_tenant.type)
        : "";
    },
  },

  mutations: {
    $uStore(state, payload) {
      // 判断是否多层级调用,state中为对象存在的情况,诸如user.info.score = 1
      let nameArr = payload.name.split(".");
      let saveKey = "";
      let len = nameArr.length;
      if (len >= 2) {
        let obj = state[nameArr[0]];
        for (let i = 1; i < len - 1; i++) {
          obj = obj[nameArr[i]];
        }
        obj[nameArr[len - 1]] = payload.value;
        saveKey = nameArr[0];
      } else {
        // 单层级变量,在state就是一个普通变量的情况
        state[payload.name] = payload.value;
        saveKey = payload.name;
      }
      // 保存变量到本地,见顶部函数定义
      saveLifeData(saveKey, state[saveKey]);
    },

    setWenxinUserInfo(state, result) {
      state.vuex_weixinUserInfo = result.userInfo;
      uni.$u.vuex("vuex_weixinUserInfo", result.userInfo);
    },
  },
});

export default store;