UNPKG

@techsio/storefront-data

Version:

Medusa-first storefront data layer built on TanStack Query.

27 lines (26 loc) • 1.86 kB
const getProductListItems = (list)=>list?.items ?? []; const getProductListItemCount = (list)=>{ if (!list) return 0; if ("number" == typeof list.items_count) return list.items_count; if ("number" == typeof list.item_count) return list.item_count; return getProductListItems(list).length; }; const isFavoriteProductList = (list)=>list?.type === "favorite" || list?.handle === "favorites"; const getProductListItemProductId = (item)=>item.product_id ?? item.product?.id ?? null; const getProductListItemVariantId = (item)=>item.variant_id ?? item.variant?.id ?? null; const resolveProductListItemQuantity = (item)=>"number" == typeof item.quantity && item.quantity > 0 ? Math.floor(item.quantity) : 1; const normalizeVariantId = (variantId)=>{ if ("string" != typeof variantId) return null; const trimmedVariantId = variantId.trim(); return trimmedVariantId ? trimmedVariantId : null; }; const productListItemMatchesSelection = (item, productId, variantId)=>{ if (getProductListItemProductId(item) !== productId) return false; const requestedVariantId = normalizeVariantId(variantId); const itemVariantId = normalizeVariantId(getProductListItemVariantId(item)); if (requestedVariantId) return itemVariantId === requestedVariantId; return !itemVariantId; }; const isProductInProductList = (list, productId, variantId)=>(list?.items ?? []).some((item)=>productListItemMatchesSelection(item, productId, variantId)); const findProductListItem = (list, productId, variantId)=>(list?.items ?? []).find((item)=>productListItemMatchesSelection(item, productId, variantId)); export { findProductListItem, getProductListItemCount, getProductListItemProductId, getProductListItemVariantId, getProductListItems, isFavoriteProductList, isProductInProductList, productListItemMatchesSelection, resolveProductListItemQuantity };