From 67a6d9e765af9cc1e9c927ccd4223bc1bbd1edfe Mon Sep 17 00:00:00 2001
From: Philipp Stracker
Date: Wed, 8 Jan 2025 16:52:21 +0100
Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Adjust=20=E2=80=9Cwebhooks?=
=?UTF-8?q?=E2=80=9D=20property=20in=20Redux=20state?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../resources/js/data/common/hooks.js | 5 +++-
.../resources/js/data/common/reducer.js | 23 +++++++++++--------
.../resources/js/data/common/selectors.js | 10 ++++++--
.../src/Endpoint/WebhookSettingsEndpoint.php | 2 +-
4 files changed, 26 insertions(+), 14 deletions(-)
diff --git a/modules/ppcp-settings/resources/js/data/common/hooks.js b/modules/ppcp-settings/resources/js/data/common/hooks.js
index 4a2429575..e9a77b79b 100644
--- a/modules/ppcp-settings/resources/js/data/common/hooks.js
+++ b/modules/ppcp-settings/resources/js/data/common/hooks.js
@@ -42,7 +42,6 @@ const useHooks = () => {
// Persistent accessors.
const isSandboxMode = usePersistent( 'useSandbox' );
const isManualConnectionMode = usePersistent( 'useManualConnection' );
- const webhooks = usePersistent( 'webhooks' );
const merchant = useSelect(
( select ) => select( STORE_NAME ).merchant(),
[]
@@ -57,6 +56,10 @@ const useHooks = () => {
( select ) => select( STORE_NAME ).features(),
[]
);
+ const webhooks = useSelect(
+ ( select ) => select( STORE_NAME ).webhooks(),
+ []
+ );
const savePersistent = async ( setter, value ) => {
setter( value );
diff --git a/modules/ppcp-settings/resources/js/data/common/reducer.js b/modules/ppcp-settings/resources/js/data/common/reducer.js
index af5aece23..019d29911 100644
--- a/modules/ppcp-settings/resources/js/data/common/reducer.js
+++ b/modules/ppcp-settings/resources/js/data/common/reducer.js
@@ -45,12 +45,13 @@ const defaultTransient = Object.freeze( {
enabled: false,
},
} ),
+
+ webhooks: Object.freeze( [] ),
} );
const defaultPersistent = Object.freeze( {
useSandbox: false,
useManualConnection: false,
- webhooks: [],
} );
// Reducer logic.
@@ -105,16 +106,18 @@ const commonReducer = createReducer( defaultTransient, defaultPersistent, {
const newState = setPersistent( state, payload.data );
// Populate read-only properties.
- [ 'wooSettings', 'merchant', 'features' ].forEach( ( key ) => {
- if ( ! payload[ key ] ) {
- return;
- }
+ [ 'wooSettings', 'merchant', 'features', 'webhooks' ].forEach(
+ ( key ) => {
+ if ( ! payload[ key ] ) {
+ return;
+ }
- newState[ key ] = Object.freeze( {
- ...newState[ key ],
- ...payload[ key ],
- } );
- } );
+ newState[ key ] = Object.freeze( {
+ ...newState[ key ],
+ ...payload[ key ],
+ } );
+ }
+ );
return newState;
},
diff --git a/modules/ppcp-settings/resources/js/data/common/selectors.js b/modules/ppcp-settings/resources/js/data/common/selectors.js
index 0e0ec781e..4716550bb 100644
--- a/modules/ppcp-settings/resources/js/data/common/selectors.js
+++ b/modules/ppcp-settings/resources/js/data/common/selectors.js
@@ -16,8 +16,14 @@ export const persistentData = ( state ) => {
};
export const transientData = ( state ) => {
- const { data, merchant, features, wooSettings, ...transientState } =
- getState( state );
+ const {
+ data,
+ merchant,
+ features,
+ wooSettings,
+ webhooks,
+ ...transientState
+ } = getState( state );
return transientState || EMPTY_OBJ;
};
diff --git a/modules/ppcp-settings/src/Endpoint/WebhookSettingsEndpoint.php b/modules/ppcp-settings/src/Endpoint/WebhookSettingsEndpoint.php
index c3116a1ed..69b346734 100644
--- a/modules/ppcp-settings/src/Endpoint/WebhookSettingsEndpoint.php
+++ b/modules/ppcp-settings/src/Endpoint/WebhookSettingsEndpoint.php
@@ -118,7 +118,7 @@ class WebhookSettingsEndpoint extends RestEndpoint {
try {
$webhook_list = ( $this->webhook_endpoint->list() )[0];
$webhook_events = array_map(
- function ( stdClass $webhook ) {
+ static function ( stdClass $webhook ) {
return strtolower( $webhook->name );
},
$webhook_list->event_types()