Files
freeCodeCamp/common/app/routes/Jobs/redux/save-job-saga.js

32 lines
741 B
JavaScript
Raw Normal View History

2016-02-25 18:30:10 -08:00
import { Observable } from 'rx';
import { push } from 'react-router-redux';
2016-02-25 18:30:10 -08:00
import { saveJobCompleted } from './actions';
import { saveJob } from './types';
import { handleError } from '../../../redux/types';
export default ({ services }) => ({ dispatch }) => next => {
return function saveJobSaga(action) {
if (action.type !== saveJob) {
return next(action);
}
const { payload: job } = action;
return services.createService$({
service: 'jobs',
params: { job }
})
.retry(3)
.flatMap(job => Observable.of(
saveJobCompleted(job),
push('/jobs/new/preview')
))
2016-02-25 18:30:10 -08:00
.catch(error => Observable.just({
type: handleError,
error
}))
.doOnNext(dispatch);
};
};