From b268e62c9fbe5db8b1c4fed6a3508805aa57cc33 Mon Sep 17 00:00:00 2001 From: Narek Zakarian Date: Mon, 18 Apr 2022 18:16:22 +0400 Subject: [PATCH 1/2] Fix the button render logic when free product is in cart. --- .../modules/ContextBootstrap/CartBootstap.js | 2 ++ .../js/modules/Renderer/CreditCardRenderer.js | 4 ++- .../ppcp-button/src/Assets/SmartButton.php | 32 ++++++++----------- 3 files changed, 18 insertions(+), 20 deletions(-) diff --git a/modules/ppcp-button/resources/js/modules/ContextBootstrap/CartBootstap.js b/modules/ppcp-button/resources/js/modules/ContextBootstrap/CartBootstap.js index 29e6a4819..ee60c07a4 100644 --- a/modules/ppcp-button/resources/js/modules/ContextBootstrap/CartBootstap.js +++ b/modules/ppcp-button/resources/js/modules/ContextBootstrap/CartBootstap.js @@ -15,6 +15,8 @@ class CartBootstrap { this.render(); jQuery(document.body).on('updated_cart_totals updated_checkout', () => { + + console.log(document.querySelector(this.gateway.button.wrapper), document.querySelector(this.gateway.hosted_fields.wrapper)); this.render(); }); } diff --git a/modules/ppcp-button/resources/js/modules/Renderer/CreditCardRenderer.js b/modules/ppcp-button/resources/js/modules/Renderer/CreditCardRenderer.js index b06edf9bb..65e343ecb 100644 --- a/modules/ppcp-button/resources/js/modules/Renderer/CreditCardRenderer.js +++ b/modules/ppcp-button/resources/js/modules/Renderer/CreditCardRenderer.js @@ -13,7 +13,6 @@ class CreditCardRenderer { } render(wrapper, contextConfig) { - if ( ( this.defaultConfig.context !== 'checkout' @@ -42,6 +41,9 @@ class CreditCardRenderer { } const gateWayBox = document.querySelector('.payment_box.payment_method_ppcp-credit-card-gateway'); + if(! gateWayBox) { + return + } const oldDisplayStyle = gateWayBox.style.display; gateWayBox.style.display = 'block'; diff --git a/modules/ppcp-button/src/Assets/SmartButton.php b/modules/ppcp-button/src/Assets/SmartButton.php index 54b1ddc5c..d50c23809 100644 --- a/modules/ppcp-button/src/Assets/SmartButton.php +++ b/modules/ppcp-button/src/Assets/SmartButton.php @@ -445,28 +445,21 @@ class SmartButton implements SmartButtonInterface { ); } - if ( $this->is_cart_price_total_zero() && ! $this->is_free_trial_cart() ) { - return false; - } + add_action( $this->checkout_button_renderer_hook(), array( $this, 'button_renderer' ), 10 ); $not_enabled_on_cart = $this->settings->has( 'button_cart_enabled' ) && ! $this->settings->get( 'button_cart_enabled' ); - if ( - is_cart() - && ! $not_enabled_on_cart - && ! $this->is_free_trial_cart() - ) { - add_action( - $this->proceed_to_checkout_button_renderer_hook(), - array( - $this, - 'button_renderer', - ), - 20 - ); - } + add_action( + $this->proceed_to_checkout_button_renderer_hook(), + function() use ( $not_enabled_on_cart ) { + if ( ! is_cart() || $not_enabled_on_cart || $this->is_free_trial_cart() || $this->is_cart_price_total_zero() ) { + return; + } - add_action( $this->checkout_button_renderer_hook(), array( $this, 'button_renderer' ), 10 ); + $this->button_renderer(); + }, + 20 + ); return true; } @@ -1214,10 +1207,11 @@ class SmartButton implements SmartButtonInterface { * Check if cart product price total is 0. * * @return bool true if is 0, otherwise false. + * @psalm-suppress RedundantConditionGivenDocblockType */ protected function is_cart_price_total_zero(): bool { // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison - return WC()->cart->get_cart_contents_total() == 0; + return WC()->cart && WC()->cart->get_total( 'numeric' ) == 0; } /** From d3b8e04135d610e701360b9f72fe3fb0cbe1e3ad Mon Sep 17 00:00:00 2001 From: Narek Zakarian Date: Wed, 4 May 2022 15:34:19 +0400 Subject: [PATCH 2/2] Update CartBootstap.js --- .../resources/js/modules/ContextBootstrap/CartBootstap.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/ppcp-button/resources/js/modules/ContextBootstrap/CartBootstap.js b/modules/ppcp-button/resources/js/modules/ContextBootstrap/CartBootstap.js index ee60c07a4..29e6a4819 100644 --- a/modules/ppcp-button/resources/js/modules/ContextBootstrap/CartBootstap.js +++ b/modules/ppcp-button/resources/js/modules/ContextBootstrap/CartBootstap.js @@ -15,8 +15,6 @@ class CartBootstrap { this.render(); jQuery(document.body).on('updated_cart_totals updated_checkout', () => { - - console.log(document.querySelector(this.gateway.button.wrapper), document.querySelector(this.gateway.hosted_fields.wrapper)); this.render(); }); }