Home Manual Reference Source

App/Sagas/GetJobsSaga.js

import {take, put, call} from 'redux-saga/effects';
import Types from '../Actions/Types';
import Actions from '../Actions/Creators';

export default (api) => {
  function * worker() {
    const response = yield call(api.getJenkinsJobs);

    if (response.ok) {
      yield put(Actions.getJobsSuccess(response.data.jobs));
    } else {
      yield put(Actions.getJobsFailure(response.statusCode));
    }
  }

  function * watcher() {
    while (true) {
      yield take(Types.GETJOBS_ATTEMPT);
      yield call(worker);
    }
  }

  return {
    watcher,
    worker
  };
};