import { Middleware } from '@reduxjs/toolkit'; import { CheckoutResult, MiddlewareParams } from '../../../types'; import { setShippingStepCompleted } from '../../reducers/checkout'; export const shippingStepMiddleware: Middleware = ({ getState, dispatch }: MiddlewareParams) => { return (next) => (action) => { const result = next(action) as CheckoutResult; const preOrder = result?.payload?.pre_order; if (!preOrder) { return result; } const { addressList: addresses } = getState().checkout; if (preOrder) { const stepCompleted = [ preOrder.delivery_option?.delivery_option_type === 'retail_store' ? true : preOrder.shipping_address?.pk, preOrder.billing_address?.pk, preOrder.shipping_option?.pk, addresses.length > 0 ].every(Boolean); dispatch(setShippingStepCompleted(stepCompleted)); } return result; }; }; Object.defineProperty(shippingStepMiddleware, 'name', { value: 'shippingStepMiddleware' });