import {
	defineStore
} from 'pinia';
import {
	clone,
	cloneDeep
} from 'lodash-es';
import config from '@/utils/config'
import storage from '@/utils/storage'
// import constant from '@/utils/vuexParams'
import {
	appLogin,
	logout,
	getInfo
} from '@/api/login'
import {
	getAccessToken,
	setToken,
	removeToken,
	removeTenantId,
	removeUserInfo,
} from '@/utils/auth'

const baseUrl = config.apiUrl

const user = defineStore('user', {
	state: () => ({
		userInfo: {},
		isLogin: !!getAccessToken() // 登录状态
	}),




	actions: {
		// 登录
		Login({
			commit
		}, userInfo) {
			const username = userInfo.username.trim()
			const password = userInfo.password
			const captchaVerification = userInfo.captchaVerification
			return new Promise((resolve, reject) => {
				appLogin(userInfo).then(res => {
					res = res.data;
					// 设置 token
					setToken(res)
					resolve()
				}).catch(error => {
					reject(error)
				})
			})
		},

		// 获取用户信息
		GetInfo({
			commit,
			state
		}) {
			return new Promise((resolve, reject) => {
				getInfo().then(res => {
					res = res.data; // 读取 data 数据
					const user = res.user
					const avatar = (user == null || user.avatar === "" || user.avatar == null) ?
						require("@/static/images/profile.jpg") : user.avatar
					const nickname = (user == null || user.nickname === "" || user.nickname ==
						null) ? "" : user.nickname
					if (res.roles && res.roles.length > 0) {
						commit('SET_ROLES', res.roles)
						commit('SET_PERMISSIONS', res.permissions)
					} else {
						commit('SET_ROLES', ['ROLE_DEFAULT'])
					}
					commit('SET_NAME', nickname)
					commit('SET_AVATAR', avatar)
					resolve(res)
				}).catch(error => {
					reject(error)
				})
			})
		},

		// 退出系统
		LogOut() {
			return new Promise((resolve, reject) => {
				logout().then(() => {
					removeToken()
					removeTenantId()
					removeUserInfo()
					resolve()
				}).catch(error => {
					reject(error)
				})
			})
		}
	}
})

export default user