Проблема с поставщиком авторизации моего приложения expo (переключение с локального хранилища AsyncStorage на API с axios)

#node.js #react-native #authentication #axios #expo

Вопрос:

У меня была проблема с приложением, которое я разрабатываю в течение некоторого времени. В основном, используя API, созданный с помощью express, я создал пространство для подключения с expo проблема в том, что после подключения данные извлекаются из axios и сохраняются в локальном хранилище благодаря AsyncStorage, это означает, что если я изменю данные пользователя, они не будут обновляться, пока не восстановятся, и я не знаю, как использовать axios или fetch вместо AsyncStorage.

Вот мой поставщик аутентификации, вызывающий эту проблему :

https://gist.github.com/quentinsvn/145609c86d2d42e6825384a16a77f352

Это константа «getAuthState ()«, которая позволяет восстанавливать данные пользователей после вызова константой «handleLogin ()«.

 // Get Auth state
    const getAuthState = async () => {
        try {
            //GET TOKEN amp;amp; USER
            let token = await AsyncStorage.getItem(TOKEN_KEY);
            let user = await AsyncStorage.getItem(USER_KEY);
            user = JSON.parse(user);

            if (token !== null amp;amp; user!== null) await handleLogin({token, user});
            else await handleLogout();

            return {token, user};
        } catch (error) {
            throw new Error(error)
        }
    };

    // Handle Login
    const handleLogin = async (data) => {
        try{
            //STORE DATA
            let {token, user} = data;
            let data_ = [[USER_KEY, JSON.stringify(user)], [TOKEN_KEY, token]];
            await AsyncStorage.multiSet(data_);

            //AXIOS AUTHORIZATION HEADER
            axios.defaults.headers.common["Authorization"] = `Bearer ${data.token}`;

            //DISPATCH TO REDUCER
            dispatch({type: LOGGED_IN, user:data.user});
        }catch (error) {
            throw new Error(error);
        }
    };
 

Я также сделал редуктор и услуги аутентификации доступными для gist.

Конкретная идея заключалась бы в обновлении пользовательских данных в режиме реального времени вместо этого с помощью axios или функции fetch ().

Заранее благодарю вас.