Vue Storefront is now Alokai! Learn More
GetProductReviews

GetProductReviews

Implements GetProductReviews Unified Method.

Source

import { getNormalizers } from "@alokai/connect/integration-kit";

import { defineApi } from "@vsf-enterprise/unified-api-magento";
import type { ProductReview } from "@vsf-enterprise/unified-api-magento/ecommerceTypes";

export const getProductReviews = defineApi.getProductReviews(async (context, args) => {
  const { api } = await context.getApiClient();
  const { currentPage, pageSize, productId } = args;
  const { normalizePagination, normalizeProductReview } = getNormalizers(context);

  const { data } = await api.productReview({
    currentPage,
    filter: {
      sku: {
        eq: productId,
      },
    },
    pageSize,
  });

  const productReviewItems = data?.products?.items?.[0];

  const reviews = (productReviewItems?.reviews?.items ?? [])
    .filter((element): element is ProductReview => element !== undefined)
    .map((element: ProductReview) => normalizeProductReview(element));

  const pagination = normalizePagination({
    ...productReviewItems?.reviews?.page_info,
    total_results: productReviewItems?.review_count ?? 0,
  });

  return {
    pagination,
    reviews,
  };
});