member.ts 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import { defineStore } from 'pinia'
  2. import { getMemberInfo } from '@/app/api/member'
  3. import { logout } from '@/app/api/auth'
  4. interface Member {
  5. token: string | null
  6. info: Record<string, any> | null,
  7. loginPopup:boolean
  8. }
  9. const useMemberStore = defineStore('member', {
  10. state: (): Member => {
  11. return {
  12. token: useCookie('token').value,
  13. info: null,
  14. loginPopup:false
  15. }
  16. },
  17. actions: {
  18. async setToken(token: string) {
  19. this.token = token
  20. useCookie('token').value = token
  21. await this.getMemberInfo()
  22. },
  23. async getMemberInfo() {
  24. if (!this.token) return
  25. await getMemberInfo()
  26. .then((res: any) => {
  27. this.info = res.data
  28. })
  29. .catch((err) => {
  30. this.logout()
  31. })
  32. },
  33. logout() {
  34. if (!this.token) return
  35. this.token = ''
  36. this.info = null
  37. useCookie('token').value = null
  38. logout().then().catch()
  39. },
  40. logOpen(){
  41. this.loginPopup = true
  42. },
  43. logClose(){
  44. this.loginPopup = false
  45. }
  46. }
  47. })
  48. export default useMemberStore