/home/bdqbpbxa/demo-subdomains/ping-proxies.goodface.com.ua/src/pages/Features/index.jsx
import StatisticCards from "components/Sections/StatisticCards";
import FiatureSingles from "./FeatureSingle";
import Benefits from "components/Sections/Benefits";
import UseCases from "components/Sections/UseCases";
import Hero from "./Hero";
import FAQ from "components/Sections/FAQ";
import GetStarted from "components/Sections/GetStarted";
import { useNavigate, useParams } from 'react-router-dom';
import { useSelector, useDispatch } from 'react-redux';
import {
    fetchCurrentFeature,
    selectCurrentFeaturesHero,
    selectCurrentFeaturesSingle,
    selectCurrentFeaturesStatistic,
    selectCurrentFeaturesBenefits,
    selectCurrentFeaturesUseCases,
    selectCurrentFeaturesFAQ,
    selectCurrentFeaturesCTA,
    selectCurrentFeatureIsLoading,
    selectCurrentFeatures
} from "store/slices/FeaturesSlice";
import { useEffect, useState } from "react";
import { useImageLoaded } from "hooks/useImageLoaded";

const Features = () => {
    const dispatch = useDispatch();
    const { featuresSlug } = useParams();
    const navigate = useNavigate()
    const [isLoading, setIsLoading] = useState(true);

    const data = useSelector(selectCurrentFeatures)
    const isFeatureLoading = useSelector(selectCurrentFeatureIsLoading);
    const isLoadedImages = useImageLoaded(featuresSlug, isFeatureLoading);

    const hero = useSelector(selectCurrentFeaturesHero);
    const statistic = useSelector(selectCurrentFeaturesStatistic);
    const single = useSelector(selectCurrentFeaturesSingle);
    const benefits = useSelector(selectCurrentFeaturesBenefits);
    const useCases = useSelector(selectCurrentFeaturesUseCases);
    const faq = useSelector(selectCurrentFeaturesFAQ);
    const cta = useSelector(selectCurrentFeaturesCTA);
    useEffect(() => {
        if (featuresSlug) {
            // @ts-ignore
            dispatch(fetchCurrentFeature({ featuresSlug }));
        }
    }, [dispatch, featuresSlug]);

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


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

    return !isFeatureLoading && (
        <>
            {/* {
                isLoading && <Preloader />
            } */}
            <Hero data={hero} />
            <StatisticCards data={statistic} isLoading={isLoading} />
            <FiatureSingles data={single} isLoading={isLoading} />
            <Benefits data={benefits} isLoading={isLoading} />
            <UseCases useCases={useCases} isLoading={isLoading} />
            <FAQ data={faq} isLoading={isLoading} />
            <GetStarted cta={cta} isLoading={isLoading} />
        </>
    );
}

export default Features;