Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import axios from "axios";
- import { toast } from "react-toastify";
- import { accessTokenService } from "../libs";
- import { ServerResponseCode } from "./types";
- export const api = axios.create({
- baseURL: import.meta.env.VITE_API_URL,
- headers: {
- "Access-Control-Allow-Origin": "*",
- "Accept-Language": "ru",
- },
- });
- api.interceptors.request.use(
- (config) => {
- const accessToken = accessTokenService.get();
- if (accessToken) {
- config.headers.Authorization = `Bearer ${accessToken}`;
- } else if (config.headers.Authorization) {
- delete config.headers.Authorization;
- }
- return config;
- },
- (error) => {
- return Promise.reject(error);
- },
- );
- api.interceptors.response.use(
- (response) => {
- if (
- [ServerResponseCode.ERROR, ServerResponseCode.INVALID_DATA].includes(
- response.data.code,
- )
- ) {
- toast.error(response.data?.text ?? "Произошла ошибка");
- if (response.data?.title === "ACCESS_DENIED") {
- accessTokenService.remove();
- window.location.href = "/sign-in";
- }
- }
- return response;
- },
- (error) => {
- if (axios.isAxiosError(error)) {
- if (error.response?.status === 401) {
- accessTokenService.remove();
- window.location.href = "/sign-in";
- }
- toast.error(error.message ?? "Произошла ошибка");
- } else {
- accessTokenService.remove();
- console.error("error", error);
- toast.error("Произошла ошибка");
- window.location.href = "/sign-in";
- }
- return Promise.reject(error);
- },
- );
Advertisement
Add Comment
Please, Sign In to add comment