@shopgate/engage
Version:
Shopgate's ENGAGE library.
5 lines • 1.22 kB
JavaScript
import{logger}from'@shopgate/pwa-core/helpers';import PipelineRequest from'@shopgate/pwa-core/classes/PipelineRequest';import{mutable}from'@shopgate/pwa-common/helpers/redux';import{submitReservationRequest,submitReservationSuccess,submitReservationError}from"../action-creators";import{SHOPGATE_STOREFRONT_CREATE_ORDER}from"../constants";import createOrder from"../helpers/createOrder";/**
* @param {Object} values The user order.
* @param {Object} product The current product
* @returns {Function} A redux thunk.
*/function submitReservation(values,product){return function(dispatch,getState){dispatch(submitReservationRequest(values));var order=createOrder(values,product,getState);var request=new PipelineRequest(SHOPGATE_STOREFRONT_CREATE_ORDER).setInput({orders:[order]}).dispatch();request.then(function(result){if(result.errors&&result.errors.length>0){logger.error(result.errors);dispatch(submitReservationError(result.errors));return result;}dispatch(submitReservationSuccess(result.orderNumbers));return result;})["catch"](function(error){logger.error(error);dispatch(submitReservationError([error]));return error;});return request;};}/** @mixes {MutableFunction} */export default mutable(submitReservation);