@shopgate/engage
Version:
Shopgate's ENGAGE library.
52 lines (50 loc) • 2.52 kB
JavaScript
import { connect } from 'react-redux';
import { getShopSettings, getConfigFetching } from '@shopgate/engage/core/config';
import { getPreferredLocationAddress } from '@shopgate/engage/locations/selectors';
import { getCheckoutOrder, getCheckoutBillingAddress, getCheckoutShippingAddress, getCheckoutPickupAddress, getCheckoutTaxLines, getCheckoutPaymentTransactions, getIsReserveOnly, getIsShippingAddressSelectionEnabled, getIsPickupContactSelectionEnabled, getCheckoutFulfillmentSlot } from '@shopgate/engage/checkout/selectors/order';
import { getNeedsPaymentForOrder } from '@shopgate/engage/checkout/selectors/payment';
import { getCampaignAttribution } from '@shopgate/engage/checkout/selectors/campaign';
import { fetchCart } from '@shopgate/pwa-common-commerce/cart';
import { prepareCheckout, fetchCheckoutOrder, updateCheckoutOrder, submitCheckoutOrder } from '@shopgate/engage/checkout/actions';
import { clearCheckoutCampaign } from '@shopgate/engage/checkout/action-creators';
import { historyReplace, showModal, makeIsLastStackEntry } from '@shopgate/engage/core';
/**
* @returns {Function}
*/
function makeMapStateToProps() {
const isLastStackEntry = makeIsLastStackEntry();
/**
* @param {Object} state The application state.
* @param {Object} props The component props
* @returns {Object}
*/
return (state, props) => ({
isDataReady: !getConfigFetching(state) && !!getCheckoutOrder(state),
needsPayment: getNeedsPaymentForOrder(state) || false,
paymentTransactions: getCheckoutPaymentTransactions(state),
fulfillmentSlot: getCheckoutFulfillmentSlot(state),
shopSettings: getShopSettings(state),
userLocation: getPreferredLocationAddress(state),
billingAddress: getCheckoutBillingAddress(state),
shippingAddress: getCheckoutShippingAddress(state),
pickupAddress: getCheckoutPickupAddress(state),
taxLines: getCheckoutTaxLines(state),
orderReserveOnly: getIsReserveOnly(state),
isShippingAddressSelectionEnabled: getIsShippingAddressSelectionEnabled(state),
isPickupContactSelectionEnabled: getIsPickupContactSelectionEnabled(state),
campaignAttribution: getCampaignAttribution(state),
order: getCheckoutOrder(state),
isLastStackEntry: isLastStackEntry(state, props)
});
}
const mapDispatchToProps = {
historyReplace,
fetchCart,
prepareCheckout,
fetchCheckoutOrder,
updateCheckoutOrder,
submitCheckoutOrder,
clearCheckoutCampaign,
showModal
};
export default connect(makeMapStateToProps, mapDispatchToProps);