Files
Rental-operations-platform/src/lib/analytics/client.ts
T
2026-06-25 20:08:39 -04:00

26 lines
831 B
TypeScript

'use client';
import { validateAnalyticsEvent, type AnalyticsContext, type AnalyticsEventName } from './events';
declare global {
interface Window {
__rdgAnalyticsTestSink?: Array<{ name: AnalyticsEventName; context: AnalyticsContext }>;
}
}
function analyticsMode(): 'disabled' | 'test' {
return process.env.NEXT_PUBLIC_ANALYTICS_MODE === 'test' ? 'test' : 'disabled';
}
function consentGranted(): boolean {
return document.documentElement.dataset.analyticsConsent === 'granted';
}
export function trackAnalytics(name: AnalyticsEventName, context: AnalyticsContext): boolean {
const event = validateAnalyticsEvent(name, context);
if (!event || analyticsMode() !== 'test' || !consentGranted()) return false;
window.__rdgAnalyticsTestSink ??= [];
window.__rdgAnalyticsTestSink.push(event);
return true;
}