Skip to content

Instantly share code, notes, and snippets.

@CryceTruly
Created January 2, 2021 17:44
Show Gist options
  • Save CryceTruly/d1ae9a7c79a25d9223949e63c06a9eb9 to your computer and use it in GitHub Desktop.
Save CryceTruly/d1ae9a7c79a25d9223949e63c06a9eb9 to your computer and use it in GitHub Desktop.
import AsyncStorage from '@react-native-async-storage/async-storage';
import axios from 'axios';
import envs from '../config/env';
import {LOGOUT} from '../constants/routeNames';
import * as RootNavigation from '../navigations/RootNavigation';
let headers = {};
const axiosInstance = axios.create({
baseURL: envs.BACKEND_URL,
headers,
});
axiosInstance.interceptors.request.use(
async (config) => {
const token = await AsyncStorage.getItem('token');
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
},
(error) => {
return Promise.reject(error);
},
);
axiosInstance.interceptors.response.use(
(response) =>
new Promise((resolve, reject) => {
resolve(response);
}),
(error) => {
if (!error.response) {
return new Promise((resolve, reject) => {
reject(error);
});
}
if (error.response.status === 403) {
RootNavigation.navigate(LOGOUT, {tokenExpired: true});
} else {
return new Promise((resolve, reject) => {
reject(error);
});
}
},
);
export default axiosInstance;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment