UNPKG

@shopgate/pwa-common-commerce

Version:

Commerce library for the Shopgate Connect PWA.

10 lines 3.51 kB
import _regeneratorRuntime from"@babel/runtime/regenerator";function _extends(){_extends=Object.assign||function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source){if(Object.prototype.hasOwnProperty.call(source,key)){target[key]=source[key];}}}return target;};return _extends.apply(this,arguments);}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg);var value=info.value;}catch(error){reject(error);return;}if(info.done){resolve(value);}else{Promise.resolve(value).then(_next,_throw);}}function _asyncToGenerator(fn){return function(){var self=this,args=arguments;return new Promise(function(resolve,reject){var gen=fn.apply(self,args);function _next(value){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"next",value);}function _throw(err){asyncGeneratorStep(gen,resolve,reject,_next,_throw,"throw",err);}_next(undefined);});};}import{mutable}from'@shopgate/pwa-common/helpers/redux';import PipelineRequest from'@shopgate/pwa-core/classes/PipelineRequest';import{getWishlistItemNotesEnabled,getWishlistItemQuantityEnabled}from'@shopgate/engage/core/selectors';import{SHOPGATE_USER_ADD_FAVORITES}from"../constants/Pipelines";import{successAddFavorites,errorAddFavorites}from"../action-creators";import{getHasMultipleFavoritesListsSupport,getFavoritesDefaultList}from"../selectors";/** * Adds a single product to the favorite list using the `addFavorites` pipeline. * @param {string} productId Id of the product to be added. * @param {string} listId Id of the list to be added. * @param {number} quantity New favorites quantity to set * @param {string} notes New favorites notes to set * @param {boolean} showToast Whether to show a confirmation toast after product was added * @returns {Function} A redux thunk. */function addFavorites(productId){var listId=arguments.length>1&&arguments[1]!==undefined?arguments[1]:null;var quantity=arguments.length>2?arguments[2]:undefined;var notes=arguments.length>3?arguments[3]:undefined;var showToast=arguments.length>4&&arguments[4]!==undefined?arguments[4]:true;return(/*#__PURE__*/function(){var _ref=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(dispatch,getState){var state,hasMultiSupport,quantityEnabled,notesEnabled,defaultList,takenListId,request;return _regeneratorRuntime.wrap(function _callee$(_context){while(1)switch(_context.prev=_context.next){case 0:state=getState();hasMultiSupport=getHasMultipleFavoritesListsSupport(state);quantityEnabled=getWishlistItemQuantityEnabled(state);notesEnabled=getWishlistItemNotesEnabled(state);// Fallback for deprecated calls without list id. defaultList=getFavoritesDefaultList(state);takenListId=listId||defaultList.id;request=new PipelineRequest(SHOPGATE_USER_ADD_FAVORITES).setInput(_extends({productId:productId},hasMultiSupport?{favoritesListId:takenListId}:null,{},quantityEnabled&&quantity!==null?{quantity:quantity}:null,{},notesEnabled&&notes!==null?{notes:notes}:null)).setRetries(0).dispatch();_context.prev=7;_context.next=10;return request;case 10:dispatch(successAddFavorites(productId,takenListId,showToast));_context.next=16;break;case 13:_context.prev=13;_context.t0=_context["catch"](7);dispatch(errorAddFavorites(productId,_context.t0,takenListId));case 16:return _context.abrupt("return",request);case 17:case"end":return _context.stop();}},_callee,null,[[7,13]]);}));return function(_x,_x2){return _ref.apply(this,arguments);};}());}export default mutable(addFavorites);