@shopgate/engage
Version:
Shopgate's ENGAGE library.
7 lines • 1.15 kB
JavaScript
import{produce}from'immer';import{REQUEST_ORDER_HISTORY,RECEIVE_ORDER_HISTORY,ERROR_ORDER_HISTORY,CLEAR_ORDERS}from"../constants";export var CACHE_TIME=60*60*1000;// 1 hr in milliseconds
var defaultState={orders:[]};/**
* Stores orders by the order number.
* @param {Object} [state={}] The current state.
* @param {Object} action The action object.
* @returns {Object} The new state.
*/var orders=function orders(){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_HISTORY:{draft.isFetching=true;break;}case RECEIVE_ORDER_HISTORY:{draft.isFetching=false;draft.orders=[].concat(draft.orders.slice(0,action.offset),action.orders.map(function(order){return order.orderNumber;}));draft.totalOrderCount=action.totalOrderCount;break;}case ERROR_ORDER_HISTORY:{draft.isFetching=false;break;}case CLEAR_ORDERS:{return defaultState;}default:break;}return undefined;});/* eslint-enable no-param-reassign */return producer(state);};export default orders;