user.ts 871 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { defineStore } from 'pinia'
  2. import { ref, computed } from 'vue'
  3. const initState = { nickname: '', avatar: '' }
  4. export const useUserStore = defineStore(
  5. 'user',
  6. () => {
  7. const userInfo = ref<IUserInfo>({ ...initState })
  8. const setUserInfo = (val: IUserInfo) => {
  9. userInfo.value = val
  10. }
  11. const clearUserInfo = () => {
  12. userInfo.value = { ...initState }
  13. }
  14. // 一般没有reset需求,不需要的可以删除
  15. const reset = () => {
  16. userInfo.value = { ...initState }
  17. }
  18. const isLogined = computed(() => !!userInfo.value.token)
  19. const isDesigner = computed(
  20. () => userInfo.value.userStatusEnabled && userInfo.value.userAuthStatus === 0,
  21. )
  22. return {
  23. userInfo,
  24. setUserInfo,
  25. clearUserInfo,
  26. isLogined,
  27. isDesigner,
  28. reset,
  29. }
  30. },
  31. {
  32. persist: true,
  33. },
  34. )