import { defineStore } from 'pinia'
import storage from '@/utils/storage.js'
import { userWxLogin, getUserInfo, userLogin } from '@/api/user.js'

const useUserStore = defineStore('user', {
	unistorage: true, // 是否持久化到内存
	state: () => {
		return {
			token: storage.get('crgx_token', ''),
			userInfo: storage.get('crgx_userInfo', {identificationNumber: '', nickName: '', phonenumber: ''}),
			roleGroup: storage.get('crgx_roleGroup', null),
			isShowAdver: false,
			showTip: true,
			transferDeptId: ''
		}
	},
	actions: {
		// 用户微信登录
		login(data) {
			return new Promise((resolve, reject) => {
				userWxLogin(data)
				  .then(response => {
				    const { token } = response
						// 过期时间30天
						const expiryTime = 30 * 86400
						// 保存tokne到缓存
						storage.set('crgx_token', token, expiryTime)
						// 记录到store全局变量
						this.token = token
				    resolve(response)
				  })
				  .catch(reject)
			})
		},
		
		// 账号密码登录
		userlogin(userInfo) {
			return new Promise((resolve, reject) => {
				userLogin(userInfo).then(res => {
					// 保存tokne到缓存
					// 过期时间30天
					const expiryTime = 30 * 86400
					storage.set('crgx_token', res.token, expiryTime)
					this.token = res.token
					resolve()
				}).catch(error => {
					reject(error)
				})
			})
		},
		// 获取用户信息
		getUser() {
		  return new Promise((resolve, reject) => {
		    getUserInfo()
		      .then(response => {
						const userInfo = response.data
						// 过期时间30天
						const expiryTime = 30 * 86400
						// 记录到store全局变量
						this.userInfo = userInfo
						this.userInfo.nickName = uni.$u.trim(userInfo.nickName, 'all')
						storage.set('crgx_userInfo', this.userInfo, expiryTime)
		        resolve(response)
		      })
		      .catch(reject)
		  })
		},
		// 退出登录
		Logout() {
		  return new Promise((resolve, reject) => {
		   // 删除缓存中的tokne和userInfo
		   storage.remove('crgx_token')
		   storage.remove('crgx_userInfo')
		   resolve()
		  })
		}
	}
})


export default useUserStore