/** * External dependencies */ import { __ } from '@wordpress/i18n'; import { StoreNoticesContainer, useEditorContext, noticeContexts, } from '@woocommerce/base-context'; import Title from '@woocommerce/base-components/title'; import LoadingMask from '@woocommerce/base-components/loading-mask'; import { CURRENT_USER_IS_ADMIN } from '@woocommerce/settings'; import { CHECKOUT_STORE_KEY, PAYMENT_STORE_KEY } from '@woocommerce/block-data'; import { useSelect } from '@wordpress/data'; /** * Internal dependencies */ import ExpressPaymentMethods from '../express-payment-methods'; import './style.scss'; const CheckoutExpressPayment = () => { const { isCalculating, isProcessing, isAfterProcessing, isBeforeProcessing, isComplete, hasError, } = useSelect( ( select ) => { const store = select( CHECKOUT_STORE_KEY ); return { isCalculating: store.isCalculating(), isProcessing: store.isProcessing(), isAfterProcessing: store.isAfterProcessing(), isBeforeProcessing: store.isBeforeProcessing(), isComplete: store.isComplete(), hasError: store.hasError(), }; } ); const { availableExpressPaymentMethods, expressPaymentMethodsInitialized, paymentStatus, } = useSelect( ( select ) => { const store = select( PAYMENT_STORE_KEY ); return { availableExpressPaymentMethods: store.getAvailableExpressPaymentMethods(), expressPaymentMethodsInitialized: store.expressPaymentMethodsInitialized(), paymentStatus: store.getCurrentStatus(), }; } ); const { isEditor } = useEditorContext(); if ( ! expressPaymentMethodsInitialized || ( expressPaymentMethodsInitialized && Object.keys( availableExpressPaymentMethods ).length === 0 ) ) { // Make sure errors are shown in the editor and for admins. For example, // when a payment method fails to register. if ( isEditor || CURRENT_USER_IS_ADMIN ) { return ( ); } return null; } // Set loading state for express payment methods when payment or checkout is in progress. const checkoutProcessing = isProcessing || isAfterProcessing || isBeforeProcessing || ( isComplete && ! hasError ); return ( <>
{ __( 'Express checkout', 'woo-gutenberg-products-block' ) }
{ __( 'Or continue below', 'woo-gutenberg-products-block' ) }
); }; export default CheckoutExpressPayment;