github.com/muhammedhassanm/blockchain@v0.0.0-20200120143007-697261defd4d/blockapps-ba-master/ui/src/scenes/Projects/components/ProjectCreate/sagas/project-create.saga.js (about)

     1  import { takeLatest, put, call } from 'redux-saga/effects';
     2  import {
     3    PROJECT_CREATE,
     4    projectCreateSuccess,
     5    projectCreateFailure
     6  } from '../actions/project-create.actions';
     7  import { browserHistory } from 'react-router';
     8  import { API_URL } from '../../../../../environment';
     9  import { handleApiError } from '../../../../../lib/apiErrorHandler';
    10  import { showLoading, hideLoading } from 'react-redux-loading-bar';
    11  import { setUserMessage } from '../../../../../components/UserMessage/user-message.action';
    12  
    13  const projectsUrl = API_URL + '/projects';
    14  
    15  function projectCreateApiCall(project) {
    16    return fetch(projectsUrl, {
    17      method: 'POST',
    18      headers: {
    19        'Content-Type': 'application/json;charset=utf-8',
    20        'Accept': 'application/json'
    21      },
    22      body: JSON.stringify(project)
    23    })
    24      .then(handleApiError)
    25      .then(function(response) {
    26        return response.json();
    27      })
    28      .catch(function(error){
    29        throw error;
    30      });
    31  }
    32  
    33  function* submitProjectCreate(action) {
    34    try {
    35      yield put(showLoading());
    36      const response = yield call(projectCreateApiCall, action.project);
    37      yield put(hideLoading());
    38      if(response.data.project) {
    39        yield put(projectCreateSuccess(response.data.project));
    40        yield put(setUserMessage('Contract Created Successfully'));
    41        browserHistory.push('/projects');
    42        yield put(setUserMessage('Contract Created Successfully'));
    43      }
    44    }
    45    catch(err)
    46    {
    47      yield put(projectCreateFailure(err));
    48      yield put(hideLoading());
    49    }
    50  }
    51  
    52  export default function* watchProjectCreate() {
    53    yield takeLatest(PROJECT_CREATE, submitProjectCreate);
    54  }