Skip to content

Commit

Permalink
Merge pull request #4508 from reactioncommerce/fix-aldeed-cart-curren…
Browse files Browse the repository at this point in the history
…tQuantity

GraphQL: Fix CartItem.currentQuantity
  • Loading branch information
mikemurray committed Aug 6, 2018
2 parents 02e06ee + e3755c1 commit 6e277f2
Showing 1 changed file with 13 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,11 @@ export function decodeCartItemsOpaqueIds(items) {

/**
* @param {Object[]} catalogItems Array of CatalogItem docs from the db
* @param {Object[]} products Array of Product docs from the db
* @param {Object} cartItem CartItem
* @return {Object} Same object with GraphQL-only props added
*/
function xformCartItem(catalogItems, cartItem) {
function xformCartItem(catalogItems, products, cartItem) {
const { priceWhenAdded, productId, variantId } = cartItem;
const { currencyCode } = priceWhenAdded;

Expand All @@ -59,13 +60,15 @@ function xformCartItem(catalogItems, cartItem) {
if (!media) [media] = catalogProduct.media;
}

const variantSourceProduct = products.find((product) => product._id === variantId);

return {
...cartItem,
compareAtPrice: {
amount: variantPriceInfo.compareAtPrice,
currencyCode
},
currentQuantity: variant.quantity,
currentQuantity: variantSourceProduct && variantSourceProduct.inventoryQuantity,
imageURLs: media && media.URLs,
isBackorder: variant.isBackorder || false,
isLowQuantity: variant.isLowQuantity || false,
Expand All @@ -87,7 +90,7 @@ function xformCartItem(catalogItems, cartItem) {
* @return {Object[]} Same array with GraphQL-only props added
*/
export async function xformCartItems(collections, items) {
const { Catalog } = collections;
const { Catalog, Products } = collections;

const productIds = items.map((item) => item.productId);

Expand All @@ -100,5 +103,11 @@ export async function xformCartItems(collections, items) {
"isDeleted": { $ne: true }
}).toArray();

return items.map((item) => xformCartItem(catalogItems, item));
const products = await Products.find({
ancestors: {
$in: productIds
}
}).toArray();

return items.map((item) => xformCartItem(catalogItems, products, item));
}

0 comments on commit 6e277f2

Please sign in to comment.