Necesito introducir el manejo de componentes de tostadas mientras el mensaje "algo salió mal" y la solicitud falla en axios. Pero necesito mostrar un mensaje de error diferente para cada punto final. ¿Cómo implementar eso?
Aquí está mi código
const getErrorMessage = (error: any): string => { if (error?.request?.responseURL?.includes('Authentication/signin') && error?.request === StatusCode.Fobbiden) { return t('invalidEmailOrPassword'); } else if (error?.response?.data) { return error.response.data; } else if (error?.response?.data?.length) { return error.response.data; } else { return t('somethingWentWrong'); }};
export const createAxios = () => { const baseURL = config.apiUrl; const token = store.getState()?.auth?.token; const refreshToken = store.getState()?.auth?.refreshToken; let headers: any = { 'Content-Type': 'application/json' }; if (token) { headers = { ...headers, Authorization: `Bearer ${token}` }; } const instance = axios.create({ baseURL, headers }); instance.interceptors.response.use( (res) => Promise.resolve(res.data), async (error) => { if (error?.request?.status === StatusCode.Unauthorized) { try { const body = { token: token, refreshToken: refreshToken }; const _instance = axios.create({ baseURL: config.apiUrl, headers: headers }); const tokenResponse = await _instance.post(config.token_url, body); if (tokenResponse) { await store.dispatch({ type: SET_TOKEN, payload: tokenResponse?.data?.accessToken }); await store.dispatch({ type: SET_REFRESH_TOKEN, payload: tokenResponse?.data?.refreshToken }); await storeData(Constants.asyncKeys.AUTH_TOKEN, tokenResponse?.data?.accessToken); await storeData(Constants.asyncKeys.REFRESH_TOKEN, tokenResponse?.data?.refreshToken); headers.Authorization = 'Bearer ' + tokenResponse?.data?.accessToken; error.config.headers.Authorization = 'Bearer ' + tokenResponse?.data?.accessToken; const failedResponse = await axios.request(error.config); if (failedResponse) { return failedResponse.data; } } // eslint-disable-next-line no-shadow } catch (error: any) { error.request.status && Alert.alert(t('error'), getErrorMessage(error)); } return Promise.reject(error?.response); } return Promise.reject(error?.response); }, );