@woocommerce/data
Version:
WooCommerce Admin data store and utilities
88 lines (87 loc) • 2.72 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.deleteReview = exports.updateReview = exports.updateReviews = exports.setError = exports.setReview = exports.setReviewIsUpdating = void 0;
/**
* External dependencies
*/
const data_controls_1 = require("@wordpress/data-controls");
const url_1 = require("@wordpress/url");
/**
* Internal dependencies
*/
const action_types_1 = __importDefault(require("./action-types"));
const constants_1 = require("../constants");
function setReviewIsUpdating(reviewId, isUpdating) {
return {
type: action_types_1.default.SET_REVIEW_IS_UPDATING,
reviewId,
isUpdating,
};
}
exports.setReviewIsUpdating = setReviewIsUpdating;
function setReview(reviewId, reviewData) {
return {
type: action_types_1.default.SET_REVIEW,
reviewId,
reviewData,
};
}
exports.setReview = setReview;
function setError(query, error) {
return {
type: action_types_1.default.SET_ERROR,
query,
error,
};
}
exports.setError = setError;
function updateReviews(query, reviews, totalCount) {
return {
type: action_types_1.default.UPDATE_REVIEWS,
reviews,
query,
totalCount,
};
}
exports.updateReviews = updateReviews;
function* updateReview(reviewId, reviewFields, query) {
yield setReviewIsUpdating(reviewId, true);
try {
const url = (0, url_1.addQueryArgs)(`${constants_1.NAMESPACE}/products/reviews/${reviewId}`, query || {});
const review = yield (0, data_controls_1.apiFetch)({
path: url,
method: 'PUT',
data: reviewFields,
});
yield setReview(reviewId, review);
yield setReviewIsUpdating(reviewId, false);
}
catch (error) {
yield setError('updateReview', error);
yield setReviewIsUpdating(reviewId, false);
throw new Error();
}
}
exports.updateReview = updateReview;
function* deleteReview(reviewId) {
yield setReviewIsUpdating(reviewId, true);
try {
const url = `${constants_1.NAMESPACE}/products/reviews/${reviewId}`;
const response = yield (0, data_controls_1.apiFetch)({
path: url,
method: 'DELETE',
});
yield setReview(reviewId, response);
yield setReviewIsUpdating(reviewId, false);
return response;
}
catch (error) {
yield setError('deleteReview', error);
yield setReviewIsUpdating(reviewId, false);
throw new Error();
}
}
exports.deleteReview = deleteReview;