/**
 * vuex 用户状态管理模块
 */
let lifeData = uni.getStorageSync('lifeData') || {};

let $user = lifeData.$user || {};

export default {
	// 通过添加 namespaced: true 的方式使其成为带命名空间的模块
	namespaced: true,
	/**
	 * vuex的基本数据，用来存储变量
	 */
	state: {
		/**
		 * 登录用户信息
		 * js调用示例
		 * (推荐) vk.getVuex('$user.userInfo');
		 * 或 vk.vuex.get('$user.userInfo');
		 * 页面上直接使用示例
		 * {{ vk.getVuex('$user.userInfo') }}
		 * js更新示例
		 * vk.setVuex('$user.userInfo.avatar', avatar);
		 */
		userInfo: $user.userInfo || {},
		agentInfo: $user.agentInfo || {},
		permission:$user.permission || [],
		history: $user.history || {
			lastEditAvatarTime: null, // 最后修改头像时间
			lastEditUserInfoTime: null, // 最后用户主动更新资料时间，昵称、头像
			lastInitAgentDataTime: 0, // 最后一次更新经纪人数据（推荐人数等）
			lastGetUnreadMsgTime: 0 , // 最后一次请求未读消息数量
			lastRefreshTime: 0, // 最后一次刷新列表时间
		},
		dataInfo: $user.dataInfo || {
			recommendNum: 0,
			visitedNum: 0,
			buyNum: 0,
			totalCommission: 0,
			unreadMsgNum: 0
		}
	},
	/**
	 * 从基本数据(state)派生的数据，相当于state的计算属性
	 */
	getters: {
		/**
		 * 获取用户信息（使用计算属性获取）
		 * js调用示例
		 * vk.vuex.getters('$user/getUserInfo');
		 * 或
		 * that.$store.getters['$user/getUserInfo'];
		 */
		getUserInfo: (state) => {
			return state.userInfo;
		}
	},
	/**
	 * 提交更新数据的方法，必须是同步的(如果需要异步使用action)。
	 * 每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。
	 * 回调函数就是我们实际进行状态更改的地方，并且它会接受 state 作为第一个参数，提交载荷作为第二个参数。
	 */
	mutations: {
		
	},
	/**
	 * 和mutation的功能大致相同，不同之处在于 ==》
	 * 1. Action 提交的是 mutation，而不是直接变更状态。 
	 * 2. Action 可以包含任意异步操作。
	 */
	actions: {
		
	}
}