Files
freeCodeCamp/common/app/redux/fetch-user-saga.js
2016-07-28 23:40:01 -07:00

29 lines
772 B
JavaScript

import { Observable } from 'rx';
import { fetchUser } from './types';
import {
addUser,
updateThisUser,
updateCompletedChallenges,
createErrorObservable,
showSignIn
} from './actions';
export default function getUserSaga(action$, getState, { services }) {
return action$
.filter(action => action.type === fetchUser)
.flatMap(() => {
return services.readService$({ service: 'user' })
.flatMap(({ entities, result })=> {
if (!entities || !result) {
return Observable.just(showSignIn());
}
return Observable.of(
addUser(entities),
updateThisUser(result),
updateCompletedChallenges(result)
);
})
.catch(createErrorObservable);
});
}