woocommerce-paypal-payments/modules/ppcp-blocks/resources/js/Bootstrap/BlockCheckoutMessagesBootstrap.js

55 lines
1.4 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;