41 lines
1005 B
TypeScript
41 lines
1005 B
TypeScript
import AsyncStorage from '@react-native-async-storage/async-storage';
|
||
import axios, { AxiosError } from 'axios';
|
||
import { navigate } from 'components/NavigationRef';
|
||
|
||
const axiosInstance = axios.create({
|
||
baseURL: 'http://141.105.64.233:7723/api/v1',
|
||
timeout: 10000,
|
||
headers: {
|
||
'Content-Type': 'application/json',
|
||
},
|
||
});
|
||
|
||
axiosInstance.interceptors.request.use(async config => {
|
||
// Tokenni olish
|
||
const token = await AsyncStorage.getItem('token');
|
||
if (token) {
|
||
config.headers.Authorization = `Bearer ${token}`;
|
||
}
|
||
|
||
// Language’ni olish
|
||
const language = await AsyncStorage.getItem('language');
|
||
if (language) {
|
||
config.headers['Accept-Language'] = language;
|
||
}
|
||
|
||
return config;
|
||
});
|
||
|
||
axiosInstance.interceptors.response.use(
|
||
response => response,
|
||
async (error: AxiosError) => {
|
||
if (error.response?.status === 401) {
|
||
await AsyncStorage.removeItem('token');
|
||
navigate('Login');
|
||
}
|
||
return Promise.reject(error);
|
||
},
|
||
);
|
||
|
||
export default axiosInstance;
|