38 lines
1.0 KiB
TypeScript
38 lines
1.0 KiB
TypeScript
import Taro from '@tarojs/taro';
|
|
import { createUserTracker, getSessionId } from '@dukang/client-logging';
|
|
import { API_BASE, CLIENT_APP, getToken } from './api';
|
|
|
|
function currentPagePath(): string | undefined {
|
|
try {
|
|
const pages = Taro.getCurrentPages();
|
|
const cur = pages[pages.length - 1] as { route?: string; $taroPath?: string } | undefined;
|
|
return cur?.$taroPath || cur?.route || undefined;
|
|
} catch {
|
|
return undefined;
|
|
}
|
|
}
|
|
|
|
const tracker = createUserTracker({
|
|
apiBase: API_BASE,
|
|
clientApp: CLIENT_APP,
|
|
getToken,
|
|
getPagePath: currentPagePath,
|
|
postJson: ({ url, headers, body }) => {
|
|
void Taro.request({ url, method: 'POST', header: headers, data: body }).catch(() => {});
|
|
},
|
|
});
|
|
|
|
export { getSessionId };
|
|
|
|
export function track(eventName: string, params?: Record<string, unknown>) {
|
|
tracker.track(eventName, params);
|
|
}
|
|
|
|
export function trackPageView(eventName: string, params?: Record<string, unknown>) {
|
|
tracker.trackPageView(eventName, params);
|
|
}
|
|
|
|
export function initUserAnalytics() {
|
|
tracker.trackSessionStart();
|
|
}
|