"use client"; import { useEffect, useState } from "react"; import AddListingPlanCard from "@/components/PagesComponent/Cards/AddListingPlanCard"; import { assigFreePackageApi, getPackageApi, getPaymentSettingsApi, } from "@/utils/api"; import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, } from "@/components/ui/carousel"; import { t } from "@/utils"; import PaymentModal from "./PaymentModal"; import { CurrentLanguageData, getIsRtl } from "@/redux/reducer/languageSlice"; import { useSelector } from "react-redux"; import Layout from "@/components/Layout/Layout"; import { getIsLoggedIn } from "@/redux/reducer/authSlice"; import { setIsLoginOpen } from "@/redux/reducer/globalStateSlice"; import { toast } from "sonner"; import BankDetailsModal from "./BankDetailsModal"; import BreadCrumb from "@/components/BreadCrumb/BreadCrumb"; import AdListingPublicPlanCardSkeleton from "@/components/Skeletons/AdListingPublicPlanCardSkeleton"; import { getIsFreAdListing } from "@/redux/reducer/settingSlice"; import { useNavigate } from "@/components/Common/useNavigate"; const Subscription = () => { const isRTL = useSelector(getIsRtl); const { navigate } = useNavigate(); const CurrentLanguage = useSelector(CurrentLanguageData); const [listingPackages, setListingPackages] = useState([]); const hasListingDiscount = listingPackages?.some( (p) => p?.discount_in_percentage > 0 ); const [isListingPackagesLoading, setIsListingPackagesLoading] = useState(false); const [selectedPackage, setSelectedPackage] = useState(null); const [adPackages, setAdPackages] = useState([]); const hasAdDiscount = adPackages.some((p) => p.discount_in_percentage > 0); const [isAdPackagesLoading, setIsAdPackagesLoading] = useState(false); const [toggleApiAfterPaymentSuccess, setToggleApiAfterPaymentSuccess] = useState(false) const [showPaymentModal, setShowPaymentModal] = useState(false); const [isLoading, setIsLoading] = useState(false); const [packageSettings, setPackageSettings] = useState(null); const isLoggedIn = useSelector(getIsLoggedIn); const isFreeAdListing = useSelector(getIsFreAdListing); useEffect(() => { if (!isFreeAdListing) { handleFetchListingPackages(); } handleFetchFeaturedPackages(); }, [CurrentLanguage?.id, toggleApiAfterPaymentSuccess]); useEffect(() => { if (showPaymentModal) { handleFetchPaymentSetting(); } }, [showPaymentModal]); const handleFetchPaymentSetting = async () => { setIsLoading(true); try { const res = await getPaymentSettingsApi.getPaymentSettings(); const { data } = res.data; setPackageSettings(data); } catch (error) { console.log(error); } finally { setIsLoading(false); } }; const handleFetchListingPackages = async () => { try { setIsListingPackagesLoading(true); const res = await getPackageApi.getPackage({ type: "item_listing" }); setListingPackages(res?.data?.data); } catch (error) { console.log(error); } finally { setIsListingPackagesLoading(false); } }; const handleFetchFeaturedPackages = async () => { try { setIsAdPackagesLoading(true); const res = await getPackageApi.getPackage({ type: "advertisement" }); setAdPackages(res.data?.data); } catch (error) { console.log(error); } finally { setIsAdPackagesLoading(false); } }; const handlePurchasePackage = (pckg) => { if (!isLoggedIn) { setIsLoginOpen(true); return; } if (pckg?.final_price === 0) { assignPackage(pckg.id); } else { setShowPaymentModal(true); setSelectedPackage(pckg); } }; const assignPackage = async (id) => { try { const res = await assigFreePackageApi.assignFreePackage({ package_id: id, }); const data = res?.data; if (data?.error === false) { toast.success(data.message); navigate("/"); } else { toast.error(data.message); } } catch (error) { toast.error(data.message); console.log(error); } }; return (
{isListingPackagesLoading ? ( ) : ( listingPackages?.length > 0 && (

{t("adListingPlan")}

{listingPackages?.map((pckg) => ( ))}
) )} {isAdPackagesLoading ? ( ) : (

{t("featuredAdPlan")}

{adPackages?.map((pckg) => ( ))}
)}
); }; export default Subscription;