/home/bdqbpbxa/demo-subdomains/ping-proxies.goodface.com.ua/src/pages/Product/index.jsx
import Feauters from 'components/Sections/Features';
import Hero from './Hero';
import ProxyManagement from 'components/Sections/ProxyManagement';
import GetStarted from 'components/Sections/GetStarted';
import StatisticCards from 'components/Sections/StatisticCards';
import CTA from 'components/Sections/CTA';
import PaymentsSection from 'components/Sections/PaymentsSection';
import Benefits from 'components/Sections/Benefits';
import Locations from 'components/Sections/Locations';
import FAQ from 'components/Sections/FAQ';
// import Preloader from 'Layout/Preloader';
import {
    fetchCurrentProduct,
    selectCurrentProduct,
    // selectCurrentProduct,
    selectProductBenefits,
    selectProductCTA,
    selectProductCTAFooter,
    selectProductDashboard,
    selectProductFAQ,
    selectProductFeatures,
    selectProductIsLoading,
    selectProductLocations,
    selectProductPayments,
    selectProductStatistics,
} from 'store/slices/ProductSlice';
import { useEffect, useState } from 'react';
import { useSelector, useDispatch } from 'react-redux';
import { selectFeatures } from 'store/slices/FeaturesSlice';
import { useNavigate, useParams } from 'react-router-dom';
import ProductPrice from 'components/Sections/ProductPricing';
import { useImageLoaded } from 'hooks/useImageLoaded';

const ProductPage = () => {
    const { productSlug } = useParams();
    const navigate = useNavigate()
    const [isLoading, setIsLoading] = useState(true);

    const dispatch = useDispatch();
    const data = useSelector(selectCurrentProduct)

    const isProductLoading = useSelector(selectProductIsLoading);
    const isLoadedImages = useImageLoaded(productSlug);

    const statistics = useSelector(selectProductStatistics);
    const cta = useSelector(selectProductCTA);
    const payments = useSelector(selectProductPayments);
    const featuresSideText = useSelector(selectProductFeatures);
    const feauters = useSelector(selectFeatures);
    const dashboard = useSelector(selectProductDashboard);
    const benefits = useSelector(selectProductBenefits);
    const locationsText = useSelector(selectProductLocations);
    const faq = useSelector(selectProductFAQ);
    const ctaFooter = useSelector(selectProductCTAFooter);

    useEffect(() => {
        if (productSlug) {
            // @ts-ignore
            dispatch(fetchCurrentProduct({ productSlug }));
        }
    }, [dispatch, productSlug]);

    useEffect(() => {
        if (isLoadedImages && !isProductLoading && productSlug) {
            setIsLoading(false)
        } else (setIsLoading(true))
    }, [isLoadedImages, isProductLoading, productSlug]);

    if (!isProductLoading && !data) {
        navigate("*");
        return null;
    }

    return !isProductLoading && (
        <>
            <Hero />
            <StatisticCards data={statistics} isLoading={isLoading} />
            <ProductPrice isLoading={isLoading} />
            <CTA cta={cta} isLoading={isLoading} />
            <PaymentsSection payments={payments} isLoading={isLoading} />
            <Feauters featuresSideText={featuresSideText} features={feauters} isLoading={isLoading} />
            <ProxyManagement dashboard={dashboard} isLoading={isLoading} />
            <Benefits data={benefits} isLoading={isLoading} />
            <Locations locationsText={locationsText} isLoading={isLoading} />
            <FAQ data={faq} isLoading={isLoading} />
            <GetStarted cta={ctaFooter} isLoading={isLoading} />
        </>
    );
};

export default ProductPage;