product page: get selected variant price instead of main product price
This commit is contained in:
@@ -88,34 +88,32 @@ export default function ProductDetailPage({
|
||||
}, [product?.variants]);
|
||||
|
||||
// Get the final selected variant ID (the variant that matches all current selections)
|
||||
const getFinalSelectedVariantId = useCallback(() => {
|
||||
const getFinalSelectedVariant = useCallback(() => {
|
||||
if (!product?.variants || Object.keys(selectedVariants).length === 0)
|
||||
return "";
|
||||
return undefined;
|
||||
|
||||
// Find the variant that matches all current selections
|
||||
const matchingVariant = product.variants.find((variant) => {
|
||||
// Convert to string only if defined, otherwise return empty string
|
||||
return product.variants.find((variant) => {
|
||||
return Object.entries(selectedVariants).every(([level, value]) => {
|
||||
const levelNum = parseInt(level);
|
||||
return variant.options[levelNum]?.value === value;
|
||||
});
|
||||
});
|
||||
|
||||
// Convert to string only if defined, otherwise return empty string
|
||||
return matchingVariant?.id?.toString() || "";
|
||||
}, [product?.variants, selectedVariants]);
|
||||
|
||||
const getExtras = useCallback(() => {
|
||||
const finalSelectedVariantId = getFinalSelectedVariantId();
|
||||
if (finalSelectedVariantId) {
|
||||
const finalSelectedVariant = getFinalSelectedVariant();
|
||||
if (finalSelectedVariant) {
|
||||
const variant = product?.variants?.find(
|
||||
(variant) => variant.id === Number(finalSelectedVariantId),
|
||||
(variant) => variant.id === finalSelectedVariant.id,
|
||||
);
|
||||
if (variant?.extras?.length && variant.extras.length > 0) {
|
||||
return variant.extras;
|
||||
}
|
||||
}
|
||||
return product?.extras;
|
||||
}, [product?.variants, product?.extras, getFinalSelectedVariantId]);
|
||||
}, [product?.variants, product?.extras, getFinalSelectedVariant]);
|
||||
|
||||
// Validation function to check if all required selections are made
|
||||
const validateRequiredSelections = () => {
|
||||
@@ -277,7 +275,7 @@ export default function ProductDetailPage({
|
||||
<ProductFooter
|
||||
product={product}
|
||||
isValid={isValid}
|
||||
variantId={getFinalSelectedVariantId()}
|
||||
selectedVariant={getFinalSelectedVariant()}
|
||||
selectedExtras={selectedExtras}
|
||||
selectedGroups={Object.values(selectedExtrasByGroup).flat()}
|
||||
quantity={quantity}
|
||||
@@ -326,7 +324,7 @@ export default function ProductDetailPage({
|
||||
<ProductFooter
|
||||
product={product}
|
||||
isValid={isValid}
|
||||
variantId={getFinalSelectedVariantId()}
|
||||
selectedVariant={getFinalSelectedVariant()}
|
||||
selectedExtras={selectedExtras}
|
||||
selectedGroups={Object.values(selectedExtrasByGroup).flat()}
|
||||
quantity={quantity}
|
||||
|
||||
Reference in New Issue
Block a user