'Refresh token is working, but showing error message- React Native

I am struggling to find out the issue with my refresh token mechanism. I have a some problem that I can't fix. Refresh token is working, but it showing an alert 'somthingWentWrong' but the application is still in a good state and working properly.

Here is my code, please tell me where is my mistake?

import axios from 'axios';
import config from './env';
import { Alert } from 'react-native';
import { Constants, storeData } from '@utils';
import { store } from '@data/store';
import { t } from 'i18next';



enum StatusCode {
BadRequest = 400,
Unauthorized = 401,
Fobbiden = 403,
NotFound = 404,
NotAllowed = 405,
Conflict = 409,
ServerError = 500,

}

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: '[AUTH] SET_TOKEN', payload: tokenResponse?.data?.accessToken });
                    await store.dispatch({ type: '[AUTH] 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);
    },
);

return instance;

};



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source