Local Pickup: Fix render logic for regular shipping rates

This commit is contained in:
Nadir Seghir 2023-01-12 12:43:34 +01:00
parent 612ddb34d2
commit 7bfda113b0
3 changed files with 26 additions and 19 deletions

View File

@ -98,7 +98,6 @@ const ShippingRatesControl = ( {
};
const { isEditor } = useEditorContext();
const { hasSelectedLocalPickup } = useShippingData();
return (
<LoadingMask
isLoading={ isLoadingRates }
@ -109,21 +108,21 @@ const ShippingRatesControl = ( {
showSpinner={ true }
>
<ExperimentalOrderShippingPackages.Slot { ...slotFillProps } />
{ hasSelectedLocalPickup &&
shippingRates.length > 1 &&
! isEditor && (
<StoreNotice
className="wc-block-components-notice"
isDismissible={ false }
status="warning"
>
{ __(
'Multiple shipments must have the same pickup location',
'woo-gutenberg-products-block'
) }
</StoreNotice>
) }
<ExperimentalOrderShippingPackages>
{ hasSelectedLocalPickup &&
shippingRates.length > 1 &&
! isEditor && (
<StoreNotice
className="wc-block-components-notice"
isDismissible={ false }
status="warning"
>
{ __(
'Multiple shipments must have the same pickup location',
'woo-gutenberg-products-block'
) }
</StoreNotice>
) }
<Packages
packages={ shippingRates }
noResultsMessage={ noResultsMessage }

View File

@ -33,6 +33,7 @@ interface CheckoutAddress {
showBillingFields: boolean;
forcedBillingAddress: boolean;
useBillingAsShipping: boolean;
needsShipping: boolean;
}
/**
@ -94,6 +95,7 @@ export const useCheckoutAddress = (): CheckoutAddress => {
defaultAddressFields,
useShippingAsBilling,
setUseShippingAsBilling: __internalSetUseShippingAsBilling,
needsShipping,
showShippingFields:
! forcedBillingAddress && needsShipping && ! prefersCollection,
showBillingFields:

View File

@ -32,12 +32,18 @@ const FrontendBlock = ( {
children: JSX.Element;
className?: string;
} ) => {
const checkoutIsProcessing = useSelect( ( select ) =>
select( CHECKOUT_STORE_KEY ).isProcessing()
const { checkoutIsProcessing, prefersCollection } = useSelect(
( select ) => {
const checkoutStore = select( CHECKOUT_STORE_KEY );
return {
checkoutIsProcessing: checkoutStore.isProcessing(),
prefersCollection: checkoutStore.prefersCollection(),
};
}
);
const { showShippingFields, useBillingAsShipping } = useCheckoutAddress();
const { needsShipping } = useCheckoutAddress();
if ( ! showShippingFields && ! useBillingAsShipping ) {
if ( ! needsShipping || prefersCollection ) {
return null;
}