github.com/muhammedhassanm/blockchain@v0.0.0-20200120143007-697261defd4d/blockapps-ba-master/ui/src/scenes/Projects/components/BidModal/bidModal.saga.js (about) 1 import { takeLatest, put, call } from 'redux-saga/effects'; 2 import { 3 BID_SUBMIT, 4 bidSuccess, 5 bidFailure 6 } from './bidModal.actions'; 7 import { browserHistory } from 'react-router'; 8 import { API_URL, API_MOCK } 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 bidUrl = API_URL + '/projects/:name/bids'; 14 15 function submitBidApiCall( 16 name, 17 supplier, 18 amount 19 ){ 20 21 if(API_MOCK) { 22 return new Promise(function(resolve,reject){ 23 resolve({}); 24 }); 25 } 26 else { 27 const apiUrl = bidUrl.replace(':name',name); 28 return fetch(apiUrl, { 29 method: 'POST', 30 headers: { 31 'Content-Type': 'application/json;charset=utf-8', 32 'Accept': 'application/json' 33 }, 34 body: JSON.stringify({ supplier, amount }) 35 }) 36 .then(handleApiError) 37 .then(function(response) { 38 return response.json(); 39 }) 40 .catch(function(error){ 41 throw error; 42 }); 43 } 44 } 45 46 function* submitBid(action){ 47 try { 48 yield put(showLoading()); 49 yield call( 50 submitBidApiCall, 51 action.name, 52 action.supplier, 53 action.amount); 54 yield put(hideLoading()); 55 yield put(bidSuccess()); 56 yield put(setUserMessage('Bid Success')); 57 browserHistory.goBack(); 58 } 59 catch(err) { 60 yield put(hideLoading()); 61 yield put(bidFailure(err)); 62 } 63 } 64 65 export default function* watchBidSubmit() { 66 yield takeLatest(BID_SUBMIT, submitBid); 67 }