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, }; };