/** * External dependencies */ import classnames from 'classnames'; import { SidebarLayout } from '@woocommerce/base-components/sidebar-layout'; import { useStoreCart, useStoreNotices } from '@woocommerce/base-context/hooks'; import { useEffect } from '@wordpress/element'; import { decodeEntities } from '@wordpress/html-entities'; /** * Internal dependencies */ import { useCartBlockContext } from '../../context'; const FrontendBlock = ( { children, className, }: { children: JSX.Element | JSX.Element[]; className: string; } ): JSX.Element | null => { const { cartItems, cartIsLoading, cartItemErrors } = useStoreCart(); const { hasDarkControls } = useCartBlockContext(); const { addErrorNotice } = useStoreNotices(); // Ensures any cart errors listed in the API response get shown. useEffect( () => { cartItemErrors.forEach( ( error ) => { addErrorNotice( decodeEntities( error.message ), { isDismissible: true, id: error.code, } ); } ); }, [ addErrorNotice, cartItemErrors ] ); if ( cartIsLoading || cartItems.length >= 1 ) { return ( { children } ); } return null; }; export default FrontendBlock;