import * as UserApi from '@/api/member/user.js';
import {
  LOGIN_STATUS,
  UID,
  OPENID,
  PLATFORM
} from '../../config/cache';
import Cache from '../../utils/cache';
import {
	USER_INFO
} from '../../config/cache';

const state = {
	token: Cache.get(LOGIN_STATUS) || '',
	backgroundColor: "#fff",
	userInfo: Cache.get(USER_INFO)?JSON.parse(Cache.get(USER_INFO)):null,
	uid: Cache.get(UID) || null,
  openid: Cache.get(OPENID) || null,
	homeActive: false,
	chatUrl: Cache.get('chatUrl') || '',
	systemPlatform: Cache.get(PLATFORM)?Cache.get(PLATFORM):'',
	productType: Cache.get('productType') || ''
};

const mutations = {
	LOGIN(state, opt) {
		state.token = opt.token;
		Cache.set(LOGIN_STATUS, opt.token);
	},
	SETUID(state,val){
		state.uid = val;
		Cache.set(UID, val);
	},
  OPENID(state, val) {
    state.openid = val;
    Cache.set(OPENID, val);
  },
	UPDATE_LOGIN(state, token) {
		state.token = token;
	},
	LOGOUT(state) {
		state.token = undefined;
		state.uid = undefined
		Cache.clear(LOGIN_STATUS);
		Cache.clear(UID);
		Cache.clear(USER_INFO);
	},
	BACKGROUND_COLOR(state, color) {
		state.color = color;
		document.body.style.backgroundColor = color;
	},
	UPDATE_USERINFO(state, userInfo) {
		state.userInfo = userInfo;
		Cache.set(USER_INFO, userInfo);
	},
	OPEN_HOME(state) {
		state.homeActive = true;
	},
	CLOSE_HOME(state) {
		state.homeActive = false;
	},
	SET_CHATURL(state, chatUrl){
		state.chatUrl = chatUrl;
	},
	SYSTEM_PLATFORM(state, systemPlatform){
		state.systemPlatform = systemPlatform;
		Cache.set(PLATFORM, systemPlatform);
	},
	//更新useInfo数据
	changInfo(state, payload) {
		state.userInfo[payload.amount1] = payload.amount2;
		Cache.set(USER_INFO, state.userInfo);
	},
	//商品类型，用于区分视频号商品与一般商品
	PRODUCT_TYPE(state, productType) {
		state.productType = productType;
		Cache.set('productType', productType);
	}
};

const actions = {
	USERINFO({
		state,
		commit
	}, force) {
		return new Promise(reslove => {
      UserApi.getUserInfo().then(res => {
        commit("UPDATE_USERINFO", res.data);
        reslove(res.data);
      })
		}).catch(() => {

		});
		// debugger
		// if (state.userInfo !== null && !force)
		// 	return Promise.resolve(state.userInfo);
		// else
		// 	return new Promise(reslove => {
		// 		getUserInfo().then(res => {
		// 			commit("UPDATE_USERINFO", res.data);
		// 			reslove(res.data);
		// 		});
		// 	}).catch(() => {

		// 	});
	}
};

export default {
	state,
	mutations,
	actions
};
