import { useEffect } from 'react'; import { useLocation } from 'react-router-dom'; declare global { interface Window { gtag?: (...args: any[]) => void; dataLayer?: any[]; fbq?: (...args: any[]) => void; _fbq?: any; } } export function Analytics() { const location = useLocation(); // Inicialização dos Scripts (Executado apenas uma vez) useEffect(() => { // 1. Google Analytics (GA4) const gaId = import.meta.env.VITE_GA_MEASUREMENT_ID; if (gaId && !document.getElementById('ga-script')) { const script1 = document.createElement('script'); script1.async = true; script1.src = `https://www.googletagmanager.com/gtag/js?id=${gaId}`; script1.id = 'ga-script'; document.head.appendChild(script1); const script2 = document.createElement('script'); script2.innerHTML = ` window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', '${gaId}'); `; document.head.appendChild(script2); } // 2. Facebook Pixel const fbPixelId = import.meta.env.VITE_FB_PIXEL_ID; if (fbPixelId && !document.getElementById('fb-pixel-script')) { const script = document.createElement('script'); script.id = 'fb-pixel-script'; script.innerHTML = ` !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '${fbPixelId}'); fbq('track', 'PageView'); `; document.head.appendChild(script); } // 3. Google AdSense const adsenseId = import.meta.env.VITE_ADSENSE_CLIENT_ID; if (adsenseId && !document.getElementById('adsense-script')) { const script = document.createElement('script'); script.id = 'adsense-script'; script.async = true; script.src = `https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=${adsenseId}`; script.crossOrigin = 'anonymous'; document.head.appendChild(script); } }, []); // Rastreamento de Mudança de Rota (Page Views) useEffect(() => { const gaId = import.meta.env.VITE_GA_MEASUREMENT_ID; if (gaId && window.gtag) { window.gtag('config', gaId, { page_path: location.pathname + location.search, }); } const fbPixelId = import.meta.env.VITE_FB_PIXEL_ID; if (fbPixelId && typeof window.fbq === 'function') { window.fbq('track', 'PageView'); } }, [location]); return null; // Este componente não renderiza nada na tela }