/**
 * 用户状态仓库
 * 管理用户登录信息、Token等核心状态
 */
import { defineStore } from 'pinia'

// 仓库命名规范：use+业务域+Store
export const useUserStore = defineStore('user', {
  // 1. 原始状态：仅存基础数据，不做任何计算、判断
  state: () => ({    
    userId:"",   
    token: '',
    refToken:"",
    sid:""    
  }),

  // 2. 只读计算属性：封装派生逻辑，全局只读
  getters: {

    //判断是否登录主页
    isLoginAccount: (state) => !!state.sid,
    // 判断是否登录
    isLogin: (state) => !!state.token,

    //获取UserId
    getUserId:(state)=>state.userId??"",
    //token
    getToken:(state)=>state.token??"",

    // 刷新token
    getRefToken: (state) => state.refToken??"",

    // 账号
    getSid: (state) => state.sid?? '',
  },

  // 3. 唯一状态修改入口：所有状态变更必须走actions
  actions: {
    // 设置用户信息与Token
    setToken(userId:string, token: string,refToken :string) {      
      this.userId = userId,
      this.token = token,
      this.refToken = refToken
    },

    // 仅更新Token
    setSid(sid: string) {
      this.sid = sid
    },

    // 退出登录：清空用户状态
    clearUserInfo() {
      this.token = '',
      this.refToken='',
      this.sid=''
    }
  },

  // 4. 持久化配置：仅缓存核心状态（token + userInfo）
  persist: {
    storage: piniaPluginPersistedstate.localStorage(),
    pick: ['token','refToken', 'sid','userId']
  }
})
