refactor: introduce analytics adapter behind src/platform/
This commit is contained in:
12
src/platform/analytics/consoleAdapter.ts
Normal file
12
src/platform/analytics/consoleAdapter.ts
Normal file
@@ -0,0 +1,12 @@
|
||||
import type { AnalyticsAdapter, AnalyticsParams } from './types';
|
||||
|
||||
export function createConsoleAdapter(debug: boolean): AnalyticsAdapter {
|
||||
return {
|
||||
init() {
|
||||
if (debug) console.log('[Analytics] console adapter initialized');
|
||||
},
|
||||
track(eventName: string, params: AnalyticsParams = {}) {
|
||||
if (debug) console.log('[Analytics]', eventName, params);
|
||||
},
|
||||
};
|
||||
}
|
||||
16
src/platform/analytics/index.ts
Normal file
16
src/platform/analytics/index.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import { createConsoleAdapter } from './consoleAdapter';
|
||||
import type { AnalyticsAdapter, AnalyticsParams } from './types';
|
||||
import { env } from '../../config/env';
|
||||
|
||||
let _adapter: AnalyticsAdapter | null = null;
|
||||
|
||||
export function initAnalytics(debug = env.isDev): void {
|
||||
_adapter = createConsoleAdapter(debug);
|
||||
_adapter.init();
|
||||
}
|
||||
|
||||
export function trackGameEvent(eventName: string, params: AnalyticsParams = {}): void {
|
||||
_adapter?.track(eventName, params);
|
||||
}
|
||||
|
||||
export type { AnalyticsAdapter, AnalyticsParams };
|
||||
6
src/platform/analytics/types.ts
Normal file
6
src/platform/analytics/types.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
export type AnalyticsParams = Record<string, string | number | boolean | null | undefined>;
|
||||
|
||||
export interface AnalyticsAdapter {
|
||||
init(): void;
|
||||
track(eventName: string, params?: AnalyticsParams): void;
|
||||
}
|
||||
Reference in New Issue
Block a user