Я создаю приложение RN с redux (+ thunk + persistant) и axios (+ перехватчик для обновления токена) для вызовов API.
Я организовал свою логику приложения как отдельные файлы с действиями, объединенными с вызовами API axios (потому что это очень понятно для меня) и редукторами в разных файлах.
И проблема в том, что жетоны обновления должны обрабатываться в файлах действий.
Например, файл простых действий "projects.js":
import createAuthRefreshInterceptor from 'axios-auth-refresh';
import axios from 'axios';
const refreshAuthLogic = failedRequest => axios.post('http://domain.pl/api/refresh-token').then(tokenRefreshResponse => {
// >>>> save token to persistant part of REDUX ?????
failedRequest.response.config.headers['Authorization'] = 'Bearer ' + // >>>> get token from persistant part of REDUX ?????;
return Promise.resolve();
});
/*
* action types
*/
export const FETCH_PROJECTS = 'FETCH_PROJECTS'
/*
* API URL & config
*/
const apiUrl = 'http://domain.pl/api/projects';
/*
* action creators
*/
export const fetchProjects = () => {
return (dispatch, getState) => {
const state = getState();
createAuthRefreshInterceptor(axios, refreshAuthLogic);
return axios.get(apiUrl, {headers: {'Authorization': "bearer " + state.auth.user.access_token }})
.then(response => {
dispatch(fetchProjectsSuccess(response.data))
})
.catch(error => {
throw(error);
});
};
};
export const fetchProjectsSuccess = (projects) => {
return {
type: FETCH_PROJECTS,
projects: projects
}
};
Я пытаюсь сделать это, как показано ниже, но всегда получаю некоторые ошибки. Доступ к состоянию Redux в создателе действия?
Как лучше всего обрабатывать токены доступа / обновления в файле действий (axios + redux)?
благодарю вас!