✨ feat(utils): add analytics util
This commit is contained in:
@@ -0,0 +1,44 @@
|
|||||||
|
import Analytics from 'analytics'
|
||||||
|
import googleAnalytics from '@analytics/google-analytics'
|
||||||
|
|
||||||
|
// Get measurement ID from environment variables
|
||||||
|
const GA_MEASUREMENT_ID = import.meta.env.VITE_GA_MEASUREMENT_ID || ''
|
||||||
|
export const COOKIE_CONSENT_KEY = 'm-tartari-cookie-consent'
|
||||||
|
export const ANALYTICS_PLUGINS = ['google-analytics']
|
||||||
|
|
||||||
|
// Log warning if measurement ID is not set
|
||||||
|
if (!GA_MEASUREMENT_ID) {
|
||||||
|
console.warn('Google Analytics Measurement ID is not set. Analytics will not track events.')
|
||||||
|
}
|
||||||
|
|
||||||
|
const analyticsInstance = Analytics({
|
||||||
|
app: 'm-tartari-portfolio',
|
||||||
|
plugins: [
|
||||||
|
googleAnalytics({
|
||||||
|
measurementIds: [GA_MEASUREMENT_ID],
|
||||||
|
// Start disabled for GDPR compliance
|
||||||
|
enabled: false,
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
})
|
||||||
|
|
||||||
|
// Initialize analytics
|
||||||
|
analyticsInstance.ready(() => {
|
||||||
|
if (process.env.NODE_ENV !== 'test') console.info('Analytics system initialized')
|
||||||
|
})
|
||||||
|
|
||||||
|
// Track page views
|
||||||
|
export const trackPageView = (path: string) => {
|
||||||
|
analyticsInstance.page({
|
||||||
|
path,
|
||||||
|
title: document.title,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Track custom events
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
export const trackEvent = (event: string, payload: Record<string, any> = {}) => {
|
||||||
|
analyticsInstance.track(event, payload)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default analyticsInstance
|
||||||
Reference in New Issue
Block a user