43 lines
1 KiB
JavaScript
43 lines
1 KiB
JavaScript
// js/analytics.js - Plausible Analytics custom event tracking
|
|
|
|
import { analyticsSettings } from './storage.js';
|
|
|
|
/**
|
|
* Check if analytics is enabled
|
|
* @returns {boolean}
|
|
*/
|
|
function isAnalyticsEnabled() {
|
|
return analyticsSettings.isEnabled();
|
|
}
|
|
|
|
/**
|
|
* Track a custom event with Plausible
|
|
* @param {string} eventName - The name of the event
|
|
* @param {object} [props] - Optional event properties
|
|
*/
|
|
export function trackEvent(eventName, props = {}) {
|
|
if (!isAnalyticsEnabled()) return;
|
|
if (window.plausible) {
|
|
try {
|
|
window.plausible(eventName, { props });
|
|
} catch {
|
|
// Silently fail if analytics is blocked
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Track page views with custom properties
|
|
* @param {string} path - The page path
|
|
*/
|
|
export function trackPageView(path) {
|
|
trackEvent('pageview', { path });
|
|
}
|
|
|
|
// Initialize analytics on page load
|
|
export function initAnalytics() {
|
|
if (!isAnalyticsEnabled()) return;
|
|
|
|
// Track initial page view
|
|
trackPageView(window.location.pathname);
|
|
}
|