Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

155
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!