import { defineStore } from 'pinia'

// 定义存储的状态类型
interface AuthState {
  token: string | null
  userInfo: any | null // 可根据实际用户信息结构定义具体类型
}

export const useAuthStore = defineStore('auth', {
  state: (): AuthState => ({
    // 初始化时从localStorage读取，保证刷新后状态不丢失
    token: localStorage.getItem('token') || null,
    userInfo: localStorage.getItem('userInfo') ? JSON.parse(localStorage.getItem('userInfo')!) : null
  }),
  actions: {
    // 保存登录状态（登录成功时调用）
    setAuthInfo(token: string, userInfo: any) {
      this.token = token
      this.userInfo = userInfo
      // 同步到localStorage持久化
      localStorage.setItem('token', token)
      localStorage.setItem('userInfo', JSON.stringify(userInfo))
    },
    // 清除登录状态（退出登录或token失效时调用）
    clearAuthInfo() {
      this.token = null
      this.userInfo = null
      localStorage.removeItem('token')
      localStorage.removeItem('userInfo')
    }
  }
})
