mirror of
https://github.com/vercel/commerce.git
synced 2025-03-31 09:15:53 +00:00
Fixes add to cart for products with a single variant (#1127)
This commit is contained in:
parent
cd8f4c6b4c
commit
7ae036b385
@ -6,7 +6,7 @@ import { addItem } from 'components/cart/actions';
|
|||||||
import LoadingDots from 'components/loading-dots';
|
import LoadingDots from 'components/loading-dots';
|
||||||
import { ProductVariant } from 'lib/shopify/types';
|
import { ProductVariant } from 'lib/shopify/types';
|
||||||
import { useRouter, useSearchParams } from 'next/navigation';
|
import { useRouter, useSearchParams } from 'next/navigation';
|
||||||
import { useEffect, useState, useTransition } from 'react';
|
import { useTransition } from 'react';
|
||||||
|
|
||||||
export function AddToCart({
|
export function AddToCart({
|
||||||
variants,
|
variants,
|
||||||
@ -15,21 +15,16 @@ export function AddToCart({
|
|||||||
variants: ProductVariant[];
|
variants: ProductVariant[];
|
||||||
availableForSale: boolean;
|
availableForSale: boolean;
|
||||||
}) {
|
}) {
|
||||||
const [selectedVariantId, setSelectedVariantId] = useState<string | undefined>(undefined);
|
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const searchParams = useSearchParams();
|
const searchParams = useSearchParams();
|
||||||
const [isPending, startTransition] = useTransition();
|
const [isPending, startTransition] = useTransition();
|
||||||
|
const defaultVariantId = variants.length === 1 ? variants[0]?.id : undefined;
|
||||||
useEffect(() => {
|
|
||||||
const variant = variants.find((variant: ProductVariant) =>
|
const variant = variants.find((variant: ProductVariant) =>
|
||||||
variant.selectedOptions.every(
|
variant.selectedOptions.every(
|
||||||
(option) => option.value === searchParams.get(option.name.toLowerCase())
|
(option) => option.value === searchParams.get(option.name.toLowerCase())
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
const selectedVariantId = variant?.id || defaultVariantId;
|
||||||
setSelectedVariantId(variant?.id);
|
|
||||||
}, [searchParams, variants, setSelectedVariantId]);
|
|
||||||
|
|
||||||
const title = !availableForSale
|
const title = !availableForSale
|
||||||
? 'Out of stock'
|
? 'Out of stock'
|
||||||
: !selectedVariantId
|
: !selectedVariantId
|
||||||
|
Loading…
x
Reference in New Issue
Block a user