From a9c2a8e8feea73dce063d2abf640301c7806db01 Mon Sep 17 00:00:00 2001
From: Philipp Stracker
Date: Wed, 8 Jan 2025 17:49:04 +0100
Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Sync=20onboarding=20completion=20wi?=
=?UTF-8?q?th=20connection=20state?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/Service/AuthenticationManager.php | 16 +++++++-----
modules/ppcp-settings/src/SettingsModule.php | 26 ++++++++++++++++++-
2 files changed, 35 insertions(+), 7 deletions(-)
diff --git a/modules/ppcp-settings/src/Service/AuthenticationManager.php b/modules/ppcp-settings/src/Service/AuthenticationManager.php
index 1eaef1aae..b7d308669 100644
--- a/modules/ppcp-settings/src/Service/AuthenticationManager.php
+++ b/modules/ppcp-settings/src/Service/AuthenticationManager.php
@@ -398,11 +398,15 @@ class AuthenticationManager {
$this->common_settings->set_merchant_data( $connection );
$this->common_settings->save();
- /**
- * Broadcast that the plugin connected to a new PayPal merchant account.
- * This is the right time to initialize merchant relative flags for the
- * first time.
- */
- do_action( 'woocommerce_paypal_payments_authenticated_merchant' );
+ if ( $this->common_settings->is_merchant_connected() ) {
+ $this->logger->info( 'Merchant successfully connected to PayPal' );
+
+ /**
+ * Broadcast that the plugin connected to a new PayPal merchant account.
+ * This is the right time to initialize merchant relative flags for the
+ * first time.
+ */
+ do_action( 'woocommerce_paypal_payments_authenticated_merchant' );
+ }
}
}
diff --git a/modules/ppcp-settings/src/SettingsModule.php b/modules/ppcp-settings/src/SettingsModule.php
index d104ce7a4..59f752545 100644
--- a/modules/ppcp-settings/src/SettingsModule.php
+++ b/modules/ppcp-settings/src/SettingsModule.php
@@ -9,8 +9,9 @@ declare( strict_types = 1 );
namespace WooCommerce\PayPalCommerce\Settings;
-use WooCommerce\PayPalCommerce\Settings\Endpoint\RestEndpoint;
use WooCommerce\PayPalCommerce\Settings\Ajax\SwitchSettingsUiEndpoint;
+use WooCommerce\PayPalCommerce\Settings\Data\OnboardingProfile;
+use WooCommerce\PayPalCommerce\Settings\Endpoint\RestEndpoint;
use WooCommerce\PayPalCommerce\Settings\Handler\ConnectionListener;
use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ExecutableModule;
use WooCommerce\PayPalCommerce\Vendor\Inpsyde\Modularity\Module\ModuleClassNameIdTrait;
@@ -203,6 +204,29 @@ class SettingsModule implements ServiceModule, ExecutableModule {
}
);
+ add_action(
+ 'woocommerce_paypal_payments_merchant_disconnected',
+ static function () use ( $container ) : void {
+ $onboarding_profile = $container->get( 'settings.data.onboarding' );
+ assert( $onboarding_profile instanceof OnboardingProfile );
+
+ $onboarding_profile->set_completed( false );
+ $onboarding_profile->set_step( 0 );
+ $onboarding_profile->save();
+ }
+ );
+
+ add_action(
+ 'woocommerce_paypal_payments_authenticated_merchant',
+ static function () use ( $container ) : void {
+ $onboarding_profile = $container->get( 'settings.data.onboarding' );
+ assert( $onboarding_profile instanceof OnboardingProfile );
+
+ $onboarding_profile->set_completed( true );
+ $onboarding_profile->save();
+ }
+ );
+
return true;
}