@woocommerce/data
Version:
WooCommerce Admin data store and utilities
39 lines (38 loc) • 1.26 kB
JavaScript
/**
* External dependencies
*/
import { registerStore } from '@wordpress/data';
/**
* Internal dependencies
*/
import { createSelectors } from './selectors';
import { createDispatchActions } from './actions';
import defaultControls from '../controls';
import { createResolvers } from './resolvers';
import { createReducer } from './reducer';
export const createCrudDataStore = ({ storeName, resourceName, namespace, pluralResourceName, storeConfig = {}, }) => {
const crudActions = createDispatchActions({
resourceName,
namespace,
});
const crudResolvers = createResolvers({
storeName,
resourceName,
pluralResourceName,
namespace,
});
const crudSelectors = createSelectors({
resourceName,
pluralResourceName,
namespace,
});
const { reducer, actions = {}, selectors = {}, resolvers = {}, controls = {}, } = storeConfig;
const crudReducer = createReducer(reducer);
registerStore(storeName, {
reducer: crudReducer,
actions: { ...crudActions, ...actions },
selectors: { ...crudSelectors, ...selectors },
resolvers: { ...crudResolvers, ...resolvers },
controls: { ...defaultControls, ...controls },
});
};