import { defineStore } from 'pinia';
import Cookies from 'js-cookie';
import { Session } from '/@/utils/storage';
import { useLoginApi } from '/@/api/login'
/**
 * 用户信息
 * @methods setUserInfos 设置用户信息
 */
export const useUserInfo = defineStore('userInfo', {
	state: (): UserInfosState => ({
		userInfos: {
			menuList: []
		},
	}),
	actions: {
		async setUserInfos() {
			// 存储用户信息到浏览器缓存
			// 从缓存获取用户信息如果有信息的话，则进行赋值，如果没有则重新请求接口获取用户信息。
			if (Session.get('userInfo')) {
				this.userInfos = Session.get('userInfo');
			} else {
				const userInfos = <UserInfos>await this.getApiUserInfo();
				this.userInfos = userInfos;
			}
		},
		// 接口数据
		// https://gitee.com/lyt-top/vue-next-admin/issues/I5F1HP
		async getApiUserInfo() {
			return new Promise((resolve) => {
				useLoginApi().getUserInfo().then(res => {
					let data = res.data;
					// 用户信息
					const userInfos = {
						...data,
						roles:['admin'],
						time: new Date().getTime()
					};
					Session.set('userInfo', userInfos);
					resolve(userInfos);
				})
			});
		},
	},
});
