configure.ts 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { compose, initial } from "@dage/service";
  2. import { getTokenInfo, removeTokenInfo } from "@dage/pc-components";
  3. import { message } from "antd";
  4. import { NoticeType } from "antd/es/message/interface";
  5. import { ResponseStatusCode } from "./types";
  6. const showMessage = (msg: string, type: NoticeType = "error") => {
  7. message.open({
  8. type,
  9. content: msg,
  10. duration: 4,
  11. });
  12. };
  13. initial({
  14. fetch: window.fetch.bind(window),
  15. baseURL: process.env.REACT_APP_API_URL as string,
  16. interceptor: compose(
  17. (request, next) => {
  18. const { token } = getTokenInfo();
  19. if (token) {
  20. request.headers["token"] = token;
  21. }
  22. return next();
  23. },
  24. // 登陆失效
  25. async (request, next) => {
  26. const response = await next();
  27. if (
  28. [
  29. ResponseStatusCode.TOKEN_INVALID,
  30. ResponseStatusCode.TOKEN_INVALID2,
  31. ].includes(response.code)
  32. ) {
  33. showMessage("登录失效!");
  34. removeTokenInfo();
  35. globalThis.location.href = "#/login";
  36. }
  37. return response;
  38. }
  39. ),
  40. });