Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

160
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda