import { Middleware } from '@reduxjs/toolkit'; import { CheckoutResult, MiddlewareParams } from '../../../types'; import { checkoutApi } from '../../../data/client/checkout'; export const setAddressMiddleware: 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; const { endpoints: apiEndpoints } = checkoutApi; const hasNoAddresses = !preOrder?.shipping_address || !preOrder?.billing_address; const isCustomerDelivery = !preOrder?.delivery_option || preOrder.delivery_option.delivery_option_type === 'customer'; const firstAddressPk = addresses?.[0]?.pk; if ( hasNoAddresses && addresses?.length > 0 && isCustomerDelivery && firstAddressPk ) { dispatch( apiEndpoints.setAddresses.initiate({ shippingAddressPk: firstAddressPk, billingAddressPk: firstAddressPk }) ); return null; } return result; }; }; Object.defineProperty(setAddressMiddleware, 'name', { value: 'setAddressMiddleware' });