Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b8ce9ded87 | ||
|
|
d28ee4a49d |
@@ -61,6 +61,7 @@ type MedusaLineItem = {
|
|||||||
thumbnail?: string | null;
|
thumbnail?: string | null;
|
||||||
quantity: number;
|
quantity: number;
|
||||||
unit_price?: number | null;
|
unit_price?: number | null;
|
||||||
|
product?: { images?: Array<{ url?: string | null }> | null } | null;
|
||||||
};
|
};
|
||||||
|
|
||||||
type MedusaCart = {
|
type MedusaCart = {
|
||||||
@@ -82,10 +83,13 @@ function mapCart(cart: MedusaCart): CartSummary {
|
|||||||
product: {
|
product: {
|
||||||
id: item.product_id,
|
id: item.product_id,
|
||||||
name: item.product_title || item.title || "Producto",
|
name: item.product_title || item.title || "Producto",
|
||||||
// La linea del carrito no trae el arreglo de imagenes del producto,
|
// item.thumbnail viene null en la practica para todo el catalogo
|
||||||
// solo este campo (a veces null) -- mismo fallback final que ya usa
|
// real (confirmado contra /store/products: product.thumbnail
|
||||||
// mapProduct() en medusa.ts.
|
// tambien es null ahi, incluso con fotos reales cargadas) -- el
|
||||||
thumbnail: item.thumbnail || "/images/brand/logo-ari.png",
|
// catalogo ya resuelve esto cayendo a images[0] (mapProduct() en
|
||||||
|
// medusa.ts), asi que la linea del carrito pide esa misma relacion
|
||||||
|
// explicita (no viene por defecto) y aplica el mismo fallback.
|
||||||
|
thumbnail: item.thumbnail || item.product?.images?.[0]?.url || "/images/brand/logo-ari.png",
|
||||||
price: typeof item.unit_price === "number" ? item.unit_price : null,
|
price: typeof item.unit_price === "number" ? item.unit_price : null,
|
||||||
currency: cart.currency_code,
|
currency: cart.currency_code,
|
||||||
},
|
},
|
||||||
@@ -117,6 +121,11 @@ async function medusaCartFetch(
|
|||||||
return response.json();
|
return response.json();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// *items.product.images no viene por defecto (verificado en vivo) y es
|
||||||
|
// lo unico que necesitamos ademas del set por defecto -- *items ya trae
|
||||||
|
// unit_price/product_title/variant_id/quantity sin pedirlos aparte.
|
||||||
|
const ITEMS_FIELDS = "fields=*items,*items.product.images";
|
||||||
|
|
||||||
export async function createCart(): Promise<CartSummary> {
|
export async function createCart(): Promise<CartSummary> {
|
||||||
const data = await medusaCartFetch("/store/carts", {
|
const data = await medusaCartFetch("/store/carts", {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
@@ -126,7 +135,7 @@ export async function createCart(): Promise<CartSummary> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function getCart(cartId: string): Promise<CartSummary> {
|
export async function getCart(cartId: string): Promise<CartSummary> {
|
||||||
const data = await medusaCartFetch(`/store/carts/${cartId}`);
|
const data = await medusaCartFetch(`/store/carts/${cartId}?${ITEMS_FIELDS}`);
|
||||||
return mapCart(data.cart as MedusaCart);
|
return mapCart(data.cart as MedusaCart);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -135,7 +144,7 @@ export async function addLineItem(
|
|||||||
variantId: string,
|
variantId: string,
|
||||||
quantity: number,
|
quantity: number,
|
||||||
): Promise<CartSummary> {
|
): Promise<CartSummary> {
|
||||||
const data = await medusaCartFetch(`/store/carts/${cartId}/line-items`, {
|
const data = await medusaCartFetch(`/store/carts/${cartId}/line-items?${ITEMS_FIELDS}`, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
body: { variant_id: variantId, quantity },
|
body: { variant_id: variantId, quantity },
|
||||||
});
|
});
|
||||||
@@ -147,7 +156,7 @@ export async function updateLineItemQuantity(
|
|||||||
lineItemId: string,
|
lineItemId: string,
|
||||||
quantity: number,
|
quantity: number,
|
||||||
): Promise<CartSummary> {
|
): Promise<CartSummary> {
|
||||||
const data = await medusaCartFetch(`/store/carts/${cartId}/line-items/${lineItemId}`, {
|
const data = await medusaCartFetch(`/store/carts/${cartId}/line-items/${lineItemId}?${ITEMS_FIELDS}`, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
body: { quantity },
|
body: { quantity },
|
||||||
});
|
});
|
||||||
@@ -155,7 +164,7 @@ export async function updateLineItemQuantity(
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function removeLineItem(cartId: string, lineItemId: string): Promise<CartSummary> {
|
export async function removeLineItem(cartId: string, lineItemId: string): Promise<CartSummary> {
|
||||||
const data = await medusaCartFetch(`/store/carts/${cartId}/line-items/${lineItemId}`, {
|
const data = await medusaCartFetch(`/store/carts/${cartId}/line-items/${lineItemId}?${ITEMS_FIELDS}`, {
|
||||||
method: "DELETE",
|
method: "DELETE",
|
||||||
});
|
});
|
||||||
// Forma distinta a las demas: el carrito actualizado viene en
|
// Forma distinta a las demas: el carrito actualizado viene en
|
||||||
|
|||||||
Reference in new issue
Block a user