mirror of
https://github.com/vercel/commerce.git
synced 2025-05-19 07:56:59 +00:00
fix: Localize cart
This commit is contained in:
parent
b7d78faaf0
commit
5f664a03c3
@ -45,9 +45,7 @@ export default async function HomePage({
|
||||
let cart;
|
||||
|
||||
if (cartId) {
|
||||
console.debug({ cartId });
|
||||
cart = await getCart({ cartId, language: locale?.toUpperCase() });
|
||||
console.debug({ cart });
|
||||
}
|
||||
|
||||
return (
|
||||
|
@ -1,25 +1,22 @@
|
||||
'use server';
|
||||
|
||||
import { SupportedLocale } from 'components/layout/navbar/language-control';
|
||||
import { addToCart, createCart, getCart, removeFromCart, updateCart } from 'lib/shopify';
|
||||
import { cookies } from 'next/headers';
|
||||
|
||||
export const addItem = async ({
|
||||
variantId,
|
||||
locale
|
||||
}: {
|
||||
variantId: string | undefined;
|
||||
locale?: string;
|
||||
}): Promise<String | undefined> => {
|
||||
export const addItem = async (
|
||||
variantId: string | undefined,
|
||||
country?: string,
|
||||
language?: string
|
||||
): Promise<String | undefined> => {
|
||||
let cartId = cookies().get('cartId')?.value;
|
||||
let cart;
|
||||
|
||||
if (cartId) {
|
||||
cart = await getCart({ cartId, language: locale?.toUpperCase() });
|
||||
cart = await getCart({ cartId, country, language });
|
||||
}
|
||||
|
||||
if (!cartId || !cart) {
|
||||
cart = await createCart();
|
||||
cart = await createCart({ country, language });
|
||||
cartId = cart.id;
|
||||
cookies().set('cartId', cartId);
|
||||
}
|
||||
@ -29,7 +26,7 @@ export const addItem = async ({
|
||||
}
|
||||
|
||||
try {
|
||||
await addToCart(cartId, [{ merchandiseId: variantId, quantity: 1 }]);
|
||||
await addToCart(cartId, [{ merchandiseId: variantId, quantity: 1 }], country, language);
|
||||
} catch (e) {
|
||||
return 'Error adding item to cart';
|
||||
}
|
||||
@ -38,21 +35,23 @@ export const addItem = async ({
|
||||
export const addItems = async ({
|
||||
variantId,
|
||||
quantity = 1,
|
||||
locale
|
||||
country,
|
||||
language
|
||||
}: {
|
||||
variantId: string | undefined;
|
||||
quantity: number;
|
||||
locale?: SupportedLocale;
|
||||
country?: string;
|
||||
language?: string;
|
||||
}): Promise<String | undefined> => {
|
||||
let cartId = cookies().get('cartId')?.value;
|
||||
let cart;
|
||||
|
||||
if (cartId) {
|
||||
cart = await getCart({ cartId, language: locale?.toUpperCase() });
|
||||
cart = await getCart({ cartId, country, language });
|
||||
}
|
||||
|
||||
if (!cartId || !cart) {
|
||||
cart = await createCart();
|
||||
cart = await createCart({ country, language });
|
||||
cartId = cart.id;
|
||||
cookies().set('cartId', cartId);
|
||||
}
|
||||
@ -62,7 +61,7 @@ export const addItems = async ({
|
||||
}
|
||||
|
||||
try {
|
||||
await addToCart(cartId, [{ merchandiseId: variantId, quantity }]);
|
||||
await addToCart(cartId, [{ merchandiseId: variantId, quantity }], country, language);
|
||||
} catch (e) {
|
||||
return quantity === 1 ? 'Error adding item to cart' : 'Error adding items to cart';
|
||||
}
|
||||
|
@ -1,14 +1,13 @@
|
||||
import { SupportedLocale } from 'components/layout/navbar/language-control';
|
||||
import { getCart } from 'lib/shopify';
|
||||
import { cookies } from 'next/headers';
|
||||
import CartModal from './modal';
|
||||
|
||||
export default async function Cart({ locale }: { locale?: SupportedLocale }) {
|
||||
export default async function Cart({ country, language }: { country?: string; language?: string }) {
|
||||
const cartId = cookies().get('cartId')?.value;
|
||||
let cart;
|
||||
|
||||
if (cartId) {
|
||||
cart = await getCart({ cartId, language: locale?.toUpperCase() });
|
||||
cart = await getCart({ cartId, country, language });
|
||||
}
|
||||
|
||||
return <CartModal cart={cart} />;
|
||||
|
@ -176,13 +176,17 @@ export type ShopifyCartOperation = {
|
||||
};
|
||||
variables: {
|
||||
cartId: string;
|
||||
language?: string;
|
||||
country?: string;
|
||||
language?: string;
|
||||
};
|
||||
};
|
||||
|
||||
export type ShopifyCreateCartOperation = {
|
||||
data: { cartCreate: { cart: ShopifyCart } };
|
||||
variables: {
|
||||
country?: string;
|
||||
language?: string;
|
||||
};
|
||||
};
|
||||
|
||||
export type ShopifyAddToCartOperation = {
|
||||
@ -197,6 +201,8 @@ export type ShopifyAddToCartOperation = {
|
||||
merchandiseId: string;
|
||||
quantity: number;
|
||||
}[];
|
||||
country?: string;
|
||||
language?: string;
|
||||
};
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user