From 82b364a0acd2678dc1359048c9c77bca859e129d Mon Sep 17 00:00:00 2001
From: Philipp Stracker
Date: Fri, 6 Dec 2024 19:11:17 +0100
Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Add=20=E2=80=9CCommon=E2=80=9D=20ho?=
=?UTF-8?q?ok=20to=20access=20merchant=20data?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../resources/js/data/common/hooks.js | 26 +++++++++++++++++++
.../resources/js/data/common/selectors.js | 4 +++
2 files changed, 30 insertions(+)
diff --git a/modules/ppcp-settings/resources/js/data/common/hooks.js b/modules/ppcp-settings/resources/js/data/common/hooks.js
index de56976e5..8eaaa3924 100644
--- a/modules/ppcp-settings/resources/js/data/common/hooks.js
+++ b/modules/ppcp-settings/resources/js/data/common/hooks.js
@@ -45,6 +45,10 @@ const useHooks = () => {
const isSandboxMode = usePersistent( 'useSandbox' );
const isManualConnectionMode = usePersistent( 'useManualConnection' );
+ const merchant = useSelect(
+ ( select ) => select( STORE_NAME ).merchant(),
+ []
+ );
const wooSettings = useSelect(
( select ) => select( STORE_NAME ).wooSettings(),
[]
@@ -76,6 +80,7 @@ const useHooks = () => {
connectToSandbox,
connectToProduction,
connectViaIdAndSecret,
+ merchant,
wooSettings,
};
};
@@ -120,6 +125,27 @@ export const useWooSettings = () => {
return wooSettings;
};
+export const useMerchantInfo = () => {
+ const { merchant } = useHooks();
+ const { refreshMerchantData } = useDispatch( STORE_NAME );
+
+ const verifyLoginStatus = useCallback( async () => {
+ const result = await refreshMerchantData();
+
+ if ( ! result.success ) {
+ throw new Error( result?.message || result?.error?.message );
+ }
+
+ // Verify if the server state is "connected" and we have a merchant ID.
+ return merchant?.isConnected && merchant?.id;
+ }, [ refreshMerchantData, merchant ] );
+
+ return {
+ merchant, // Merchant details
+ verifyLoginStatus, // Callback
+ };
+};
+
// -- Not using the `useHooks()` data provider --
export const useBusyState = () => {
diff --git a/modules/ppcp-settings/resources/js/data/common/selectors.js b/modules/ppcp-settings/resources/js/data/common/selectors.js
index 30d513784..fde5d8c9e 100644
--- a/modules/ppcp-settings/resources/js/data/common/selectors.js
+++ b/modules/ppcp-settings/resources/js/data/common/selectors.js
@@ -26,6 +26,10 @@ export const getActivityList = ( state ) => {
return Object.fromEntries( activities );
};
+export const merchant = ( state ) => {
+ return getState( state ).merchant || EMPTY_OBJ;
+};
+
export const wooSettings = ( state ) => {
return getState( state ).wooSettings || EMPTY_OBJ;
};