@shopgate/engage
Version:
Shopgate's ENGAGE library.
6 lines • 1.97 kB
JavaScript
import{produce}from'immer';import{FETCH_CHECKOUT_ORDER,FETCH_CHECKOUT_ORDER_SUCCESS,FETCH_CHECKOUT_ORDER_ERROR,CLEAR_CHECKOUT_ORDER,FETCH_PAYMENT_METHODS,FETCH_PAYMENT_METHODS_SUCCESS,FETCH_PAYMENT_METHODS_ERROR,ADD_CHECKOUT_CAMPAIGN,CLEAR_CHECKOUT_CAMPAIGN}from"../constants/actionTypes";var initialState={paymentMethods:{isFetching:false,data:[]},checkoutOrder:{isFetching:false,data:null,errors:[]},checkoutSubmit:{errors:[]},checkoutCampaign:{code:null,sentTime:null,receivedTime:null,notificationId:null,locale:null,distributionIndex:null}};/**
* The reducer for all checkout related state.
* @param {Object} state The application state.
* @param {Object} action The redux action.
* @returns {Object}
*/export default function checkoutReducer(){var state=arguments.length>0&&arguments[0]!==undefined?arguments[0]:initialState;var action=arguments.length>1?arguments[1]:undefined;/* eslint-disable no-param-reassign */var producer=produce(function(draft){switch(action.type){case FETCH_CHECKOUT_ORDER:{draft.checkoutOrder.isFetching=true;break;}case FETCH_CHECKOUT_ORDER_SUCCESS:{draft.checkoutOrder.isFetching=false;draft.checkoutOrder.errors=[];draft.checkoutOrder.data=action.order;break;}case FETCH_CHECKOUT_ORDER_ERROR:{draft.checkoutOrder.isFetching=false;draft.checkoutOrder.errors=action.errors;break;}case CLEAR_CHECKOUT_ORDER:{draft.checkoutOrder.isFetching=false;draft.checkoutOrder.errors=[];draft.checkoutOrder.data=null;break;}case FETCH_PAYMENT_METHODS:{draft.paymentMethods.isFetching=true;break;}case FETCH_PAYMENT_METHODS_SUCCESS:{draft.paymentMethods.isFetching=false;draft.paymentMethods.data=action.paymentMethods;break;}case FETCH_PAYMENT_METHODS_ERROR:{draft.paymentMethods.isFetching=false;break;}case ADD_CHECKOUT_CAMPAIGN:{draft.checkoutCampaign=action.data;break;}case CLEAR_CHECKOUT_CAMPAIGN:{draft.checkoutCampaign=initialState.checkoutCampaign;break;}default:break;}});/* eslint-enable no-param-reassign */return producer(state);}