mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-08-31 04:58:28 +08:00
62 lines
1.2 KiB
JavaScript
62 lines
1.2 KiB
JavaScript
import MessagesBootstrap from '../../../../ppcp-button/resources/js/modules/ContextBootstrap/MessagesBootstap';
|
|
import { debounce } from '../Helper/debounce';
|
|
|
|
class BlockCheckoutMessagesBootstrap {
|
|
constructor( scriptData ) {
|
|
this.messagesBootstrap = new MessagesBootstrap( scriptData, null );
|
|
this.lastCartTotal = null;
|
|
}
|
|
|
|
init() {
|
|
this.messagesBootstrap.init();
|
|
|
|
this._updateCartTotal();
|
|
|
|
if ( wp.data?.subscribe ) {
|
|
wp.data.subscribe(
|
|
debounce( () => {
|
|
this._updateCartTotal();
|
|
}, 300 )
|
|
);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
_getCartTotal() {
|
|
if ( ! wp.data.select ) {
|
|
return null;
|
|
}
|
|
|
|
const cart = wp.data.select( 'wc/store/cart' );
|
|
if ( ! cart ) {
|
|
return null;
|
|
}
|
|
|
|
const totals = cart.getCartTotals();
|
|
return (
|
|
parseInt( totals.total_price, 10 ) /
|
|
10 ** totals.currency_minor_unit
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
_updateCartTotal() {
|
|
const currentTotal = this._getCartTotal();
|
|
if ( currentTotal === null ) {
|
|
return;
|
|
}
|
|
|
|
if ( currentTotal !== this.lastCartTotal ) {
|
|
this.lastCartTotal = currentTotal;
|
|
jQuery( document.body ).trigger( 'ppcp_block_cart_total_updated', [
|
|
currentTotal,
|
|
] );
|
|
}
|
|
}
|
|
}
|
|
|
|
export default BlockCheckoutMessagesBootstrap;
|