From 4994c029fc3fb24c67365f5d531b0207eb57b8a1 Mon Sep 17 00:00:00 2001 From: Victor Gerbrands Date: Tue, 9 May 2023 13:09:58 +0200 Subject: [PATCH 1/2] fix: capitalize currency code --- lib/medusa/index.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/medusa/index.ts b/lib/medusa/index.ts index a8ed3bfe1..6293a181b 100644 --- a/lib/medusa/index.ts +++ b/lib/medusa/index.ts @@ -18,7 +18,7 @@ import { SelectedOption } from './types'; -const ENDPOINT = process.env.MEDUSA_BACKEND_API; +const ENDPOINT = process.env.NEXT_PUBLIC_MEDUSA_BACKEND_API; export default async function medusaRequest( method: string, @@ -67,7 +67,7 @@ const reshapeCart = (cart: MedusaCart): Cart => { const lines = cart?.items?.map((item) => reshapeLineItem(item)) || []; const totalQuantity = lines.length; const checkoutUrl = '/'; - const currencyCode = cart.region?.currency_code || 'USD'; + const currencyCode = cart.region?.currency_code.toUpperCase() || 'USD'; let subtotalAmount = '0'; if (cart.subtotal && cart.region) { @@ -145,7 +145,7 @@ const reshapeLineItem = (lineItem: MedusaLineItem): CartItem => { lineItem.total, lineItem.variant?.prices?.[0]?.currency_code ).toString(), - currencyCode: lineItem.variant?.prices?.[0]?.currency_code || 'EUR' + currencyCode: lineItem.variant?.prices?.[0]?.currency_code.toUpperCase() || 'EUR' } }; const quantity = lineItem.quantity; @@ -164,14 +164,14 @@ const reshapeProduct = (product: MedusaProduct): Product => { let amount = '0'; let currencyCode = 'USD'; if (variant && variant.prices?.[0]?.amount) { - currencyCode = variant.prices?.[0]?.currency_code ?? 'USD'; + currencyCode = variant.prices?.[0]?.currency_code.toUpperCase() ?? 'USD'; amount = convertToDecimal(variant.prices[0].amount, currencyCode).toString(); } const priceRange = { maxVariantPrice: { amount, - currencyCode: product.variants?.[0]?.prices?.[0]?.currency_code ?? '' + currencyCode: product.variants?.[0]?.prices?.[0]?.currency_code.toUpperCase() ?? '' } }; const updatedAt = product.updated_at; From 3da9fddad74358eea6e64caf121b219912a1e25c Mon Sep 17 00:00:00 2001 From: Victor Gerbrands Date: Tue, 9 May 2023 14:08:35 +0200 Subject: [PATCH 2/2] feat: add search and sorting --- lib/medusa/index.ts | 24 +++++++++++++++++++++--- lib/medusa/types.ts | 1 + 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/lib/medusa/index.ts b/lib/medusa/index.ts index 6293a181b..a093ebe1f 100644 --- a/lib/medusa/index.ts +++ b/lib/medusa/index.ts @@ -115,6 +115,7 @@ const reshapeLineItem = (lineItem: MedusaLineItem): CartItem => { maxVariantPrice: calculateVariantAmount(lineItem.variant) }, updatedAt: lineItem.updated_at, + createdAt: lineItem.created_at, tags: [], descriptionHtml: lineItem.description ?? '', featuredImage: { @@ -175,6 +176,7 @@ const reshapeProduct = (product: MedusaProduct): Product => { } }; const updatedAt = product.updated_at; + const createdAt = product.created_at; const tags = product.tags?.map((tag) => tag.value) || []; const descriptionHtml = product.description ?? ''; const featuredImage = { @@ -194,6 +196,7 @@ const reshapeProduct = (product: MedusaProduct): Product => { featuredImage, priceRange, updatedAt, + createdAt, tags, descriptionHtml, availableForSale, @@ -342,15 +345,30 @@ export async function getProduct(handle: string): Promise { } export async function getProducts({ - query + query = '', + reverse, + sortKey }: { query?: string; reverse?: boolean; sortKey?: string; }): Promise { - const res = await medusaRequest('get', `/products?q=${query}&limit=20`); - const products: Product[] = res.body.products.map((product: MedusaProduct) => + const res = await medusaRequest('GET', `/products?q=${query}&limit=20`); + let products: Product[] = res.body.products.map((product: MedusaProduct) => reshapeProduct(product) ); + + sortKey === 'PRICE' && + products.sort( + (a, b) => + parseFloat(a.priceRange.maxVariantPrice.amount) - + parseFloat(b.priceRange.maxVariantPrice.amount) + ); + + sortKey === 'CREATED_AT' && + products.sort((a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime()); + + reverse && products.reverse(); + return products; } diff --git a/lib/medusa/types.ts b/lib/medusa/types.ts index b16b0ccfc..587c36a55 100644 --- a/lib/medusa/types.ts +++ b/lib/medusa/types.ts @@ -62,6 +62,7 @@ export type Product = Partial;