"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 AddListingPlanCardSkeleton from "@/components/Skeletons/AddListingPlanCardSkeleton"; import { CurrentLanguageData, getIsRtl } from "@/redux/reducer/languageSlice"; import { useSelector } from "react-redux"; import { toast } from "sonner"; import BankDetailsModal from "./BankDetailsModal"; import { getIsFreAdListing } from "@/redux/reducer/settingSlice"; import { useNavigate } from "@/components/Common/useNavigate"; const ProfileSubscription = () => { 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 [adPackages, setAdPackages] = useState([]); const hasAdDiscount = adPackages.some((p) => p.discount_in_percentage > 0); const [showPaymentModal, setShowPaymentModal] = useState(false); const [selectedPackage, setSelectedPackage] = useState(null); const [isListingPackagesLoading, setIsListingPackagesLoading] = useState(false); const [isAdPackagesLoading, setIsAdPackagesLoading] = useState(false); const [packageSettings, setPackageSettings] = useState(null); const [isLoading, setIsLoading] = useState(false); const isFreeAdListing = useSelector(getIsFreAdListing); const [toggleApiAfterPaymentSuccess, setToggleApiAfterPaymentSuccess] = useState(false) 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 (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 ? ( ) : (
0 ? "mt-8" : "" }`} >

{t("featuredAdPlan")}

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