shared.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import { useAuthStore } from '@/store/modules/auth';
  2. import { localStg } from '@/utils/storage';
  3. import { fetchRefreshToken } from '../api';
  4. import type { RequestInstanceState } from './type';
  5. export function getAuthorization() {
  6. const token = localStg.get('token');
  7. const Authorization = token ? `bearer${token}` : null;
  8. return Authorization;
  9. }
  10. /** refresh token */
  11. async function handleRefreshToken() {
  12. const { resetStore } = useAuthStore();
  13. const rToken = localStg.get('refreshToken') || '';
  14. const { error, data } = await fetchRefreshToken(rToken);
  15. if (!error) {
  16. localStg.set('token', data.token);
  17. localStg.set('refreshToken', data.refreshToken);
  18. return true;
  19. }
  20. resetStore();
  21. return false;
  22. }
  23. export async function handleExpiredRequest(state: RequestInstanceState) {
  24. if (!state.refreshTokenPromise) {
  25. state.refreshTokenPromise = handleRefreshToken();
  26. }
  27. const success = await state.refreshTokenPromise;
  28. setTimeout(() => {
  29. state.refreshTokenPromise = null;
  30. }, 1000);
  31. return success;
  32. }
  33. export function showErrorMsg(state: RequestInstanceState, message: string) {
  34. if (!state.errMsgStack?.length) {
  35. state.errMsgStack = [];
  36. }
  37. const isExist = state.errMsgStack.includes(message);
  38. if (!isExist) {
  39. state.errMsgStack.push(message);
  40. window.$message?.error(message, {
  41. onLeave: () => {
  42. state.errMsgStack = state.errMsgStack.filter(msg => msg !== message);
  43. setTimeout(() => {
  44. state.errMsgStack = [];
  45. }, 5000);
  46. }
  47. });
  48. }
  49. }