diff --git a/.changeset/selfish-kids-heal.md b/.changeset/selfish-kids-heal.md new file mode 100644 index 0000000..25675da --- /dev/null +++ b/.changeset/selfish-kids-heal.md @@ -0,0 +1,33 @@ +--- +"saleor-app-search": minor +--- + +Added a new `pricing` field to the Algolia object representation. It now passes variant pricing representation from GraphQL: + +```graphQL + price { + gross { + amount + } + net { + amount + } + } + discount { + gross { + amount + } + net { + amount + } + } + onSale + priceUndiscounted { + gross { + amount + } + net { + amount + } + } +``` \ No newline at end of file diff --git a/apps/search/graphql/fragments/ProductVariantData.graphql b/apps/search/graphql/fragments/ProductVariantData.graphql index 0fd277d..e106f82 100644 --- a/apps/search/graphql/fragments/ProductVariantData.graphql +++ b/apps/search/graphql/fragments/ProductVariantData.graphql @@ -10,7 +10,26 @@ fragment ProductVariantData on ProductVariant { price { gross { amount - currency + } + net { + amount + } + } + discount { + gross { + amount + } + net { + amount + } + } + onSale + priceUndiscounted { + gross { + amount + } + net { + amount } } } diff --git a/apps/search/src/lib/algolia/algoliaSearchProvider.ts b/apps/search/src/lib/algolia/algoliaSearchProvider.ts index d6f2ba9..fb1a183 100644 --- a/apps/search/src/lib/algolia/algoliaSearchProvider.ts +++ b/apps/search/src/lib/algolia/algoliaSearchProvider.ts @@ -78,9 +78,15 @@ export class AlgoliaSearchProvider implements SearchProvider { "productId", "inStock", "categories", - "grossPrice", "attributes", "collections", + "pricing.price.net", + "pricing.price.gross", + "pricing.discount.net", + "pricing.discount.gross", + "pricing.priceUndiscounted.net", + "pricing.priceUndiscounted.gross", + "pricing.onSale", ], attributeForDistinct: "productId", numericAttributesForFiltering: ["grossPrice"], diff --git a/apps/search/src/lib/algolia/algoliaUtils.ts b/apps/search/src/lib/algolia/algoliaUtils.ts index 81953f0..49a7026 100644 --- a/apps/search/src/lib/algolia/algoliaUtils.ts +++ b/apps/search/src/lib/algolia/algoliaUtils.ts @@ -134,7 +134,25 @@ export function productAndVariantToAlgolia({ descriptionPlaintext: EditorJsPlaintextRenderer({ stringData: product.description }), slug: product.slug, thumbnail: product.thumbnail?.url, + /** + * Deprecated + */ grossPrice: listing?.price?.amount, + pricing: { + price: { + net: variant.pricing?.price?.net.amount, + gross: variant.pricing?.price?.gross.amount, + }, + onSale: variant.pricing?.onSale, + discount: { + net: variant.pricing?.discount?.net.amount, + gross: variant.pricing?.discount?.gross.amount, + }, + priceUndiscounted: { + net: variant.pricing?.priceUndiscounted?.net.amount, + gross: variant.pricing?.priceUndiscounted?.gross.amount, + }, + }, inStock, categories: categoryHierarchicalFacets(variant), collections: product.collections?.map((collection) => collection.name) || [],