/** * External dependencies */ import { __ } from '@wordpress/i18n'; import { Component } from 'react'; import PropTypes from 'prop-types'; import { CURRENT_USER_IS_ADMIN } from '@woocommerce/block-settings'; import { StoreNoticesContainer } from '@woocommerce/base-context'; class PaymentMethodErrorBoundary extends Component { state = { errorMessage: '', hasError: false }; static getDerivedStateFromError( error ) { return { errorMessage: error.message, hasError: true, }; } render() { const { hasError, errorMessage } = this.state; const { isEditor } = this.props; if ( hasError ) { let errorText = __( 'This site is experiencing difficulties with this payment method. Please contact the owner of the site for assistance.', 'woo-gutenberg-products-block' ); if ( isEditor || CURRENT_USER_IS_ADMIN ) { if ( errorMessage ) { errorText = errorMessage; } else { errorText = __( "There was an error with this payment method. Please verify it's configured correctly.", 'woo-gutenberg-products-block' ); } } const notices = [ { id: '0', content: errorText, isDismissible: false, status: 'error', }, ]; return ; } return this.props.children; } } PaymentMethodErrorBoundary.propTypes = { isEditor: PropTypes.bool, }; PaymentMethodErrorBoundary.defaultProps = { isEditor: false, }; export default PaymentMethodErrorBoundary;