import { Layout, Image, Button, Form, Skeleton } from "antd"; import ProHeader from "components/ProHeader/ProHeader"; import { useTranslation } from "react-i18next"; import styles from "./CardDetails.module.css"; import ProText from "components/ProText"; import { useGetEGiftCardsQuery } from "redux/api/others"; import { selectCart } from "features/order/orderSlice"; import { useAppSelector } from "redux/hooks"; import { useState, useEffect, useCallback } from "react"; import BackIcon from "components/Icons/BackIcon"; import NextIcon from "components/Icons/NextIcon"; import cardStyles from "./CardDetails.module.css"; import ReceivernformationCard from "./components/ReceivernformationCard/ReceivernformationCard"; import SenderformationCard from "./components/SenderformationCard/SenderformationCard"; import TimeEstimateCard from "pages/cart/components/timeEstimate/TimeEstimateCard"; import { useNavigate, useParams } from "react-router-dom"; import GiftAmountCard from "./components/GiftAmountCard/GiftAmountCard"; import { GiftAmountBottomSheet } from "./components/GiftAmountBottomSheet"; export default function CardDetailsPage() { const { t } = useTranslation(); const { data: cards, isLoading } = useGetEGiftCardsQuery(); const { giftDetails } = useAppSelector(selectCart); const { isRTL } = useAppSelector((state) => state.locale); const [currentIndex, setCurrentIndex] = useState(0); const [isGiftAmountBottomSheetOpen, setIsGiftAmountBottomSheetOpen] = useState(false); const { subdomain } = useParams(); const navigate = useNavigate(); const [form] = Form.useForm(); // Find the initial index based on selected cardId from gift details useEffect(() => { if (cards && giftDetails?.cardId) { const index = cards.findIndex( (card) => card?.id?.toString() === giftDetails.cardId.toString(), ); if (index !== -1) { setCurrentIndex(index); } } }, [cards, giftDetails?.cardId]); const handlePrevious = () => { if (cards && cards.length > 0) { setCurrentIndex((prev) => (prev === 0 ? cards.length - 1 : prev - 1)); } }; const handleNext = () => { if (cards && cards.length > 0) { setCurrentIndex((prev) => (prev === cards.length - 1 ? 0 : prev + 1)); } }; const currentCard = cards && cards.length > 0 ? cards[currentIndex] : null; const handleCheckout = useCallback(async () => { try { await form.validateFields(); navigate(`/${subdomain}/checkout`); } catch (error) { console.log(error); } }, [subdomain, form, navigate]); return ( <> {t("cardDetails.title")}
{t("cardDetails.addGiftDetails")} {t("cardDetails.description")}
{isLoading || !currentCard ? (
) : (
)}
{giftDetails?.giftType !== "items" && ( setIsGiftAmountBottomSheetOpen(true)} /> )}
setIsGiftAmountBottomSheetOpen(false)} /> ); }