From 6f8fe3b7c0231fb4c8adcde7e1f6e6f34118381c Mon Sep 17 00:00:00 2001 From: Narek Zakarian Date: Fri, 27 Oct 2023 14:59:50 +0400 Subject: [PATCH] Update the tracking metabox dynamically --- .../resources/js/tracking-compat.js | 17 +++++++++++++++ modules/ppcp-compat/services.php | 1 + .../ppcp-compat/src/Assets/CompatAssets.php | 21 ++++++++++++++----- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/modules/ppcp-compat/resources/js/tracking-compat.js b/modules/ppcp-compat/resources/js/tracking-compat.js index b62158ff1..d26bda2e9 100644 --- a/modules/ppcp-compat/resources/js/tracking-compat.js +++ b/modules/ppcp-compat/resources/js/tracking-compat.js @@ -9,7 +9,9 @@ document.addEventListener( const loadLocation = location.href + " " + orderTrackingContainerSelector + ">*"; const gzdSyncEnabled = config.gzd_sync_enabled; const wcShipmentSyncEnabled = config.wc_shipment_sync_enabled; + const wcShippingTaxSyncEnabled = config.wc_shipping_tax_sync_enabled; const wcShipmentSaveButton = document.querySelector('#woocommerce-shipment-tracking .button-save-form'); + const wcShipmentTaxBuyLabelButtonSelector = '.components-modal__screen-overlay .label-purchase-modal__sidebar .purchase-section button.components-button'; const toggleLoaderVisibility = function() { const loader = document.querySelector('.ppcp-tracking-loader'); @@ -45,5 +47,20 @@ document.addEventListener( waitForTrackingUpdate(jQuery('#shipment-tracking-form')); }) } + + if (wcShippingTaxSyncEnabled && typeof(wcShippingTaxSyncEnabled) != 'undefined' && wcShippingTaxSyncEnabled != null) { + document.addEventListener('click', function(event) { + const wcShipmentTaxBuyLabelButton = event.target.closest(wcShipmentTaxBuyLabelButtonSelector); + + if (wcShipmentTaxBuyLabelButton) { + toggleLoaderVisibility(); + setTimeout(function () { + jQuery(orderTrackingContainerSelector).load(loadLocation, "", function(){ + toggleLoaderVisibility(); + }); + }, 5000); + } + }); + } }, ); diff --git a/modules/ppcp-compat/services.php b/modules/ppcp-compat/services.php index 378eb9b45..9907a15c0 100644 --- a/modules/ppcp-compat/services.php +++ b/modules/ppcp-compat/services.php @@ -90,6 +90,7 @@ return array( $container->get( 'ppcp.asset-version' ), $container->get( 'compat.gzd.is_supported_plugin_version_active' ), $container->get( 'compat.wc_shipment_tracking.is_supported_plugin_version_active' ), + $container->get( 'compat.wc_shipping_tax.is_supported_plugin_version_active' ), $container->get( 'api.bearer' ) ); }, diff --git a/modules/ppcp-compat/src/Assets/CompatAssets.php b/modules/ppcp-compat/src/Assets/CompatAssets.php index c1febf93f..85e0bde7b 100644 --- a/modules/ppcp-compat/src/Assets/CompatAssets.php +++ b/modules/ppcp-compat/src/Assets/CompatAssets.php @@ -47,6 +47,13 @@ class CompatAssets { */ protected $is_wc_shipment_active; + /** + * Whether WC Shipping & Tax plugin is active + * + * @var bool + */ + private $is_wc_shipping_tax_active; + /** * The bearer. * @@ -61,6 +68,7 @@ class CompatAssets { * @param string $version The assets version. * @param bool $is_gzd_active Whether Germanized plugin is active. * @param bool $is_wc_shipment_active Whether WC Shipments plugin is active. + * @param bool $is_wc_shipping_tax_active Whether WC Shipping & Tax plugin is active. * @param Bearer $bearer The bearer. */ public function __construct( @@ -68,14 +76,16 @@ class CompatAssets { string $version, bool $is_gzd_active, bool $is_wc_shipment_active, + bool $is_wc_shipping_tax_active, Bearer $bearer ) { - $this->module_url = $module_url; - $this->version = $version; - $this->is_gzd_active = $is_gzd_active; - $this->is_wc_shipment_active = $is_wc_shipment_active; - $this->bearer = $bearer; + $this->module_url = $module_url; + $this->version = $version; + $this->is_gzd_active = $is_gzd_active; + $this->is_wc_shipment_active = $is_wc_shipment_active; + $this->is_wc_shipping_tax_active = $is_wc_shipping_tax_active; + $this->bearer = $bearer; } /** @@ -99,6 +109,7 @@ class CompatAssets { array( 'gzd_sync_enabled' => apply_filters( 'woocommerce_paypal_payments_sync_gzd_tracking', true ) && $this->is_gzd_active, 'wc_shipment_sync_enabled' => apply_filters( 'woocommerce_paypal_payments_sync_wc_shipment_tracking', true ) && $this->is_wc_shipment_active, + 'wc_shipping_tax_sync_enabled' => apply_filters( 'woocommerce_paypal_payments_sync_wc_shipping_tax', true ) && $this->is_wc_shipping_tax_active, ) ); }