From b540db49549f07e7114c9d8ee7bff3a20f08c953 Mon Sep 17 00:00:00 2001 From: Himad M Date: Thu, 29 May 2025 13:53:02 -0400 Subject: [PATCH] Add "Keep updated with PayPal" toggle in the new settings UI --- .../Components/Settings/Blocks/KeepUpdated.js | 28 +++++++++++++++++++ .../Components/Settings/CommonSettings.js | 2 ++ .../resources/js/data/settings/hooks.js | 7 +++++ .../resources/js/data/settings/reducer.js | 1 + .../ppcp-settings/src/Data/SettingsModel.php | 1 + .../src/Endpoint/SettingsRestEndpoint.php | 4 +++ 6 files changed, 43 insertions(+) create mode 100644 modules/ppcp-settings/resources/js/Components/Screens/Settings/Components/Settings/Blocks/KeepUpdated.js diff --git a/modules/ppcp-settings/resources/js/Components/Screens/Settings/Components/Settings/Blocks/KeepUpdated.js b/modules/ppcp-settings/resources/js/Components/Screens/Settings/Components/Settings/Blocks/KeepUpdated.js new file mode 100644 index 000000000..29512e839 --- /dev/null +++ b/modules/ppcp-settings/resources/js/Components/Screens/Settings/Components/Settings/Blocks/KeepUpdated.js @@ -0,0 +1,28 @@ +import { __ } from '@wordpress/i18n'; + +import { ControlToggleButton } from '../../../../../ReusableComponents/Controls'; +import { SettingsHooks } from '../../../../../../data'; +import SettingsBlock from '../../../../../ReusableComponents/SettingsBlock'; + +const KeepUpdated = () => { + const { keepUpdated, setKeepUpdated } = SettingsHooks.useSettings(); + + return ( + + + + ); +}; + +export default KeepUpdated; diff --git a/modules/ppcp-settings/resources/js/Components/Screens/Settings/Components/Settings/CommonSettings.js b/modules/ppcp-settings/resources/js/Components/Screens/Settings/Components/Settings/CommonSettings.js index fad24bc01..95b0d9841 100644 --- a/modules/ppcp-settings/resources/js/Components/Screens/Settings/Components/Settings/CommonSettings.js +++ b/modules/ppcp-settings/resources/js/Components/Screens/Settings/Components/Settings/CommonSettings.js @@ -5,6 +5,7 @@ import OrderIntent from './Blocks/OrderIntent'; import SavePaymentMethods from './Blocks/SavePaymentMethods'; import InvoicePrefix from './Blocks/InvoicePrefix'; import PayNowExperience from './Blocks/PayNowExperience'; +import KeepUpdated from './Blocks/KeepUpdated'; const CommonSettings = ( { ownBradOnly } ) => ( ( + ); diff --git a/modules/ppcp-settings/resources/js/data/settings/hooks.js b/modules/ppcp-settings/resources/js/data/settings/hooks.js index 4a97afa9e..8635c7887 100644 --- a/modules/ppcp-settings/resources/js/data/settings/hooks.js +++ b/modules/ppcp-settings/resources/js/data/settings/hooks.js @@ -63,6 +63,7 @@ const useHooks = () => { const [ payNowExperience, setPayNowExperience ] = usePersistent( 'enablePayNow' ); const [ logging, setLogging ] = usePersistent( 'enableLogging' ); + const [ keepUpdated, setKeepUpdated ] = usePersistent( 'keepUpdated' ); const [ disabledCards, setDisabledCards ] = usePersistent( 'disabledCards' ); @@ -82,6 +83,8 @@ const useHooks = () => { setPayNowExperience, logging, setLogging, + keepUpdated, + setKeepUpdated, subtotalAdjustment, setSubtotalAdjustment, brandName, @@ -126,6 +129,8 @@ export const useSettings = () => { setPayNowExperience, logging, setLogging, + keepUpdated, + setKeepUpdated, subtotalAdjustment, setSubtotalAdjustment, brandName, @@ -155,6 +160,8 @@ export const useSettings = () => { setPayNowExperience, logging, setLogging, + keepUpdated, + setKeepUpdated, subtotalAdjustment, setSubtotalAdjustment, brandName, diff --git a/modules/ppcp-settings/resources/js/data/settings/reducer.js b/modules/ppcp-settings/resources/js/data/settings/reducer.js index 875129bd8..274e7ef9b 100644 --- a/modules/ppcp-settings/resources/js/data/settings/reducer.js +++ b/modules/ppcp-settings/resources/js/data/settings/reducer.js @@ -42,6 +42,7 @@ const defaultPersistent = Object.freeze( { saveCardDetails: false, // Enable card vaulting enablePayNow: false, // Enable Pay Now experience enableLogging: false, // Enable debug logging + keepUpdated: false, // Enable to receive PayPal-related updates // String arrays. disabledCards: [], // Disabled credit card types diff --git a/modules/ppcp-settings/src/Data/SettingsModel.php b/modules/ppcp-settings/src/Data/SettingsModel.php index 713786651..81d879bd3 100644 --- a/modules/ppcp-settings/src/Data/SettingsModel.php +++ b/modules/ppcp-settings/src/Data/SettingsModel.php @@ -82,6 +82,7 @@ class SettingsModel extends AbstractDataModel { 'save_card_details' => false, 'enable_pay_now' => false, 'enable_logging' => false, + 'keep_updated' => true, // Array of string values. 'disabled_cards' => array(), diff --git a/modules/ppcp-settings/src/Endpoint/SettingsRestEndpoint.php b/modules/ppcp-settings/src/Endpoint/SettingsRestEndpoint.php index 06f639bba..a534f74e5 100644 --- a/modules/ppcp-settings/src/Endpoint/SettingsRestEndpoint.php +++ b/modules/ppcp-settings/src/Endpoint/SettingsRestEndpoint.php @@ -86,6 +86,10 @@ class SettingsRestEndpoint extends RestEndpoint { 'js_name' => 'enableLogging', 'sanitize' => 'to_boolean', ), + 'keep_updated' => array( + 'js_name' => 'keepUpdated', + 'sanitize' => 'to_boolean', + ), 'disabled_cards' => array( 'js_name' => 'disabledCards', ),