import type { UserInfo } from '@vben-core/typings'

import { ref } from 'vue'

import { acceptHMRUpdate, defineStore } from 'pinia'

/**
 * @zh_CN 用户信息相关
 */
export const useUserStore = defineStore(
  'core-user',
  () => {
    const userInfo = ref({} as UserInfo)

    function setUserInfo(value: UserInfo) {
      userInfo.value = value
    }

    function $reset() {
      userInfo.value = {} as UserInfo
    }

    return {
      userInfo,
      setUserInfo,
      $reset,
    }
  },
  {
    persist: {
      // 指定需要持久化的状态
      pick: ['userInfo'],
      // 可选：自定义存储的key
      // key: 'user-store',
      // 可选：指定存储方式，默认使用全局配置的storage
      // storage: localStorage,
    },
  },
)

// 解决热更新问题
const hot = import.meta.hot
if (hot) {
  hot.accept(acceptHMRUpdate(useUserStore, hot))
}
