import { defineStore } from 'pinia'
import storage from '@/utils/storage.js'
import { userLogin, getUserInfo } from '@/api/user'
// 登陆成功后执行
const loginSuccess = (that, token) => {
  // 过期时间30天
  const expiryTime = 30 * 86400
  // 保存tokne到缓存
  storage.set('xiaoming_token', token, expiryTime)
  // 记录到store全局变量
  that.token = token
}

// 保存用户信息
const userInfoSuccess = (that, userInfo) => {
  // 过期时间30天
  const expiryTime = 30 * 86400
	storage.set('xiaoming_userInfo', userInfo, expiryTime)
  // 记录到store全局变量
  that.userInfo = userInfo
}

const useUserStore = defineStore('user', {
	unistorage: true, // 是否持久化到内存
	state: () => {
		return {
			token: storage.get('xiaoming_token', '123'),
			userInfo: storage.get('xiaoming_userInfo', null)
		}
	},
	actions: {
		// 用户登录
		login(data) {
			let that = this
			return new Promise((resolve, reject) => {
				userLogin(data)
				  .then(response => {
				    const { token } = response
				    loginSuccess(that, token)
				    resolve(response)
				  })
				  .catch(reject)
			})
		},
		// 获取用户信息
		getUser() {
			let that = this
		  return new Promise((resolve, reject) => {
		    getUserInfo()
		      .then(response => {
						userInfoSuccess(that, response.data)
		        resolve(response)
		      })
		      .catch(reject)
		  })
		},
		// 退出登录
		Logout() {
		  const store = this
		  return new Promise((resolve, reject) => {
		   // 删除缓存中的tokne和userInfo
		   storage.remove('xiaoming_token')
		   storage.remove('xiaoming_userInfo')
		   resolve()
		  })
		}
	}
})


export default useUserStore