2019-12-03 13:57:56 +00:00
/ * *
* External dependencies
* /
2020-03-04 12:40:03 +00:00
import {
withRestApiHydration ,
withStoreCartApiHydration ,
} from '@woocommerce/block-hocs' ;
2020-03-06 11:43:40 +00:00
import { _ _ } from '@wordpress/i18n' ;
2020-04-08 15:03:39 +00:00
import { StoreNoticesProvider } from '@woocommerce/base-context' ;
2020-03-06 11:43:40 +00:00
import { CURRENT _USER _IS _ADMIN } from '@woocommerce/block-settings' ;
import { _ _experimentalCreateInterpolateElement } from 'wordpress-element' ;
2020-05-27 10:11:30 +00:00
import {
renderFrontend ,
2020-06-05 12:18:16 +00:00
getValidBlockAttributes ,
2020-05-27 10:11:30 +00:00
} from '@woocommerce/base-utils' ;
2020-03-03 10:26:02 +00:00
2019-12-03 13:57:56 +00:00
/ * *
* Internal dependencies
* /
2020-04-08 15:03:39 +00:00
import Block from './block.js' ;
2020-03-13 13:41:59 +00:00
import blockAttributes from './attributes' ;
2019-12-03 13:57:56 +00:00
2020-04-03 13:22:56 +00:00
const reloadPage = ( ) => void window . location . reload ( true ) ;
2020-03-13 13:41:59 +00:00
/ * *
* Wrapper component to supply API data and show empty cart view as needed .
*
* @ param { * } props
* /
const CartFrontend = ( props ) => {
return (
< StoreNoticesProvider context = "wc/cart" >
< Block { ... props } / >
2020-03-03 10:26:02 +00:00
< / S t o r e N o t i c e s P r o v i d e r >
2020-02-18 23:06:37 +00:00
) ;
} ;
2019-12-10 15:41:57 +00:00
2020-03-13 13:41:59 +00:00
const getProps = ( el ) => {
return {
emptyCart : el . innerHTML ,
2020-06-05 12:18:16 +00:00
attributes : getValidBlockAttributes ( blockAttributes , el . dataset ) ,
2020-03-13 13:41:59 +00:00
} ;
} ;
2020-02-18 23:06:37 +00:00
2020-03-06 11:43:40 +00:00
const getErrorBoundaryProps = ( ) => {
return {
header : _ _ ( 'Something went wrong…' , 'woo-gutenberg-products-block' ) ,
text : _ _experimentalCreateInterpolateElement (
_ _ (
2020-04-03 13:22:56 +00:00
'The cart has encountered an unexpected error. <button>Try reloading the page</button>. If the error persists, please get in touch with us so we can assist.' ,
2020-03-06 11:43:40 +00:00
'woo-gutenberg-products-block'
) ,
{
2020-04-03 13:22:56 +00:00
button : (
< button
2020-05-08 07:02:18 +00:00
className = "wc-block-link-button"
2020-04-03 13:22:56 +00:00
onClick = { reloadPage }
/ >
2020-03-06 11:43:40 +00:00
) ,
}
) ,
showErrorMessage : CURRENT _USER _IS _ADMIN ,
} ;
} ;
2020-05-27 10:11:30 +00:00
renderFrontend ( {
selector : '.wp-block-woocommerce-cart' ,
Block : withStoreCartApiHydration ( withRestApiHydration ( CartFrontend ) ) ,
2020-03-06 11:43:40 +00:00
getProps ,
2020-05-27 10:11:30 +00:00
getErrorBoundaryProps ,
} ) ;