refactor: introduce analytics adapter behind src/platform/
This commit is contained in:
@@ -1,21 +0,0 @@
|
||||
import { Analytics, type AnalyticsConfig } from '@apps-in-toss/analytics';
|
||||
|
||||
type LogParams = Record<string, string | number | boolean | null | undefined>;
|
||||
|
||||
let _logger: AnalyticsConfig['logger'] | null = null;
|
||||
|
||||
export function initAnalytics(debug = false) {
|
||||
const logger: AnalyticsConfig['logger'] = ({ log_name, log_type, params }) => {
|
||||
if (debug) {
|
||||
console.log(`[Analytics] ${log_type}:${log_name}`, params);
|
||||
}
|
||||
// 프로덕션에서는 여기서 서버로 이벤트 전송
|
||||
};
|
||||
|
||||
Analytics.init({ logger, debug });
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
export function trackGameEvent(logName: string, params: LogParams = {}) {
|
||||
_logger?.({ log_name: logName, log_type: 'game_event', params });
|
||||
}
|
||||
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