auto-claude: subtask-2-3 - Add JSDoc to analytics.ts

This commit is contained in:
2026-01-25 06:39:22 +01:00
parent 9860aa0dd2
commit a033c0d9e6
+38 -7
View File
@@ -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<string, unknown>): void => {
if (!isCookieCategoryEnabled('marketing') || typeof window === 'undefined' || !window.fbq) {
return;
@@ -131,7 +158,9 @@ export const trackFBEvent = (event: string, params?: Record<string, unknown>): 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;