Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

159
Vistas
Introduce error message handling while "something went wrong" message and request failing - REACT NATIVE

I need to introduce toast component handling while "something went wrong" message and request failing in axios. But I need to show different error message for every endpoint. How to implement that?

Here is my code

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);
    },
);
about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda