From d2567ac47834241de31c5261952e13289ad787d4 Mon Sep 17 00:00:00 2001 From: Lucas Santana Date: Sat, 11 Jan 2025 15:18:03 -0300 Subject: [PATCH] Ajustando Rudderstack --- netlify.toml | 6 +- .../analytics/RudderstackAnalytics.tsx | 76 ++++++++++++------- 2 files changed, 51 insertions(+), 31 deletions(-) diff --git a/netlify.toml b/netlify.toml index fb1f565..06882c1 100644 --- a/netlify.toml +++ b/netlify.toml @@ -26,15 +26,15 @@ Cross-Origin-Resource-Policy = "cross-origin" Content-Security-Policy = """ default-src 'self'; - script-src 'self' 'unsafe-inline' 'unsafe-eval' https://cdn.rudderlabs.com https://www.googletagmanager.com https://*.sentry.io; - connect-src 'self' https://*.rudderlabs.com https://*.ingest.sentry.io https://*.supabase.co https://www.google-analytics.com; + script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.rudderlabs.com https://*.cloudfront.net https://www.googletagmanager.com https://*.sentry.io; + connect-src 'self' https://*.rudderlabs.com https://*.ingest.sentry.io https://*.supabase.co https://www.google-analytics.com https://*.dataplane.rudderstack.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: https: blob:; font-src 'self' data: https://fonts.gstatic.com; frame-src 'self' https://www.googletagmanager.com; worker-src 'self' blob:; """ - Access-Control-Allow-Origin = "https://historiasmagicas.netlify.app" + Access-Control-Allow-Origin = "*" Access-Control-Allow-Methods = "GET, POST, PUT, DELETE, OPTIONS" Access-Control-Allow-Headers = """ Authorization, diff --git a/src/components/analytics/RudderstackAnalytics.tsx b/src/components/analytics/RudderstackAnalytics.tsx index 8f86815..a196178 100644 --- a/src/components/analytics/RudderstackAnalytics.tsx +++ b/src/components/analytics/RudderstackAnalytics.tsx @@ -17,45 +17,65 @@ export function RudderstackAnalytics({ writeKey, dataPlaneUrl }: RudderstackAnal return; } - const loadRudderstack = () => { - const script = document.createElement('script'); - script.src = 'https://cdn.rudderlabs.com/v1.1/rudder-analytics.min.js'; - script.async = true; - script.crossOrigin = 'anonymous'; - script.referrerPolicy = 'no-referrer-when-downgrade'; - - script.onload = () => { - window.rudderanalytics = window.rudderanalytics || []; + // Inicializa o objeto rudderanalytics + window.rudderanalytics = window.rudderanalytics || []; + + // Define os métodos básicos + const methods = ['load', 'page', 'track', 'identify', 'alias', 'group', 'ready', 'reset']; + methods.forEach((method) => { + window.rudderanalytics[method] = function() { + window.rudderanalytics.push([method].concat(Array.prototype.slice.call(arguments))); + }; + }); + + // Carrega o script do Rudderstack + const loadScript = () => { + return new Promise((resolve, reject) => { + const script = document.createElement('script'); + script.src = 'https://cdn.rudderlabs.com/v1.1/rudder-analytics.min.js'; + script.async = true; + script.crossOrigin = 'anonymous'; - // Configuração inicial - window.rudderanalytics.load(writeKey, dataPlaneUrl, { - configUrl: 'https://api.rudderlabs.com', - logLevel: 'DEBUG', - secureCookie: true, - crossDomainCookie: true, - sameSiteCookie: 'Lax', - loadIntegration: true, - lockIntegrationsVersion: false - }); + script.onload = () => { + window.rudderanalytics.load(writeKey, dataPlaneUrl, { + configUrl: 'https://api.rudderlabs.com', + destSDKBaseURL: 'https://cdn.rudderlabs.com/v1.1', + logLevel: 'ERROR', + secureCookie: true, + integrations: { All: true }, + loadIntegration: true, + sendAdblockPage: true, + sendAdblockPageOptions: { + integrations: { All: true } + } + }); + resolve(); + }; - // Registra a visualização da página - window.rudderanalytics.page(); - }; + script.onerror = (error) => { + console.error('Erro ao carregar Rudderstack:', error); + reject(error); + }; - script.onerror = (error) => { - console.error('Erro ao carregar Rudderstack:', error); - }; - - document.head.appendChild(script); + document.head.appendChild(script); + }); }; - loadRudderstack(); + // Carrega o script e inicializa + loadScript() + .then(() => { + window.rudderanalytics.page(); + }) + .catch((error) => { + console.error('Falha ao inicializar Rudderstack:', error); + }); return () => { const script = document.querySelector('script[src*="rudder-analytics.min.js"]'); if (script && script.parentNode) { script.parentNode.removeChild(script); } + delete window.rudderanalytics; }; }, [writeKey, dataPlaneUrl]);