mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-01 07:02:48 +08:00
♻️ Make client ID and secret persistent
This commit is contained in:
parent
7b12e65ca8
commit
9629c86447
4 changed files with 58 additions and 67 deletions
|
@ -1,12 +1,12 @@
|
||||||
export default {
|
export default {
|
||||||
// Transient data.
|
// Transient data.
|
||||||
SET_IS_SAVING_ONBOARDING_DETAILS: 'SET_IS_SAVING_ONBOARDING_DETAILS',
|
SET_IS_SAVING_ONBOARDING_DETAILS: 'SET_IS_SAVING_ONBOARDING_DETAILS',
|
||||||
SET_CLIENT_ID: 'SET_CLIENT_ID',
|
|
||||||
SET_CLIENT_SECRET: 'SET_CLIENT_SECRET',
|
|
||||||
|
|
||||||
// Persistent data.
|
// Persistent data.
|
||||||
SET_ONBOARDING_DETAILS: 'SET_ONBOARDING_DETAILS',
|
SET_ONBOARDING_DETAILS: 'SET_ONBOARDING_DETAILS',
|
||||||
SET_ONBOARDING_STEP: 'SET_ONBOARDING_STEP',
|
SET_ONBOARDING_STEP: 'SET_ONBOARDING_STEP',
|
||||||
SET_SANDBOX_MODE: 'SET_SANDBOX_MODE',
|
SET_SANDBOX_MODE: 'SET_SANDBOX_MODE',
|
||||||
SET_MANUAL_CONNECTION_MODE: 'SET_MANUAL_CONNECTION_MODE',
|
SET_MANUAL_CONNECTION_MODE: 'SET_MANUAL_CONNECTION_MODE',
|
||||||
|
SET_CLIENT_ID: 'SET_CLIENT_ID',
|
||||||
|
SET_CLIENT_SECRET: 'SET_CLIENT_SECRET',
|
||||||
};
|
};
|
||||||
|
|
|
@ -3,6 +3,19 @@ import { apiFetch } from '@wordpress/data-controls';
|
||||||
import ACTION_TYPES from './action-types';
|
import ACTION_TYPES from './action-types';
|
||||||
import { NAMESPACE, STORE_NAME } from '../constants';
|
import { NAMESPACE, STORE_NAME } from '../constants';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Non-persistent. Changes the "saving" flag.
|
||||||
|
*
|
||||||
|
* @param {boolean} isSaving
|
||||||
|
* @return {{type: string, isSaving}} The action.
|
||||||
|
*/
|
||||||
|
export const setIsSaving = ( isSaving ) => {
|
||||||
|
return {
|
||||||
|
type: ACTION_TYPES.SET_IS_SAVING_ONBOARDING_DETAILS,
|
||||||
|
isSaving,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Persistent. Set the full onboarding details, usually during app initialization.
|
* Persistent. Set the full onboarding details, usually during app initialization.
|
||||||
*
|
*
|
||||||
|
@ -56,20 +69,7 @@ export const setManualConnectionMode = ( manualConnectionMode ) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Non-persistent. Changes the "saving" flag.
|
* Persistent. Changes the "client ID" value.
|
||||||
*
|
|
||||||
* @param {boolean} isSaving
|
|
||||||
* @return {{type: string, isSaving}} The action.
|
|
||||||
*/
|
|
||||||
export const setIsSaving = ( isSaving ) => {
|
|
||||||
return {
|
|
||||||
type: ACTION_TYPES.SET_IS_SAVING_ONBOARDING_DETAILS,
|
|
||||||
isSaving,
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Non-persistent. Changes the "client ID" value.
|
|
||||||
*
|
*
|
||||||
* @param {string} clientId
|
* @param {string} clientId
|
||||||
* @return {{type: string, clientId}} The action.
|
* @return {{type: string, clientId}} The action.
|
||||||
|
@ -82,7 +82,7 @@ export const setClientId = ( clientId ) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Non-persistent. Changes the "client secret" value.
|
* Persistent. Changes the "client secret" value.
|
||||||
*
|
*
|
||||||
* @param {string} clientSecret
|
* @param {string} clientSecret
|
||||||
* @return {{type: string, clientSecret}} The action.
|
* @return {{type: string, clientSecret}} The action.
|
||||||
|
|
|
@ -16,15 +16,15 @@ export const useOnboardingDetails = () => {
|
||||||
return select( STORE_NAME ).getTransientData().isSaving;
|
return select( STORE_NAME ).getTransientData().isSaving;
|
||||||
}, [] );
|
}, [] );
|
||||||
|
|
||||||
|
// Persistent accessors.
|
||||||
const clientId = useSelect( ( select ) => {
|
const clientId = useSelect( ( select ) => {
|
||||||
return select( STORE_NAME ).getTransientData().clientId;
|
return select( STORE_NAME ).getPersistentData().clientId;
|
||||||
}, [] );
|
}, [] );
|
||||||
|
|
||||||
const clientSecret = useSelect( ( select ) => {
|
const clientSecret = useSelect( ( select ) => {
|
||||||
return select( STORE_NAME ).getTransientData().clientSecret;
|
return select( STORE_NAME ).getPersistentData().clientSecret;
|
||||||
}, [] );
|
}, [] );
|
||||||
|
|
||||||
// Persistent accessors.
|
|
||||||
const onboardingStep = useSelect( ( select ) => {
|
const onboardingStep = useSelect( ( select ) => {
|
||||||
return select( STORE_NAME ).getPersistentData().step || 0;
|
return select( STORE_NAME ).getPersistentData().step || 0;
|
||||||
}, [] );
|
}, [] );
|
||||||
|
@ -48,9 +48,10 @@ export const useOnboardingDetails = () => {
|
||||||
isSandboxMode,
|
isSandboxMode,
|
||||||
isManualConnectionMode,
|
isManualConnectionMode,
|
||||||
clientId,
|
clientId,
|
||||||
setClientId,
|
setClientId: ( value ) => setDetailAndPersist( setClientId, value ),
|
||||||
clientSecret,
|
clientSecret,
|
||||||
setClientSecret,
|
setClientSecret: ( value ) =>
|
||||||
|
setDetailAndPersist( setClientSecret, value ),
|
||||||
setOnboardingStep: ( step ) =>
|
setOnboardingStep: ( step ) =>
|
||||||
setDetailAndPersist( setOnboardingStep, step ),
|
setDetailAndPersist( setOnboardingStep, step ),
|
||||||
setSandboxMode: ( state ) =>
|
setSandboxMode: ( state ) =>
|
||||||
|
|
|
@ -2,12 +2,12 @@ import ACTION_TYPES from './action-types';
|
||||||
|
|
||||||
const defaultState = {
|
const defaultState = {
|
||||||
isSaving: false,
|
isSaving: false,
|
||||||
clientId: '',
|
|
||||||
clientSecret: '',
|
|
||||||
data: {
|
data: {
|
||||||
step: 0,
|
step: 0,
|
||||||
useSandbox: false,
|
useSandbox: false,
|
||||||
useManualConnection: false,
|
useManualConnection: false,
|
||||||
|
clientId: '',
|
||||||
|
clientSecret: '',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -15,64 +15,54 @@ export const onboardingReducer = (
|
||||||
state = defaultState,
|
state = defaultState,
|
||||||
{ type, ...action }
|
{ type, ...action }
|
||||||
) => {
|
) => {
|
||||||
|
const setTransient = ( changes ) => {
|
||||||
|
const { data, ...transientChanges } = changes;
|
||||||
|
return { ...state, ...transientChanges };
|
||||||
|
};
|
||||||
|
|
||||||
|
const setPersistent = ( changes ) => {
|
||||||
|
const validChanges = Object.keys( changes ).reduce( ( acc, key ) => {
|
||||||
|
if ( key in defaultState.data ) {
|
||||||
|
acc[ key ] = changes[ key ];
|
||||||
|
}
|
||||||
|
return acc;
|
||||||
|
}, {} );
|
||||||
|
|
||||||
|
return {
|
||||||
|
...state,
|
||||||
|
data: { ...state.data, ...validChanges },
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
switch ( type ) {
|
switch ( type ) {
|
||||||
// Transient data.
|
// Transient data.
|
||||||
case ACTION_TYPES.SET_IS_SAVING_ONBOARDING_DETAILS:
|
case ACTION_TYPES.SET_IS_SAVING_ONBOARDING_DETAILS:
|
||||||
return {
|
return setTransient( { isSaving: action.isSaving } );
|
||||||
...state,
|
|
||||||
isSaving: action.isSaving,
|
|
||||||
};
|
|
||||||
|
|
||||||
case ACTION_TYPES.SET_CLIENT_ID:
|
|
||||||
return {
|
|
||||||
...state,
|
|
||||||
clientId: action.clientId,
|
|
||||||
};
|
|
||||||
|
|
||||||
case ACTION_TYPES.SET_CLIENT_SECRET:
|
|
||||||
return {
|
|
||||||
...state,
|
|
||||||
clientSecret: action.clientSecret,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Persistent data.
|
// Persistent data.
|
||||||
|
case ACTION_TYPES.SET_CLIENT_ID:
|
||||||
|
return setPersistent( { clientId: action.clientId } );
|
||||||
|
|
||||||
|
case ACTION_TYPES.SET_CLIENT_SECRET:
|
||||||
|
return setPersistent( { clientSecret: action.clientSecret } );
|
||||||
|
|
||||||
case ACTION_TYPES.SET_ONBOARDING_DETAILS:
|
case ACTION_TYPES.SET_ONBOARDING_DETAILS:
|
||||||
return {
|
return setPersistent( action.payload );
|
||||||
...state,
|
|
||||||
data: action.payload,
|
|
||||||
};
|
|
||||||
|
|
||||||
case ACTION_TYPES.SET_ONBOARDING_STEP:
|
case ACTION_TYPES.SET_ONBOARDING_STEP:
|
||||||
return {
|
return setPersistent( { step: action.step } );
|
||||||
...state,
|
|
||||||
data: {
|
|
||||||
...( state.data || {} ),
|
|
||||||
step: action.step,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
case ACTION_TYPES.SET_SANDBOX_MODE:
|
case ACTION_TYPES.SET_SANDBOX_MODE:
|
||||||
return {
|
return setPersistent( { useSandbox: action.useSandbox } );
|
||||||
...state,
|
|
||||||
data: {
|
|
||||||
...( state.data || {} ),
|
|
||||||
useSandbox: action.useSandbox,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
case ACTION_TYPES.SET_MANUAL_CONNECTION_MODE:
|
case ACTION_TYPES.SET_MANUAL_CONNECTION_MODE:
|
||||||
return {
|
return setPersistent( {
|
||||||
...state,
|
useManualConnection: action.useManualConnection,
|
||||||
data: {
|
} );
|
||||||
...( state.data || {} ),
|
|
||||||
useManualConnection: action.useManualConnection,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
return state;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
export default onboardingReducer;
|
export default onboardingReducer;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue