/home/bdqbpbxa/demo-subdomains/ping-proxies.goodface.com.ua/src/App.jsx
import { Routes, Route, useLocation } from 'react-router-dom';
import Layout from './Layout/Layout';
import FZF from 'pages/404';
import { useDispatch, useSelector } from 'react-redux';
import { lazy, useEffect, } from 'react';
import { fetchGeneral, selectGeneralIsLoading } from 'store/slices/GeneralSlice';
import { fetchHomepage, selectHomepageIsLoading } from 'store/slices/HomepageSlice';
import ROUTES from 'constants/routes';
import { selectFeaturesIsLoading, fetchFeatures } from 'store/slices/FeaturesSlice';
import { fetchPosts } from 'store/slices/BlogSlice';
import { fetchLocations } from 'store/slices/LocationsSlice';
import { fetchProductsData } from 'store/slices/PricingSlice';
import { Helmet } from 'react-helmet';
import { useCookies } from 'react-cookie';


import ReactGA from 'react-ga4';
import Sitemap from 'pages/Sitemap';
import LandingPage from 'pages/LandingPage';
import BrandAssets from 'pages/BrandAssets';



const Home = lazy(() => import('pages/Home'));
const ProductPage = lazy(() => import('pages/Product'));
const Features = lazy(() => import('pages/Features'));
const MainProxyLocation = lazy(() => import('pages/ProxyLocations/MainProxyLocations'));
const CurrentProxyLocation = lazy(() => import('pages/ProxyLocations/CurrentProxyLocations'));
const Company = lazy(() => import('pages/ProxyLocations/MainProxyLocations'));
const Pricing = lazy(() => import('pages/Pricing'));
const Contacts = lazy(() => import('pages/Contacts'));
const AboutUs = lazy(() => import('pages/AboutUs'));
const FAQPage = lazy(() => import('pages/FAQ'));
const Blog = lazy(() => import('pages/Blog'));
const CurrentPost = lazy(() => import('pages/Blog/CurrentPost'));
const TermsAndConditions = lazy(() => import('pages/TermsAndConditions'));
const PrivacyPolicy = lazy(() => import('pages/PrivacyPolicy'));
const RefundPolicy = lazy(() => import('pages/RefundPolicy'));



const App = () => {
    const location = useLocation();
    const dispatch = useDispatch();
    const [cookies] = useCookies(['cookieAgreement']);
    const isCookieAgree = cookies.cookieAgreement;


    const generalIsLoading = useSelector(selectGeneralIsLoading);
    const homepageIsLoading = useSelector(selectHomepageIsLoading);
    const featuresIsLoading = useSelector(selectFeaturesIsLoading);

    useEffect(() => {
        // @ts-ignore
        dispatch(fetchGeneral());
        // @ts-ignore
        dispatch(fetchHomepage());
        // @ts-ignore
        dispatch(fetchFeatures());
        // @ts-ignore
        dispatch(fetchLocations());
        // @ts-ignore
        dispatch(fetchProductsData());
        dispatch(
            // @ts-ignore
            fetchPosts({ page: 1 }),
        );
    }, [dispatch]);

    useEffect(() => {
        if (isCookieAgree) {
            ReactGA.initialize('G-H9W76JSSRJ');

        }
    }, [isCookieAgree]);
    useEffect(() => {
        if (isCookieAgree) {
            ReactGA.send({ hitType: 'pageview', page: location.pathname });
        }
    }, [location, isCookieAgree]);



    return generalIsLoading || homepageIsLoading || featuresIsLoading || (
        <>
            <Helmet
                titleTemplate="Ping Proxies - %s"
                defaultTitle="Ping Proxies"
                meta={[
                    { name: "description", content: "The world's most advanced proxy network" },
                ]}
            />

            <Routes>
                <Route path={ROUTES.base} element={<Layout />}>
                    <Route index element={<Home />} />
                    <Route path={`${ROUTES.product}/:productSlug`} element={<ProductPage />} />
                    <Route path={`${ROUTES.features}/:featuresSlug`} element={<Features />} />
                    <Route path={ROUTES.location} element={<MainProxyLocation />} />
                    <Route path={`${ROUTES.location}/:countrySlug`} element={<CurrentProxyLocation />} />
                    <Route path={ROUTES.company} element={<Company />} />
                    <Route path={ROUTES.pricing} element={<Pricing />} />
                    <Route path={ROUTES.contacts} element={<Contacts />} />
                    <Route path={ROUTES.about_us} element={<AboutUs />} />
                    <Route path={ROUTES.faq} element={<FAQPage />} />
                    <Route path={ROUTES.blog} element={<Blog />} />
                    <Route path={`${ROUTES.blog}/:postSlug`} element={<CurrentPost />} />
                    <Route path={ROUTES.terms_and_conditions} element={<TermsAndConditions />} />
                    <Route path={ROUTES.privacy_policy} element={<PrivacyPolicy />} />
                    <Route path={ROUTES.refund_policy} element={<RefundPolicy />} />
                    <Route path={ROUTES.landing_page + "/:landingPageSlug"} element={<LandingPage />} />
                    <Route path={ROUTES.brand_assets} element={<BrandAssets />} />
                    <Route path={`${ROUTES.update_sitemap}`} element={<Sitemap />} />
                    <Route path="*" element={<FZF />} />
                </Route>
                {/* <Route path={ROUTES.ui_kit} element={<UIKit />} /> */}
            </Routes>
        </>
    );
};

export default App;