user.ts 937 B

1234567891011121314151617181920212223242526272829303132
  1. import { defineStore } from 'pinia'
  2. interface UserState {
  3. username: string
  4. isFirstLogin: boolean
  5. }
  6. export const useUserStore = defineStore('user', {
  7. state: (): UserState => ({
  8. username: localStorage.getItem('username') || '',
  9. isFirstLogin: localStorage.getItem('isFirstLogin')
  10. ? JSON.parse(localStorage.getItem('isFirstLogin'))
  11. : false
  12. }),
  13. getters: {},
  14. actions: {
  15. setUsername(username: any, isFirstLogin?: boolean) {
  16. localStorage.setItem('username', username)
  17. this.username = username
  18. this.isFirstLogin = isFirstLogin
  19. localStorage.setItem('isFirstLogin', JSON.stringify(isFirstLogin))
  20. },
  21. async logout(isNeedLogout: boolean = true) {
  22. if (isNeedLogout) {
  23. await $api.logout().then(() => {})
  24. }
  25. localStorage.removeItem('username')
  26. this.username = ''
  27. localStorage.removeItem('isFirstLogin')
  28. this.isFirstLogin = false
  29. }
  30. }
  31. })