This commit is contained in:
@@ -1,11 +1,67 @@
|
||||
import type { AnalyticsEventProperties, AnalyticsService } from './analytics-service';
|
||||
|
||||
/**
|
||||
* No-op Analytics Service Implementation.
|
||||
*
|
||||
* This service implements the AnalyticsService interface but does nothing.
|
||||
* It's used as a fallback when analytics are disabled or not configured.
|
||||
*
|
||||
* @example
|
||||
* ```typescript
|
||||
* // Service creation (usually done by create-services.ts)
|
||||
* const service = new NoopAnalyticsService();
|
||||
*
|
||||
* // These calls do nothing but are safe to execute
|
||||
* service.track('button_click', { button_id: 'cta' });
|
||||
* service.trackPageview('/products/123');
|
||||
* ```
|
||||
*
|
||||
* @example
|
||||
* ```typescript
|
||||
* // Automatic fallback in create-services.ts
|
||||
* const umamiEnabled = Boolean(process.env.NEXT_PUBLIC_UMAMI_WEBSITE_ID);
|
||||
* const analytics = umamiEnabled
|
||||
* ? new UmamiAnalyticsService({ enabled: true })
|
||||
* : new NoopAnalyticsService(); // Fallback when no website ID
|
||||
* ```
|
||||
*/
|
||||
export class NoopAnalyticsService implements AnalyticsService {
|
||||
/**
|
||||
* No-op implementation of track.
|
||||
*
|
||||
* This method does nothing but maintains the same signature as other
|
||||
* analytics services for consistency.
|
||||
*
|
||||
* @param _eventName - Event name (ignored)
|
||||
* @param _props - Event properties (ignored)
|
||||
*
|
||||
* @example
|
||||
* ```typescript
|
||||
* // Safe to call even when analytics are disabled
|
||||
* service.track('button_click', { button_id: 'cta' });
|
||||
* // No error, no action taken
|
||||
* ```
|
||||
*/
|
||||
track(_eventName: string, _props?: AnalyticsEventProperties) {
|
||||
// intentionally noop
|
||||
// intentionally noop - analytics are disabled
|
||||
}
|
||||
|
||||
/**
|
||||
* No-op implementation of trackPageview.
|
||||
*
|
||||
* This method does nothing but maintains the same signature as other
|
||||
* analytics services for consistency.
|
||||
*
|
||||
* @param _url - URL to track (ignored)
|
||||
*
|
||||
* @example
|
||||
* ```typescript
|
||||
* // Safe to call even when analytics are disabled
|
||||
* service.trackPageview('/products/123');
|
||||
* // No error, no action taken
|
||||
* ```
|
||||
*/
|
||||
trackPageview(_url?: string) {
|
||||
// intentionally noop
|
||||
// intentionally noop - analytics are disabled
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user