UNPKG

@shopgate/engage

Version:
7 lines 1.96 kB
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);}import{produce}from'immer';import{REQUEST_ORDER_DETAILS,RECEIVE_ORDER_DETAILS,RECEIVE_ORDER_HISTORY,ERROR_ORDER_DETAILS,CLEAR_ORDERS}from"../constants";export var CACHE_TIME=60*60*1000;// 1 hr in milliseconds var defaultState={};/** * Stores orders by the order number. * @param {Object} [state={}] The current state. * @param {Object} action The action object. * @returns {Object} The new state. */var ordersByNumber=function ordersByNumber(){var state=arguments.length>0&&arguments[0]!==undefined?arguments[0]:defaultState;var action=arguments.length>1?arguments[1]:undefined;/* eslint-disable no-param-reassign */var producer=produce(function(draft){switch(action.type){case REQUEST_ORDER_DETAILS:{if(!action.orderNumber)break;draft[action.orderNumber]=_extends({},draft[action.orderNumber],{isFetching:true,expires:0});break;}case RECEIVE_ORDER_DETAILS:{draft[action.order.orderNumber]=_extends({},draft[action.order.orderNumber],{order:_extends({},action.order,{lineItemCount:action.order.lineItems.length}),isFetching:false,expires:Date.now()+CACHE_TIME});break;}case RECEIVE_ORDER_HISTORY:{action.orders.forEach(function(order){var _draft$order$orderNum;draft[order.orderNumber]=_extends({},draft[order.orderNumber],{order:_extends({},(_draft$order$orderNum=draft[order.orderNumber])===null||_draft$order$orderNum===void 0?void 0:_draft$order$orderNum.order,{},order)});});break;}case ERROR_ORDER_DETAILS:{if(!action.orderNumber)break;draft[action.orderNumber]={isFetching:false,expires:0};break;}case CLEAR_ORDERS:{return defaultState;}default:break;}return undefined;});/* eslint-enable no-param-reassign */return producer(state);};export default ordersByNumber;