diff --git a/modules/ppcp-settings/resources/js/data/onboarding/actions.js b/modules/ppcp-settings/resources/js/data/onboarding/actions.js index 4c4d971bb..8f4fb9b27 100644 --- a/modules/ppcp-settings/resources/js/data/onboarding/actions.js +++ b/modules/ppcp-settings/resources/js/data/onboarding/actions.js @@ -78,7 +78,7 @@ export function* persist() { try { const path = `${ NAMESPACE }/onboarding`; - const data = select( STORE_NAME ).getOnboardingData(); + const data = select( STORE_NAME ).getPersistentData(); yield updateIsSaving( true ); diff --git a/modules/ppcp-settings/resources/js/data/onboarding/hooks.js b/modules/ppcp-settings/resources/js/data/onboarding/hooks.js index a1919af83..a613c3c1d 100644 --- a/modules/ppcp-settings/resources/js/data/onboarding/hooks.js +++ b/modules/ppcp-settings/resources/js/data/onboarding/hooks.js @@ -9,20 +9,21 @@ export const useOnboardingDetails = () => { persist, } = useDispatch( STORE_NAME ); + // Transient accessors. const isSaving = useSelect( ( select ) => { - return select( STORE_NAME ).isSaving(); + return select( STORE_NAME ).getTransientData().isSaving; }, [] ); const onboardingStep = useSelect( ( select ) => { - return select( STORE_NAME ).getOnboardingData().step || 0; + return select( STORE_NAME ).getPersistentData().step || 0; }, [] ); const isSandboxMode = useSelect( ( select ) => { - return select( STORE_NAME ).getOnboardingData().useSandbox; + return select( STORE_NAME ).getPersistentData().useSandbox; }, [] ); const isManualConnectionMode = useSelect( ( select ) => { - return select( STORE_NAME ).getOnboardingData().useManualConnection; + return select( STORE_NAME ).getPersistentData().useManualConnection; }, [] ); const setDetailAndPersist = async ( setter, value ) => { diff --git a/modules/ppcp-settings/resources/js/data/onboarding/resolvers.js b/modules/ppcp-settings/resources/js/data/onboarding/resolvers.js index f57c515fe..eac8b6da9 100644 --- a/modules/ppcp-settings/resources/js/data/onboarding/resolvers.js +++ b/modules/ppcp-settings/resources/js/data/onboarding/resolvers.js @@ -7,7 +7,7 @@ import { updateOnboardingDetails } from './actions'; /** * Retrieve settings from the site's REST API. */ -export function* getOnboardingData() { +export function* getPersistentData() { const path = `${ NAMESPACE }/onboarding`; try { diff --git a/modules/ppcp-settings/resources/js/data/onboarding/selectors.js b/modules/ppcp-settings/resources/js/data/onboarding/selectors.js index 5d8812610..357ef963b 100644 --- a/modules/ppcp-settings/resources/js/data/onboarding/selectors.js +++ b/modules/ppcp-settings/resources/js/data/onboarding/selectors.js @@ -1,4 +1,4 @@ -const EMPTY_OBJ = {}; +const EMPTY_OBJ = Object.freeze( {} ); const getOnboardingState = ( state ) => { if ( ! state ) { @@ -8,10 +8,11 @@ const getOnboardingState = ( state ) => { return state.onboarding || EMPTY_OBJ; }; -export const getOnboardingData = ( state ) => { +export const getPersistentData = ( state ) => { return getOnboardingState( state ).data || EMPTY_OBJ; }; -export const isSaving = ( state ) => { - return getOnboardingState( state ).isSaving || false; +export const getTransientData = ( state ) => { + const { data, ...transientState } = getOnboardingState( state ); + return transientState || EMPTY_OBJ; };