36 lines
1021 B
JavaScript
36 lines
1021 B
JavaScript
import { base44 } from '@/api/base44Client';
|
|
|
|
let _cachedUser = null;
|
|
let _userFetched = false;
|
|
|
|
async function getCurrentUser() {
|
|
if (_userFetched) return _cachedUser;
|
|
try {
|
|
_cachedUser = await base44.auth.me();
|
|
} catch {
|
|
_cachedUser = null;
|
|
}
|
|
_userFetched = true;
|
|
return _cachedUser;
|
|
}
|
|
|
|
/** Best-effort activity logging — never throws, never blocks the main flow. */
|
|
export async function logActivity(eventType, extra = {}) {
|
|
try {
|
|
const me = await getCurrentUser();
|
|
const record = {
|
|
event_type: eventType,
|
|
user_email: me?.email || extra.email || 'anonymous',
|
|
user_name: me?.full_name || extra.name || '',
|
|
account_type: extra.account_type || me?.account_type || 'unknown',
|
|
details: extra.details || '',
|
|
};
|
|
await base44.entities.UserActivity.create(record);
|
|
base44.analytics.track({
|
|
eventName: eventType,
|
|
properties: { account_type: record.account_type },
|
|
});
|
|
} catch {
|
|
// silent — tracking must not break user flows
|
|
}
|
|
} |