users.ts 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import { defineStore } from 'pinia';
  2. import { store } from '@/store';
  3. import { ACCESS_TOKEN, CURRENT_USER, IM_TOKEN } from '@/store/mutation-types';
  4. import { storage } from '@/utils/storage';
  5. import { userLogin, getUserInfo } from '@/api/user';
  6. export interface IUserState {
  7. token: string;
  8. imToken: string;
  9. username: string;
  10. avatar: string;
  11. info: any;
  12. }
  13. export const useUserStore = defineStore('user-store', {
  14. state: (): IUserState => ({
  15. token: storage.get(ACCESS_TOKEN, ''),
  16. imToken: storage.get(IM_TOKEN, ''),
  17. username: '',
  18. avatar: '',
  19. info: storage.get(CURRENT_USER, {})
  20. }),
  21. getters: {
  22. getToken(): string {
  23. return this.token;
  24. },
  25. getImToken(): string {
  26. return this.imToken;
  27. },
  28. getAvatar(): string {
  29. return this.avatar;
  30. },
  31. getNickname(): string {
  32. return this.username;
  33. },
  34. getUserInfo(): object {
  35. return this.info;
  36. }
  37. },
  38. actions: {
  39. setToken(token: string) {
  40. this.token = token;
  41. },
  42. setImToken(token: string) {
  43. this.imToken = token;
  44. },
  45. setAvatar(avatar: string) {
  46. this.avatar = avatar;
  47. },
  48. setUserInfo(info: any) {
  49. this.info = info;
  50. },
  51. // 登录
  52. async login(userInfo: any) {
  53. try {
  54. const { data } = await userLogin(userInfo);
  55. console.log(data, 'data');
  56. const userToken =
  57. data.authentication.token_type +
  58. ' ' +
  59. data.authentication.access_token;
  60. const ex = 7 * 24 * 60 * 60 * 1000;
  61. storage.set(ACCESS_TOKEN, userToken, ex);
  62. // storage.get(IM_TOKEN, data.imToken);
  63. this.setToken(userToken);
  64. // this.setImToken(data.imToken);
  65. return Promise.resolve();
  66. } catch (e) {
  67. return Promise.reject(e);
  68. }
  69. },
  70. // 获取用户信息
  71. async getInfo() {
  72. // const that = this;
  73. return new Promise((resolve, reject) => {
  74. // .then(res => {
  75. // const result = res.data;
  76. // this..setUserInfo(result);
  77. // that.setAvatar(result.account.avatar);
  78. // resolve(res);
  79. // })
  80. // .catch(error => {
  81. // reject(error);
  82. // });
  83. try {
  84. // getUserInfo().then((res: any) => {
  85. // console.log(res, 'res');
  86. // });
  87. resolve(true);
  88. } catch {
  89. reject();
  90. }
  91. });
  92. },
  93. // 登出
  94. async logout() {
  95. this.setUserInfo('');
  96. storage.remove(ACCESS_TOKEN);
  97. storage.remove(CURRENT_USER);
  98. return Promise.resolve('');
  99. }
  100. }
  101. });
  102. // Need to be used outside the setup
  103. export function useUserStoreWidthOut() {
  104. return useUserStore(store);
  105. }