diff --git a/src/utils/analytics.ts b/src/utils/analytics.ts index 6fa8535..4f268d8 100644 --- a/src/utils/analytics.ts +++ b/src/utils/analytics.ts @@ -1,9 +1,16 @@ +/** + * Analytics Service + * Zentrale Verwaltung von Google Analytics, Facebook Pixel und Cookie-basiertem Tracking + */ + import ReactGA from 'react-ga4'; const TRACKING_ID = 'G-N0PZBL7X18'; const FB_PIXEL_ID = 'XXXXXXXXXXXXXXXXX'; // Ersetze mit deiner Facebook Pixel ID -// Prüft, ob eine bestimmte Cookie-Kategorie aktiviert ist +/** + * Prüft, ob eine bestimmte Cookie-Kategorie aktiviert ist + */ export const isCookieCategoryEnabled = (category: string): boolean => { try { const cookieSettings = localStorage.getItem('cookieSettings'); @@ -17,7 +24,9 @@ export const isCookieCategoryEnabled = (category: string): boolean => { } }; -// Entfernt alle Google Analytics Cookies +/** + * Entfernt alle Google Analytics Cookies + */ const removeGACookies = (): void => { const cookies = document.cookie.split(';'); for (let i = 0; i < cookies.length; i++) { @@ -33,7 +42,9 @@ const removeGACookies = (): void => { } }; -// Google Analytics Initialisierung - mit strikter Zustimmungsprüfung +/** + * Initialisiert Google Analytics mit strikter Zustimmungsprüfung + */ export const initGA = (): void => { if (!isCookieCategoryEnabled('analytics')) { // Entferne bestehende GA-Cookies, falls keine Zustimmung @@ -49,6 +60,9 @@ export const initGA = (): void => { }); }; +/** + * Loggt einen Seitenaufruf in Google Analytics + */ export const logPageView = (): void => { if (!isCookieCategoryEnabled('analytics')) { return; @@ -61,6 +75,9 @@ export const logPageView = (): void => { }); }; +/** + * Trackt ein benutzerdefiniertes Event + */ export const trackEvent = (category: string, action: string, label?: string): void => { if (!isCookieCategoryEnabled('analytics')) { return; @@ -73,6 +90,9 @@ export const trackEvent = (category: string, action: string, label?: string): vo }); }; +/** + * Trackt eine Conversion + */ export const trackConversion = (value?: number): void => { if (!isCookieCategoryEnabled('analytics')) { return; @@ -85,6 +105,9 @@ export const trackConversion = (value?: number): void => { }); }; +/** + * Trackt Performance-Timing + */ export const trackTiming = (category: string, variable: string, value: number): void => { if (!isCookieCategoryEnabled('analytics')) { return; @@ -98,7 +121,9 @@ export const trackTiming = (category: string, variable: string, value: number): }); }; -// Facebook Pixel Initialisierung - nur mit Zustimmung +/** + * Initialisiert Facebook Pixel nur mit Zustimmung + */ export const initFBPixel = (): void => { if (!isCookieCategoryEnabled('marketing')) { return; @@ -122,7 +147,9 @@ export const initFBPixel = (): void => { } }; -// Facebook Event tracking +/** + * Trackt Facebook Pixel Events + */ export const trackFBEvent = (event: string, params?: Record): void => { if (!isCookieCategoryEnabled('marketing') || typeof window === 'undefined' || !window.fbq) { return; @@ -131,7 +158,9 @@ export const trackFBEvent = (event: string, params?: Record): v window.fbq('track', event, params); }; -// Google Fonts Handling - nur mit funktionaler Cookie-Zustimmung +/** + * Initialisiert Google Fonts nur mit funktionaler Cookie-Zustimmung + */ export const initGoogleFonts = (): void => { if (!isCookieCategoryEnabled('functional')) { // Entferne bestehende Google Fonts @@ -151,7 +180,9 @@ export const initGoogleFonts = (): void => { // Code hier zur lokalen Einbindung der Schriftarten }; -// Funktionale Cookies initialisieren +/** + * Initialisiert funktionale Cookies und Services + */ export const initFunctionalCookies = (): void => { if (!isCookieCategoryEnabled('functional')) { return;