/home/bdqbpbxa/demo-subdomains/ping-proxies.goodface.com.ua/src/pages/Product/Hero/index.jsx
import React, { useCallback, useEffect, useState } from 'react';
import './styles.scss';
import HeroComponent from './heroComponent';
import HeroLayout from 'components/Sections/Hero/HeroLayout';
import { useSelector } from 'react-redux';
import { selectProductHero, selectProductIsLoading } from 'store/slices/ProductSlice';
import { getImageUrl } from 'helpers';
import DaraProxyIllustration from 'components/AnimationIllustrations/DataProxyIllustration';
import StaticResidentialProxiesIllustration from 'components/AnimationIllustrations/StaticResidentialProxiesIllustration';
import { useParams } from 'react-router-dom';
import ResidentialProxyIllustration from 'components/AnimationIllustrations/ResidentialProxyIllustration';
import { Helmet } from 'react-helmet';
import { selectDatacenterProxies, selectResidentialProxies, selectStaticResidentialProxies } from 'store/slices/PricingSlice';
import { convertToCent, getPriceTierAmount } from 'components/Sections/ProductPricing/helpers';
import useMediaQuery from '../../../hooks/useMediaQuery';

const Hero = () => {
    const [sku, setSku] = useState(null);
    const [price, setPrice] = useState(null);

    const isLoading = useSelector(selectProductIsLoading);
    const hero = useSelector(selectProductHero);
    const datacenterProxies = useSelector(selectDatacenterProxies);
    const staticResidentialProxies = useSelector(selectStaticResidentialProxies);
    const residentialProxies = useSelector(selectResidentialProxies);
    const datacenterProxiesUnit = datacenterProxies.product_prices?.[2]?.price_tiers;
    const staticResidentialProxiesUnit = staticResidentialProxies.product_prices?.[2]?.price_tiers;
    const residentialProxiesUnit = residentialProxies.product_prices?.[0]?.price_tiers;
    const { productSlug } = useParams();
    const [illustrationComponent, setIllustrationComponent] = useState(null);
    const { title, description, button_text, button_two_text, button_text_link, button_two_text_link, image } = hero;
    const imageUrl = getImageUrl(image);

    const getIllustrationComponent = useCallback(() => {
        switch (productSlug) {
            case "datacenter-proxies":
                setSku("datacenter");
                if (datacenterProxiesUnit) setPrice(convertToCent(getPriceTierAmount(0, datacenterProxiesUnit)))
                return <DaraProxyIllustration isLoading={isLoading} />;
            case "static-residential-proxies":
                setSku("isp");
                if (staticResidentialProxiesUnit) setPrice(convertToCent(getPriceTierAmount(0, staticResidentialProxiesUnit)))
                return <StaticResidentialProxiesIllustration isLoading={isLoading} />;
            case "residential-proxy":
                setSku("residential");
                if (residentialProxiesUnit) setPrice(convertToCent(getPriceTierAmount(0, residentialProxiesUnit)))
                return <ResidentialProxyIllustration isLoading={isLoading} />;
            default:
                return <img src={imageUrl} alt="" />;
        }
    }, [productSlug, isLoading, datacenterProxiesUnit, staticResidentialProxiesUnit, residentialProxiesUnit, imageUrl]);

    const isMobile = useMediaQuery("max-width: 640px ")

    useEffect(() => {
        const illustrationComponent = getIllustrationComponent();
        setIllustrationComponent(illustrationComponent);
    }, [imageUrl, productSlug, isLoading, getIllustrationComponent]);

    return (
        <>
            <Helmet
                title={title}
                meta={[
                    { name: "description", content: description },
                ]}
                script={[
                    {
                        type: "application/ld+json",
                        innerHTML: JSON.stringify({
                            "@context": "http://schema.org",
                            "@type": "Product",
                            "name": title,
                            "image": `https://ping-proxies-dev.onrender.com/uploads/${imageUrl}`,
                            "description": description,
                            "sku": sku,
                            "brand": {
                                "@type": "Brand",
                                "name": "Ping Proxies"
                            },
                            "offers": {
                                "@type": "Offer",
                                "priceCurrency": "USD",
                                "price": price,
                                "availability": "http://schema.org/InStock",
                                "url": `https://site-ping-proxies.goodface.com.ua/products/${productSlug}`
                            },
                            "aggregateRating": {
                                "@type": "AggregateRating",
                                "ratingValue": "4.8",
                                "reviewCount": "84"
                            }
                        })
                    },
                ]}
            />
            <HeroLayout image={isMobile ? <img src={imageUrl} alt="" /> : illustrationComponent} isLoading={isLoading}>
                <HeroComponent
                    title={title}
                    desc={description}
                    button_text={button_text}
                    button_two_text={button_two_text}
                    hasCrumbs={true}
                    button_text_link={button_text_link}
                    button_two_text_link={button_two_text_link}
                />
            </HeroLayout>
        </>

    );
}

export default Hero;