From 4bcdb445d4f4c1d0fe7ee3fa8ddd69791943c87f Mon Sep 17 00:00:00 2001
From: Philipp Stracker
Date: Wed, 20 Nov 2024 16:54:53 +0100
Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Adjust=20hooks=20to=20new?=
=?UTF-8?q?=20code,=20rename=20a=20flag?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../resources/js/data/onboarding/hooks.js | 96 +++++++------------
.../resources/js/data/onboarding/reducer.js | 3 +-
2 files changed, 36 insertions(+), 63 deletions(-)
diff --git a/modules/ppcp-settings/resources/js/data/onboarding/hooks.js b/modules/ppcp-settings/resources/js/data/onboarding/hooks.js
index 9e5f1d179..547a1eaa1 100644
--- a/modules/ppcp-settings/resources/js/data/onboarding/hooks.js
+++ b/modules/ppcp-settings/resources/js/data/onboarding/hooks.js
@@ -3,19 +3,31 @@
*
* These encapsulate store interactions, offering a consistent interface.
* Hooks simplify data access and manipulation for components.
- * Exported hooks must have unique names across all store modules.
*
* @file
*/
import { useSelect, useDispatch } from '@wordpress/data';
-import { PRODUCT_TYPES, STORE_NAME } from '../constants';
+import { PRODUCT_TYPES } from '../constants';
+import { STORE_NAME } from './constants';
+
+const useTransient = ( key ) =>
+ useSelect(
+ ( select ) => select( STORE_NAME ).transientData()?.[ key ],
+ [ key ]
+ );
+
+const usePersistent = ( key ) =>
+ useSelect(
+ ( select ) => select( STORE_NAME ).persistentData()?.[ key ],
+ [ key ]
+ );
const useOnboardingDetails = () => {
const {
persist,
- setOnboardingStep,
+ setStep,
setCompleted,
setSandboxMode,
setManualConnectionMode,
@@ -25,61 +37,23 @@ const useOnboardingDetails = () => {
setProducts,
} = useDispatch( STORE_NAME );
- const transientData = ( select ) =>
- select( STORE_NAME ).onboardingTransientData();
- const persistentData = ( select ) =>
- select( STORE_NAME ).onboardingPersistentData();
-
// Read-only flags.
- const flags = useSelect( ( select ) => {
- return select( STORE_NAME ).onboardingFlags();
- } );
+ const flags = useSelect( ( select ) => select( STORE_NAME ).flags(), [] );
// Transient accessors.
- const isSaving = useSelect( ( select ) => {
- return transientData( select ).isSaving;
- }, [] );
-
- const isReady = useSelect( ( select ) => {
- return transientData( select ).isReady;
- } );
-
- const isManualConnectionBusy = useSelect( ( select ) => {
- return transientData( select ).isManualConnectionBusy;
- }, [] );
+ const isSaving = useTransient( 'isSaving' );
+ const isReady = useTransient( 'isReady' );
+ const isBusy = useTransient( 'isBusy' );
// Persistent accessors.
- const step = useSelect( ( select ) => {
- return persistentData( select ).step || 0;
- } );
-
- const completed = useSelect( ( select ) => {
- return persistentData( select ).completed;
- } );
-
- const clientId = useSelect( ( select ) => {
- return persistentData( select ).clientId;
- }, [] );
-
- const clientSecret = useSelect( ( select ) => {
- return persistentData( select ).clientSecret;
- }, [] );
-
- const isSandboxMode = useSelect( ( select ) => {
- return persistentData( select ).useSandbox;
- }, [] );
-
- const isManualConnectionMode = useSelect( ( select ) => {
- return persistentData( select ).useManualConnection;
- }, [] );
-
- const isCasualSeller = useSelect( ( select ) => {
- return persistentData( select ).isCasualSeller;
- }, [] );
-
- const products = useSelect( ( select ) => {
- return persistentData( select ).products || [];
- }, [] );
+ const step = usePersistent( 'step' );
+ const completed = usePersistent( 'completed' );
+ const clientId = usePersistent( 'clientId' );
+ const clientSecret = usePersistent( 'clientSecret' );
+ const isSandboxMode = usePersistent( 'useSandbox' );
+ const isManualConnectionMode = usePersistent( 'useManualConnection' );
+ const isCasualSeller = usePersistent( 'isCasualSeller' );
+ const products = usePersistent( 'products' );
const toggleProduct = ( list ) => {
const validProducts = list.filter( ( item ) =>
@@ -96,9 +70,9 @@ const useOnboardingDetails = () => {
return {
isSaving,
isReady,
- isManualConnectionBusy,
+ isBusy,
step,
- setStep: ( value ) => setDetailAndPersist( setOnboardingStep, value ),
+ setStep: ( value ) => setDetailAndPersist( setStep, value ),
completed,
setCompleted: ( state ) => setDetailAndPersist( setCompleted, state ),
isSandboxMode,
@@ -121,10 +95,10 @@ const useOnboardingDetails = () => {
};
};
-export const useOnboardingStepWelcome = () => {
+export const useConnection = () => {
const {
isSaving,
- isManualConnectionBusy,
+ isBusy,
isSandboxMode,
setSandboxMode,
isManualConnectionMode,
@@ -137,7 +111,7 @@ export const useOnboardingStepWelcome = () => {
return {
isSaving,
- isManualConnectionBusy,
+ isBusy,
isSandboxMode,
setSandboxMode,
isManualConnectionMode,
@@ -149,19 +123,19 @@ export const useOnboardingStepWelcome = () => {
};
};
-export const useOnboardingStepBusiness = () => {
+export const useBusiness = () => {
const { isCasualSeller, setIsCasualSeller } = useOnboardingDetails();
return { isCasualSeller, setIsCasualSeller };
};
-export const useOnboardingStepProducts = () => {
+export const useProducts = () => {
const { products, toggleProduct } = useOnboardingDetails();
return { products, toggleProduct };
};
-export const useOnboardingStep = () => {
+export const useSteps = () => {
const { isReady, step, setStep, completed, setCompleted, flags } =
useOnboardingDetails();
diff --git a/modules/ppcp-settings/resources/js/data/onboarding/reducer.js b/modules/ppcp-settings/resources/js/data/onboarding/reducer.js
index 6264c7e83..0ca7dc646 100644
--- a/modules/ppcp-settings/resources/js/data/onboarding/reducer.js
+++ b/modules/ppcp-settings/resources/js/data/onboarding/reducer.js
@@ -2,7 +2,6 @@
* Reducer: Defines store structure and state updates for this module.
*
* Manages both transient (temporary) and persistent (saved) state.
- * Each module uses isolated memory objects to prevent conflicts.
* The initial state must define all properties, as dynamic additions are not supported.
*
* @file
@@ -16,7 +15,7 @@ import ACTION_TYPES from './action-types';
const defaultTransient = {
isReady: false,
isSaving: false,
- isManualConnectionBusy: false,
+ isBusy: false,
// Read only values, provided by the server.
flags: {