The analytics manager has been significantly refactored to allow the use of multiple providers simultaneously. The API has been adjusted, replacing the single active service with a new Map called activeServices, to hold the active analytics services. Additionally, several methods have been modified to return promises rather than void. The 'defaultProvider' property has been removed, as it no longer fits into the system architecture.
25 lines
811 B
TypeScript
25 lines
811 B
TypeScript
import { AnalyticsService } from './types';
|
|
|
|
const noop = (event: string) => {
|
|
// do nothing - this is to prevent errors when the analytics service is not initialized
|
|
|
|
// eslint-disable-next-line @typescript-eslint/require-await
|
|
return async (...args: unknown[]) => {
|
|
console.debug(
|
|
`Noop analytics service called with event: ${event}`,
|
|
...args.filter(Boolean),
|
|
);
|
|
};
|
|
};
|
|
|
|
/**
|
|
* Null analytics service that does nothing. It is initialized with a noop function. This is useful for testing or when
|
|
* the user is calling analytics methods before the analytics service is initialized.
|
|
*/
|
|
export const NullAnalyticsService: AnalyticsService = {
|
|
initialize: noop('initialize'),
|
|
trackPageView: noop('trackPageView'),
|
|
trackEvent: noop('trackEvent'),
|
|
identify: noop('identify'),
|
|
};
|