mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-04 08:47:23 +08:00
✨ New action to change payment method details
This commit is contained in:
parent
56150740c9
commit
e878deb66e
4 changed files with 33 additions and 3 deletions
|
@ -12,6 +12,7 @@ export default {
|
|||
SET_PERSISTENT: 'PAYMENT:SET_PERSISTENT',
|
||||
RESET: 'PAYMENT:RESET',
|
||||
HYDRATE: 'PAYMENT:HYDRATE',
|
||||
CHANGE_PAYMENT_SETTING: 'PAYMENT:CHANGE_PAYMENT_SETTING',
|
||||
|
||||
// Controls - always start with "DO_".
|
||||
DO_PERSIST_DATA: 'PAYMENT:DO_PERSIST_DATA',
|
||||
|
|
|
@ -68,6 +68,18 @@ export const setPersistent = ( prop, value ) => ( {
|
|||
*/
|
||||
export const setIsReady = ( isReady ) => setTransient( 'isReady', isReady );
|
||||
|
||||
/**
|
||||
* Modify properties of a specific payment method.
|
||||
*
|
||||
* @param {string} id The payment method ID.
|
||||
* @param {Object} props New props.
|
||||
* @return {Action} The action.
|
||||
*/
|
||||
export const changePaymentSettings = ( id, props ) => ( {
|
||||
type: ACTION_TYPES.CHANGE_PAYMENT_SETTING,
|
||||
payload: { id, props },
|
||||
} );
|
||||
|
||||
/**
|
||||
* Side effect. Triggers the persistence of store data to the server.
|
||||
*
|
||||
|
|
|
@ -14,7 +14,8 @@ import { createHooksForStore } from '../utils';
|
|||
|
||||
const useHooks = () => {
|
||||
const { useTransient, usePersistent } = createHooksForStore( STORE_NAME );
|
||||
const { persist, setPersistent } = useDispatch( STORE_NAME );
|
||||
const { persist, setPersistent, changePaymentSettings } =
|
||||
useDispatch( STORE_NAME );
|
||||
|
||||
// Read-only flags and derived state.
|
||||
// Nothing here yet.
|
||||
|
@ -60,6 +61,7 @@ const useHooks = () => {
|
|||
persist,
|
||||
isReady,
|
||||
setPersistent,
|
||||
changePaymentSettings,
|
||||
paypal,
|
||||
venmo,
|
||||
payLater,
|
||||
|
@ -86,8 +88,9 @@ const useHooks = () => {
|
|||
};
|
||||
|
||||
export const useStore = () => {
|
||||
const { persist, isReady } = useHooks();
|
||||
return { persist, isReady };
|
||||
const { persist, isReady, setPersistent, changePaymentSettings } =
|
||||
useHooks();
|
||||
return { persist, isReady, setPersistent, changePaymentSettings };
|
||||
};
|
||||
|
||||
export const usePaymentMethods = () => {
|
||||
|
|
|
@ -57,6 +57,20 @@ const reducer = createReducer( defaultTransient, defaultPersistent, {
|
|||
[ ACTION_TYPES.SET_PERSISTENT ]: ( state, payload ) =>
|
||||
changePersistent( state, payload ),
|
||||
|
||||
[ ACTION_TYPES.CHANGE_PAYMENT_SETTING ]: ( state, payload ) => {
|
||||
const methodId = payload.id;
|
||||
const oldProps = state.data[ methodId ];
|
||||
|
||||
if ( ! oldProps || oldProps.id !== methodId ) {
|
||||
return state;
|
||||
}
|
||||
|
||||
return changePersistent( state, {
|
||||
...state,
|
||||
[ methodId ]: { ...oldProps, ...payload.props },
|
||||
} );
|
||||
},
|
||||
|
||||
[ ACTION_TYPES.RESET ]: ( state ) => {
|
||||
const cleanState = changeTransient(
|
||||
changePersistent( state, defaultPersistent ),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue