@woocommerce/data
Version:
WooCommerce Admin data store and utilities
46 lines (45 loc) • 1.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useSettings = void 0;
/**
* External dependencies
*/
const data_1 = require("@wordpress/data");
const element_1 = require("@wordpress/element");
/**
* Internal dependencies
*/
const constants_1 = require("./constants");
const useSettings = (group, settingsKeys = []) => {
const { requestedSettings, settingsError, isRequesting, isDirty } = (0, data_1.useSelect)((select) => {
const { getLastSettingsErrorForGroup, getSettingsForGroup, getIsDirty, isUpdateSettingsRequesting, } = select(constants_1.STORE_NAME);
return {
requestedSettings: getSettingsForGroup(group, settingsKeys),
settingsError: Boolean(getLastSettingsErrorForGroup(group)),
isRequesting: isUpdateSettingsRequesting(group),
isDirty: getIsDirty(group, settingsKeys),
};
}, [group, ...settingsKeys.sort()]);
const { persistSettingsForGroup, updateAndPersistSettingsForGroup, updateSettingsForGroup, } = (0, data_1.useDispatch)(constants_1.STORE_NAME);
const updateSettings = (0, element_1.useCallback)((name, data) => {
updateSettingsForGroup(group, { [name]: data });
}, [group]);
const persistSettings = (0, element_1.useCallback)(() => {
// this action would simply persist all settings marked as dirty in the
// store state and then remove the dirty record in the isDirtyMap
persistSettingsForGroup(group);
}, [group]);
const updateAndPersistSettings = (0, element_1.useCallback)((name, data) => {
updateAndPersistSettingsForGroup(group, { [name]: data });
}, [group]);
return {
settingsError,
isRequesting,
isDirty,
...requestedSettings,
persistSettings,
updateAndPersistSettings,
updateSettings,
};
};
exports.useSettings = useSettings;