@devx-commerce/plugin-product-reviews
Version:
Product Reviews Plugin for Medusa
79 lines • 7.57 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createProductReviewsStep = void 0;
const utils_1 = require("@medusajs/utils");
const workflows_sdk_1 = require("@medusajs/workflows-sdk");
const product_review_1 = require("../../../modules/product-review");
const verify_purchase_history_1 = require("../workflows/verify-purchase-history");
const createProductReviewsStepId = "create-product-review-step";
exports.createProductReviewsStep = (0, workflows_sdk_1.createStep)(createProductReviewsStepId, async (input, { container }) => {
const productReviewService = container.resolve(product_review_1.PRODUCT_REVIEW_MODULE);
const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
let isVerified = false;
if (input.review.order?.id)
isVerified = true;
if (!isVerified) {
const { result } = await (0, verify_purchase_history_1.verifyPurchaseHistoryWorkflow)(container).run({
input: {
customer_id: input.customer.id,
product_id: input.review.product_id,
order_id: input.review.order?.id,
order_item_id: input.review.order?.item_id,
},
});
isVerified = result.isVerified;
if (isVerified) {
input.review.order = {
id: result.order_id,
item_id: result.order_item_id,
};
}
}
const { data: [config], } = await query.graph({
entity: "product_review_config",
fields: ["value"],
filters: { key: "AUTO_PUBLISH" },
});
const newReview = await productReviewService.createProductReviews({
...((input.customer.first_name || input.customer.last_name) && {
name: input.customer.first_name + " " + input.customer.last_name,
}),
...(input.customer.email && { email: input.customer.email }),
...(input.customer.phone && { phone: input.customer.phone }),
rating: input.review.rating,
title: input.review.title,
description: input.review.description,
is_verified_purchase: isVerified,
product_id: input.review.product_id, // Store product_id directly
...(config?.value && { is_admin_verified: true }),
});
if (input.review.medias.length) {
await productReviewService.createReviewAssociatedMedias(input.review.medias.map((media) => ({
product_review_id: newReview.id,
url: media.url,
type: media.type,
})));
}
// Remove the link creation
// await link.create({
// [PRODUCT_REVIEW_MODULE]: { product_review_id: newReview.id },
// [Modules.PRODUCT]: { product_id: input.review.product_id },
// });
const createdReview = await productReviewService.retrieveProductReview(newReview.id, { relations: ["associated_medias"] });
if (!createdReview) {
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Failed to create product reviews");
}
return new workflows_sdk_1.StepResponse(createdReview, {
productReviewId: createdReview.id,
});
}, async (data, { container }) => {
if (!data?.productReviewId)
return;
const productReviewService = container.resolve(product_review_1.PRODUCT_REVIEW_MODULE);
await productReviewService.deleteProductReviews(data.productReviewId);
// Remove the link deletion as well
// link.delete({
// [PRODUCT_REVIEW_MODULE]: { product_review_id: data.productReviewId },
// });
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXByb2R1Y3QtcmV2aWV3cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvcHJvZHVjdC1yZXZpZXdzL3N0ZXBzL2NyZWF0ZS1wcm9kdWN0LXJldmlld3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsMkNBQXlFO0FBQ3pFLDJEQUFtRTtBQUduRSxvRUFBd0U7QUFFeEUsa0ZBQXFGO0FBRXJGLE1BQU0sMEJBQTBCLEdBQUcsNEJBQTRCLENBQUM7QUFFbkQsUUFBQSx3QkFBd0IsR0FBRyxJQUFBLDBCQUFVLEVBQ2hELDBCQUEwQixFQUMxQixLQUFLLEVBQ0gsS0FHQyxFQUNELEVBQUUsU0FBUyxFQUFFLEVBQ2IsRUFBRTtJQUNGLE1BQU0sb0JBQW9CLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FDNUMsc0NBQXFCLENBQ3RCLENBQUM7SUFDRixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFRLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXhFLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQztJQUV2QixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFBRSxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBRTlDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFBLHVEQUE2QixFQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNwRSxLQUFLLEVBQUU7Z0JBQ0wsV0FBVyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDOUIsVUFBVSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVTtnQkFDbkMsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2hDLGFBQWEsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUss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