Files
freeCodeCamp/common/app/redux/fetch-user-saga.js

34 lines
969 B
JavaScript
Raw Normal View History

import { Observable } from 'rx';
import types from './types';
import {
addUser,
updateThisUser,
createErrorObservable,
showSignIn,
updateTheme,
addThemeToBody
} from './actions';
2016-01-27 11:34:44 -08:00
const { fetchUser } = types;
2016-04-24 21:54:48 -07:00
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());
}
const user = entities.user[result];
const isNightMode = user.theme === 'night';
return Observable.of(
addUser(entities),
updateThisUser(result),
isNightMode ? updateTheme(user.theme) : null,
isNightMode ? addThemeToBody(user.theme) : null
);
2016-04-24 21:54:48 -07:00
})
.catch(createErrorObservable);
2016-04-24 21:54:48 -07:00
});
}