Files
freeCodeCamp/common/app/Map/redux/fetch-map-ui-epic.js
2018-02-23 17:13:02 +00:00

42 lines
965 B
JavaScript

import { ofType } from 'redux-epic';
import debug from 'debug';
import {
types as appTypes,
createErrorObservable
} from '../../redux';
import { types, fetchMapUiComplete } from './';
import { langSelector } from '../../Router/redux';
import { shapeChallenges } from '../../redux/utils';
const isDev = debug.enabled('fcc:*');
export default function fetchMapUiEpic(
actions,
{ getState },
{ services }
) {
return actions::ofType(
appTypes.appMounted,
types.fetchMapUi.start
)
.flatMapLatest(() => {
const lang = langSelector(getState());
const options = {
params: { lang },
service: 'map-ui'
};
return services.readService$(options)
.retry(3)
.map(({ entities, ...res }) => ({
entities: shapeChallenges(
entities,
isDev
),
...res
}))
.map(fetchMapUiComplete)
.catch(createErrorObservable);
});
}