From c5d7ce211a8f909d0565733f58d6deaa7ce1317d Mon Sep 17 00:00:00 2001
From: Philipp Stracker
Date: Mon, 4 Nov 2024 16:50:50 +0100
Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A7=20Begin=20to=20refactor=20the=20ma?=
=?UTF-8?q?nual=20connection=20hook?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Screens/Onboarding/StepWelcome.js | 6 +--
.../resources/js/data/onboarding/actions.js | 39 ++++++++++++++++++-
.../resources/js/data/onboarding/hooks.js | 14 +------
3 files changed, 41 insertions(+), 18 deletions(-)
diff --git a/modules/ppcp-settings/resources/js/Components/Screens/Onboarding/StepWelcome.js b/modules/ppcp-settings/resources/js/Components/Screens/Onboarding/StepWelcome.js
index 5d6c2b205..26e208f71 100644
--- a/modules/ppcp-settings/resources/js/Components/Screens/Onboarding/StepWelcome.js
+++ b/modules/ppcp-settings/resources/js/Components/Screens/Onboarding/StepWelcome.js
@@ -92,11 +92,7 @@ const WelcomeForm = ( { setCompleted } ) => {
const handleConnect = async () => {
try {
- const res = await connectManual(
- clientId,
- clientSecret,
- isSandboxMode
- );
+ const res = await connectManual();
if ( ! res.success ) {
throw new Error( 'Request failed.' );
}
diff --git a/modules/ppcp-settings/resources/js/data/onboarding/actions.js b/modules/ppcp-settings/resources/js/data/onboarding/actions.js
index 94564c0ab..3e5b5eb1d 100644
--- a/modules/ppcp-settings/resources/js/data/onboarding/actions.js
+++ b/modules/ppcp-settings/resources/js/data/onboarding/actions.js
@@ -168,10 +168,47 @@ export const setProducts = ( products ) => {
};
};
+/**
+ * Attempts to establish a connection using client ID and secret via the server-side
+ * connection endpoint.
+ *
+ * @return {boolean} True if the connection was successful, false otherwise.
+ */
+export function* connectViaIdAndSecret() {
+ let error = null;
+
+ try {
+ const path = `${ NAMESPACE }/connect_manual`;
+ const { clientId, clientSecret, useSandbox } =
+ yield select( STORE_NAME ).getPersistentData();
+
+ yield setManualConnectionIsBusy( true );
+
+ const result = yield apiFetch( {
+ path,
+ method: 'POST',
+ data: {
+ clientId,
+ clientSecret,
+ useSandbox,
+ },
+ } );
+
+ console.log( 'Manual connection result:', result );
+ } catch ( e ) {
+ error = e;
+ console.error( 'Manual connection failed:', e );
+ } finally {
+ yield setManualConnectionIsBusy( false );
+ }
+
+ return error === null;
+}
+
/**
* Saves the persistent details to the WP database.
*
- * @return {any} A generator function that handles the saving process.
+ * @return {boolean} True, if the values were successfully saved.
*/
export function* persist() {
let error = null;
diff --git a/modules/ppcp-settings/resources/js/data/onboarding/hooks.js b/modules/ppcp-settings/resources/js/data/onboarding/hooks.js
index fb6b6f4ef..ff9052d69 100644
--- a/modules/ppcp-settings/resources/js/data/onboarding/hooks.js
+++ b/modules/ppcp-settings/resources/js/data/onboarding/hooks.js
@@ -155,19 +155,9 @@ export const useOnboardingStep = () => {
};
export const useManualConnect = () => {
- const connectManual = async ( clientId, clientSecret, isSandboxMode ) => {
- return await apiFetch( {
- path: `${ NAMESPACE }/connect_manual`,
- method: 'POST',
- data: {
- clientId,
- clientSecret,
- useSandbox: isSandboxMode,
- },
- } );
- };
+ const { connectViaIdAndSecret } = useDispatch( STORE_NAME );
return {
- connectManual,
+ connectManual: connectViaIdAndSecret,
};
};