import KEY from '../assets/AsynStorage'; import axios from 'axios'; import AsyncStorage from '@react-native-community/async-storage'; import {showAlert, TYPE} from '../components/DropdownAlert/index'; import I18n from '../helper/i18/i18n'; import {DeviceEventEmitter} from 'react-native'; axios.defaults.timeout = 10000; export async function GetData(url, data) { const token = await AsyncStorage.getItem(KEY.TOKEN); let myRequest = { method: 'get', url, headers: { Accept: 'application/json', 'Content-Type': 'application/json', Authorization: 'Bearer ' + token, }, params: { ...data, }, timeout: 30 * 1000, // withCredentials: true, }; console.log('My request', myRequest); return await axios(myRequest) .then((response) => { if (response.data?.code === 401) { logout(); return; } else { return response; } }) .then((response) => { if (response.data?.code === 401) { logout(); return; } else { return response; } }) .catch((error) => { console.log(error.request); const err = { message: 'error', status: error.request.status, }; return err; }); } export async function PostLogin(url, json) { let myRequest = { method: 'post', url, headers: { Accept: 'application/json', 'Content-Type': 'application/json', }, timeout: 30 * 1000, data: JSON.stringify(json), }; console.log('post data mobile', myRequest); return await axios(myRequest) .then((response) => { if (response.data?.code === 401) { logout(); return; } else { return response; } }) .then((response) => { if (response.data?.code === 401) { logout(); return; } else { return response; } }) .catch((error) => { console.log(error); const err = { message: 'error', status: error.request.status, }; return err; }); } export async function PostData(url, json, isAuth = true) { const token = await AsyncStorage.getItem(KEY.TOKEN); console.log(token); let myRequest = { method: 'post', url, headers: { Accept: 'application/json', 'Content-Type': 'application/json', Authorization: 'Bearer ' + token, }, timeout: 30 * 1000, data: JSON.stringify(json), }; console.log('post data mobile', myRequest); return await axios(myRequest) .then((response) => { if (response.data?.code === 401) { logout(); return; } else { return response; } }) .then((response) => { if (response.data?.code === 401) { logout(); return; } else { return response; } }) .catch((error) => { console.log(error.request); const err = { message: 'error', status: error.request.status, }; return err; }); } export async function PostFormData(url, data) { const token = await AsyncStorage.getItem(KEY.TOKEN); const source = axios.CancelToken.source(); const timeout = setTimeout(() => { source.cancel(); // Timeout Logic }, 60000); console.log(token); let myRequest = { method: 'post', url, headers: { Accept: 'application/json', 'Content-Type': 'multipart/form-data', Authorization: 'Bearer ' + token, }, timeout: 60000, data: data, cancelToken: source.token, }; console.log('post data mobile', myRequest.data); return await axios(myRequest) .then((response) => { clearTimeout(timeout); if (response.data?.code === 401) { logout(); return; } else { return response; } }) .then((response) => { clearTimeout(timeout); if (response.data?.code === 401) { logout(); return; } else { return response; } }) .catch((error) => { clearTimeout(timeout); console.log('errorTimeout', error); const err = { message: 'error', status: error.request.status, }; return err; }); } /** * * @param {*} url is link api * @param {*} json is input format json to request server * @param {*} isAuth is state auth */ export async function PutData(url, json, isAuth = true) { const token = await AsyncStorage.getItem(KEY.TOKEN); let myRequest = { method: 'put', url, headers: { Accept: 'application/json', 'Content-Type': 'application/json', Authorization: 'Bearer ' + token, }, data: JSON.stringify(json), }; console.log('PutData', myRequest); return await axios(myRequest) .then((response) => { if (response.data?.code === 401) { logout(); return; } else { return response; } }) .then((response) => { if (response.data?.code === 401) { logout(); return; } else { return response; } }) .catch((error) => { console.log(error.request); const err = { message: 'error', status: error.request.status, }; return err; }); } export function logout() { showAlert(TYPE.ERROR, I18n.t('Notification'), I18n.t('LoginSessionEnd')); DeviceEventEmitter.emit('logout'); }