123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- 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);
- }
- );
- };
|