-
Erkki Heino authoredErkki Heino authored
import 'rxjs';
import _ from 'lodash';
import { ajax } from 'rxjs/observable/dom/ajax';
import { combineEpics } from 'redux-observable';
import { updateResults, FETCH_RESULTS } from '../actions';
const getSuggestionsEpic = (action$, store) => {
const searchUrl = 'http://localhost:3000/search';
return action$.ofType(FETCH_RESULTS)
.debounceTime(500)
.switchMap(() => {
const { query, datasets } = store.getState().search;
const dsParams = _.map(datasets, ds => `dataset=${ds}`).join('&');
const requestUrl = `${searchUrl}?q=${query}&${dsParams}`;
return ajax.getJSON(requestUrl)
.map(response => updateResults(response));
});
};
const rootEpic = combineEpics(getSuggestionsEpic);
export default rootEpic;