import axios from 'axios'; import { API_URL, APP_VERSION } from '../constants'; import { Platform } from 'react-native'; import { showBanner } from './bannerUtils'; export const request = axios.create({ baseURL: API_URL, timeout: 10000 }); export const setupInterceptors = ({ showError }: { showError: (message: string) => void }) => { request.interceptors.request.use( (config) => { config.headers['App-Version'] = APP_VERSION; config.headers['Platform'] = Platform.OS; return config; }, (error) => { return Promise.reject(error); } ); request.interceptors.response.use( (response) => { if (response.data.result === 'ERROR' && response.data.result_description) { setTimeout(() => { showError(response.data.result_description); }, 1000); } return response; }, (error) => { if (error.code === 'ECONNABORTED' || error.message === 'Network Error') { error.isTimeout = true; showBanner('Slow internet connection!'); return Promise.reject(error); } showError(error.message); return Promise.reject(error); } ); };