HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/propbase/propbase_website/config/strapiservice.ts
import axios, { AxiosInstance, AxiosResponse, InternalAxiosRequestConfig } from 'axios';
import { strapiApiUrl } from './serviceConstants';
import Notifications from '../shared/utils/notifications';

const reset = (): void => {
  localStorage.clear();
  sessionStorage.clear();
  window.location.href = '/';
};

const apiGateway: AxiosInstance = axios.create({
  baseURL: strapiApiUrl,
  headers: {
    'Content-Type': 'application/json',
  },
  timeout: 20000,
});

apiGateway.interceptors.response.use(
  (response: AxiosResponse) => response,
  ({ response }) => {
    if (response?.data?.statusCode === 400) {
      Notifications(response?.data?.message, 'error');
      return response;
    }
    if (response?.data?.statusCode === 401) {
      reset();
    }
  },
);

apiGateway.interceptors.request.use((config: InternalAxiosRequestConfig) => {
  const token = process.env.NEXT_PUBLIC_KEY_STRAPI;

  config.headers = config.headers || {};

  if (token) {
    config.headers.Authorization = `Bearer ${token}`;
  }

  return config;
});

export default apiGateway;