import { Middleware } from '@reduxjs/toolkit'; import { CheckoutResult, MiddlewareParams } from '../../../types'; import { checkoutApi } from '../../../data/client/checkout'; export const dataSourceShippingOptionMiddleware: Middleware = ({ getState, dispatch }: MiddlewareParams) => { return (next) => (action) => { const result = next(action) as CheckoutResult; const preOrder = result?.payload?.pre_order; if (!preOrder) { return result; } const { dataSourceShippingOptions } = getState().checkout; const { endpoints: apiEndpoints } = checkoutApi; if ( dataSourceShippingOptions?.length > 0 && !preOrder?.data_source_shipping_options ) { const selectedPks = dataSourceShippingOptions .map((opt) => opt.data_source_shipping_options?.[0]?.pk) .filter((pk) => pk); if (selectedPks.length > 0) { dispatch( apiEndpoints.setDataSourceShippingOptions.initiate(selectedPks) ); return null; } } return result; }; }; Object.defineProperty(dataSourceShippingOptionMiddleware, 'name', { value: 'dataSourceShippingOptionMiddleware' });