From c60c5626135537c0d2962c4099b6798f0f776116 Mon Sep 17 00:00:00 2001 From: Mohammed Al-yaseen Date: Wed, 12 Nov 2025 23:35:56 +0300 Subject: [PATCH] swipe extra with group of extra & don't show the global extra if we have variants --- src/pages/product/page.tsx | 36 ++++++++++++++++-------------------- src/utils/types/appTypes.ts | 20 +++++++++++++++++++- 2 files changed, 35 insertions(+), 21 deletions(-) diff --git a/src/pages/product/page.tsx b/src/pages/product/page.tsx index a61ad40..ec5dcab 100644 --- a/src/pages/product/page.tsx +++ b/src/pages/product/page.tsx @@ -10,6 +10,8 @@ import ArabicPrice from "components/ArabicPrice"; import useBreakPoint from "hooks/useBreakPoint"; import ExtraGroupsContainer from "pages/product/components/ExtraGroupsContainer.tsx"; import { useCallback, useMemo, useState } from "react"; +import { useParams } from "react-router-dom"; +import { useGetMenuQuery } from "redux/api/others.ts"; import { colors } from "ThemeConstants"; import { Extra, Product } from "utils/types/appTypes"; import BackButton from "../menu/components/BackButton"; @@ -17,8 +19,6 @@ import ExtraComponent from "./components/Extra"; import ProductFooter from "./components/ProductFooter"; import Variants from "./components/Variants"; import styles from "./product.module.css"; -import { useParams } from "react-router-dom"; -import { useGetMenuQuery } from "redux/api/others.ts"; export default function ProductDetailPage({ onClose, @@ -120,16 +120,12 @@ export default function ProductDetailPage({ const getExtras = useCallback(() => { const finalSelectedVariant = getFinalSelectedVariant(); - if (finalSelectedVariant) { - const variant = product?.variants?.find( - (variant) => variant.id === finalSelectedVariant.id, - ); - if (variant?.extras?.length && variant.extras.length > 0) { - return variant.extras; - } - } - return product?.extras; - }, [product?.variants, product?.extras, getFinalSelectedVariant]); + if (!finalSelectedVariant) return []; + const selectedVariant = product?.variants?.find( + (variant) => variant.id === finalSelectedVariant.id, + ); + return selectedVariant?.extras || []; + }, [product?.variants, getFinalSelectedVariant]); // Validation function to check if all required selections are made const validateRequiredSelections = () => { @@ -316,14 +312,6 @@ export default function ProductDetailPage({ /> )} - {getExtras()?.length > 0 && ( - - )} - {product.theExtrasGroups.length > 0 && ( )} + + {getExtras()?.length > 0 && ( + + )} )} diff --git a/src/utils/types/appTypes.ts b/src/utils/types/appTypes.ts index a60a652..688a336 100644 --- a/src/utils/types/appTypes.ts +++ b/src/utils/types/appTypes.ts @@ -489,11 +489,29 @@ export interface RestaurantDetails { contact_number: string; menu_url: string; taxes: Tax[]; + minimum: string; + instagram: string; + whatsapp_phone: string; + global_currency: string; + local_currency: string; + is_hotel: number; + primary_color: string; + TimeZone: string; + is_schedule_order_enabled: number; + is_call_waiter_enabled: number; + pickup_type: string; + menu_background: string; + email: string; + prepaid_percentage: number; + enable_apple_passkey: number; + map_url: string; + use_googlemaps_url: number; + self_deliver: number; + subdomain: string; openingTime: string; closingTime: string; isOpened: boolean; isFav: boolean; - is_schedule_order_enabled: number; } export interface Banner {