@woocommerce/data
Version:
WooCommerce Admin data store and utilities
80 lines (79 loc) • 2.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
/**
* Internal dependencies
*/
const action_types_1 = require("./action-types");
function updatePaymentGatewayList(state, paymentGateway) {
const targetIndex = state.paymentGateways.findIndex((gateway) => gateway.id === paymentGateway.id);
if (targetIndex === -1) {
return {
...state,
paymentGateways: [...state.paymentGateways, paymentGateway],
isUpdating: false,
};
}
return {
...state,
paymentGateways: [
...state.paymentGateways.slice(0, targetIndex),
paymentGateway,
...state.paymentGateways.slice(targetIndex + 1),
],
isUpdating: false,
};
}
const reducer = (state = {
paymentGateways: [],
isUpdating: false,
errors: {},
}, payload) => {
if (payload && 'type' in payload) {
switch (payload.type) {
case action_types_1.ACTION_TYPES.GET_PAYMENT_GATEWAYS_REQUEST:
case action_types_1.ACTION_TYPES.GET_PAYMENT_GATEWAY_REQUEST:
return state;
case action_types_1.ACTION_TYPES.GET_PAYMENT_GATEWAYS_SUCCESS:
return {
...state,
paymentGateways: payload.paymentGateways,
};
case action_types_1.ACTION_TYPES.GET_PAYMENT_GATEWAYS_ERROR:
return {
...state,
errors: {
...state.errors,
getPaymentGateways: payload.error,
},
};
case action_types_1.ACTION_TYPES.GET_PAYMENT_GATEWAY_ERROR:
return {
...state,
errors: {
...state.errors,
getPaymentGateway: payload.error,
},
};
case action_types_1.ACTION_TYPES.UPDATE_PAYMENT_GATEWAY_REQUEST:
return {
...state,
isUpdating: true,
};
case action_types_1.ACTION_TYPES.UPDATE_PAYMENT_GATEWAY_SUCCESS:
return updatePaymentGatewayList(state, payload.paymentGateway);
case action_types_1.ACTION_TYPES.GET_PAYMENT_GATEWAY_SUCCESS:
return updatePaymentGatewayList(state, payload.paymentGateway);
case action_types_1.ACTION_TYPES.UPDATE_PAYMENT_GATEWAY_ERROR:
return {
...state,
errors: {
...state.errors,
updatePaymentGateway: payload.error,
},
isUpdating: false,
};
}
}
return state;
};
exports.default = reducer;