import { Button, Form, Input, message } from "antd"; import { CloseCircleOutlined } from "@ant-design/icons"; import { CouponBottomSheet } from "components/CustomBottomSheet/CouponBottomSheet"; import { CouponDialog } from "components/CustomBottomSheet/CouponDialog"; import CouponHeartIcon from "components/Icons/cart/CouponHeart.tsx"; import DonateIcon from "components/Icons/cart/DonateIcon"; import ProInputCard from "components/ProInputCard/ProInputCard.tsx"; import ProText from "components/ProText"; import { selectCart, updateCoupon, updateDiscount, } from "features/order/orderSlice.ts"; import useBreakPoint from "hooks/useBreakPoint"; import styles from "pages/cart/cart.module.css"; import { useState } from "react"; import { useTranslation } from "react-i18next"; import { useGetDiscountMutation } from "redux/api/others"; import { useAppDispatch, useAppSelector } from "redux/hooks.ts"; import { colors } from "ThemeConstants"; export default function CouponCard() { const { t } = useTranslation(); const dispatch = useAppDispatch(); const { restaurant, discount } = useAppSelector((state) => state.order); const { coupon } = useAppSelector(selectCart); const { isDesktop } = useBreakPoint(); const [getDiscount] = useGetDiscountMutation(); const [isCouponOpen, setIsCouponOpen] = useState(false); const isDiscountApplied = discount.value > 0 || discount.isDiscount || discount.isGift; const handleCouponSave = (value: string) => { getDiscount({ discountCode: value, restaurantID: restaurant.restautantId || "", }) .unwrap() .then((response) => { dispatch( updateDiscount({ value: response.value, isGift: response.isGift, isDiscount: response.isDiscount, }), ); message.success(t("cart.couponApplied")); }) .catch((error) => { message.error(error.data.message || t("cart.couponInvalid")); }); }; const handleCouponClose = () => { setIsCouponOpen(false); }; const handleClearDiscount = () => { dispatch(updateCoupon("")); dispatch( updateDiscount({ value: 0, isGift: false, isDiscount: false, }), ); message.success(t("cart.couponRemoved") || "Coupon removed"); }; return ( <> setIsCouponOpen(true)} > {t("cart.viewOffers")} } > { dispatch(updateCoupon(e.target.value)); }} suffix={ isDiscountApplied ? ( ) : ( ) } /> {isDesktop ? ( ) : ( )} ); }