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 }