ebleach7

Untitled

Jul 22nd, 2024
706
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import axios from "axios";
  2. import { toast } from "react-toastify";
  3. import { accessTokenService } from "../libs";
  4. import { ServerResponseCode } from "./types";
  5.  
  6. export const api = axios.create({
  7.   baseURL: import.meta.env.VITE_API_URL,
  8.   headers: {
  9.     "Access-Control-Allow-Origin": "*",
  10.     "Accept-Language": "ru",
  11.   },
  12. });
  13.  
  14. api.interceptors.request.use(
  15.   (config) => {
  16.     const accessToken = accessTokenService.get();
  17.  
  18.     if (accessToken) {
  19.       config.headers.Authorization = `Bearer ${accessToken}`;
  20.     } else if (config.headers.Authorization) {
  21.       delete config.headers.Authorization;
  22.     }
  23.  
  24.     return config;
  25.   },
  26.   (error) => {
  27.     return Promise.reject(error);
  28.   },
  29. );
  30.  
  31. api.interceptors.response.use(
  32.   (response) => {
  33.     if (
  34.       [ServerResponseCode.ERROR, ServerResponseCode.INVALID_DATA].includes(
  35.         response.data.code,
  36.       )
  37.     ) {
  38.       toast.error(response.data?.text ?? "Произошла ошибка");
  39.  
  40.       if (response.data?.title === "ACCESS_DENIED") {
  41.         accessTokenService.remove();
  42.  
  43.         window.location.href = "/sign-in";
  44.       }
  45.     }
  46.  
  47.     return response;
  48.   },
  49.   (error) => {
  50.     if (axios.isAxiosError(error)) {
  51.       if (error.response?.status === 401) {
  52.         accessTokenService.remove();
  53.         window.location.href = "/sign-in";
  54.       }
  55.  
  56.       toast.error(error.message ?? "Произошла ошибка");
  57.     } else {
  58.       accessTokenService.remove();
  59.  
  60.       console.error("error", error);
  61.  
  62.       toast.error("Произошла ошибка");
  63.  
  64.       window.location.href = "/sign-in";
  65.     }
  66.  
  67.     return Promise.reject(error);
  68.   },
  69. );
  70.  
Advertisement
Add Comment
Please, Sign In to add comment