После того как пользователь прошел аутентификацию, мне нужно вызвать 2 функции (AsyncStorage.setItem
и setAPIAuthorization
), а затем 2 действия с избыточностью (LOAD_USER
и SET_SESSION_USER
). Как бы я достиг этого, основываясь на следующей попытке? Или я должен создать избыточные действия для обеих функций?
const loginUserEpic = (action$, state$) =>
action$.pipe(
ofType('LOGIN_USER'),
mergeMap(() =>
from(axios.post(`/auth`, {})).pipe(
mergeMap(response =>
of(
AsyncStorage.setItem('id_token', response.data.token),
setAPIAuthorization(response.data.token),
{
type: 'LOAD_USER'
},
{
type: 'SET_SESSION_USER',
user: response.data.user
}
)
),
catchError(error => console.log(error))
)
)
);
Благодаря Anas ниже, вот обновление, которое я использую для достижения того, чего я хочу. Пока успешно. После сохранения id_token
он включается в заголовок любых последующих вызовов API. По этой причине я должен убедиться, что id_token
сохранен перед вызовом LOAD_USER
, который является вызовом API.
const loginUserEpic = (action$, state$) =>
action$.pipe(
ofType('LOGIN_USER'),
mergeMap(() =>
from(axios.post(`/auth`, {})).pipe(
mergeMap(response => {
return new Observable(observer => {
AsyncStorage.setItem('id_token', response.data.token);
setAPIAuthorization(response.data.token);
observer.next(
{
type: 'LOAD_USER'
},
{
type: 'SET_SESSION_USER',
user: response.data.user
}
);
});
}),
catchError(error => console.log(error))
)
)
);