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()