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;