import { hostEmitter } from '@jolibox/common'; import { taskTracker, track } from '../report'; import { onFCP, onLCP, onTTFB } from 'web-vitals'; import { context } from '@/common/context'; import { checkSession, getUserSubStatus } from './auth'; function trackPerformance() { onFCP((metric) => { track('GameFCP', { value: metric.value, rating: metric.rating, navigationType: metric.navigationType }); }); onLCP((metric) => { track('GameLCP', { value: metric.value, rating: metric.rating, navigationType: metric.navigationType }); }); onTTFB((metric) => { track('GameTTFB', { value: metric.value, rating: metric.rating, navigationType: metric.navigationType }); }); } function addDomContentLoaded() { hostEmitter.on('onDocumentReady', async (startTime: number) => { const isLogin = await checkSession(); const { isSubUser, userId } = await getUserSubStatus().catch(() => ({ isSubUser: false, userId: undefined })); context.onEnvConfigChanged({ hostUserInfo: { isLogin, isSubUser, uid: userId } }); hostEmitter.emit('LifecycleEvent.onReady', { ...(context.hostUserInfo ? context.hostUserInfo : { isLogin: false }) }); if (context.mpType === 'game') { taskTracker.start(Date.now() - startTime); } }); } export function config(): void { addDomContentLoaded(); trackPerformance(); }