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  }