import { defineStore } from 'pinia'

/**
 * 用户状态 Store
 *
 * 使用 Composition API 风格（setup 语法）定义，通过 pinia-plugin-persistedstate
 * 自动将 state 持久化到 localStorage，刷新页面后状态不会丢失。
 */
export const useUserStore = defineStore(
  'user',

  () => {
    // -------------------------------- State --------------------------------

    /** 登录凭证，登录成功后由后端返回，后续请求通过请求头携带 */
    const token = ref('')

    // ------------------------------ Actions --------------------------------

    /**
     * 设置 token
     * 登录成功后调用，触发 persist 插件自动写入 localStorage
     */
    function setToken(value: string) {
      token.value = value
    }

    /**
     * 清空 token
     * 退出登录时调用，触发 persist 插件自动清除 localStorage 对应条目
     */
    function clearToken() {
      token.value = ''
    }

    // ----------------------------- Return ----------------------------------

    return { token, setToken, clearToken }
  },

  /**
   * 持久化配置
   * true = 全量持久化（state 中所有字段自动写入/恢复 localStorage）
   * 如需精细控制，可替换为对象形式：
   *   persist: { key: 'user', storage: localStorage, paths: ['token'] }
   */
  { persist: true },
)
