@woocommerce/data
Version:
WooCommerce Admin data store and utilities
69 lines (68 loc) • 2.09 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateOptions = exports.setIsUpdating = exports.setUpdatingError = exports.setRequestingError = exports.receiveOptions = void 0;
/**
* External dependencies
*/
const data_controls_1 = require("@wordpress/data-controls");
/**
* Internal dependencies
*/
const action_types_1 = __importDefault(require("./action-types"));
const constants_1 = require("../constants");
function receiveOptions(options) {
return {
type: action_types_1.default.RECEIVE_OPTIONS,
options,
};
}
exports.receiveOptions = receiveOptions;
function setRequestingError(error, name) {
return {
type: action_types_1.default.SET_REQUESTING_ERROR,
error,
name,
};
}
exports.setRequestingError = setRequestingError;
function setUpdatingError(error) {
return {
type: action_types_1.default.SET_UPDATING_ERROR,
error,
};
}
exports.setUpdatingError = setUpdatingError;
function setIsUpdating(isUpdating) {
return {
type: action_types_1.default.SET_IS_UPDATING,
isUpdating,
};
}
exports.setIsUpdating = setIsUpdating;
function* updateOptions(data) {
yield setIsUpdating(true);
yield receiveOptions(data);
try {
const results = yield (0, data_controls_1.apiFetch)({
path: constants_1.WC_ADMIN_NAMESPACE + '/options',
method: 'POST',
data,
});
yield setIsUpdating(false);
if (typeof results !== 'object') {
throw new Error(`Invalid update options response from server: ${results}`);
}
return { success: true, ...results };
}
catch (error) {
yield setUpdatingError(error);
if (typeof error !== 'object') {
throw new Error(`Unexpected error: ${error}`);
}
return { success: false, ...error };
}
}
exports.updateOptions = updateOptions;