UNPKG

kitchen-simulator

Version:

It is a kitchen simulator (self-contained micro-frontend).

60 lines (55 loc) 1.78 kB
import posthog from 'posthog-js'; // ---- session context ---- export function bootSessionContext() { var url = new URL(window.location.href); var client_name = sessionStorage.getItem('visualizerName'); var project_entry = sessionStorage.getItem('projectId') ? 'open_existing' : 'new'; var cross_auth = url.searchParams.has('token') || url.searchParams.has('details'); // Persist context on the client/session posthog.register({ client_name: client_name, project_entry: project_entry, cross_auth: cross_auth }); // First-hit event for qualitative flow posthog.capture('session_started', { client_name: client_name, project_entry: project_entry, cross_auth: cross_auth }); } // Optional: expose session id for replay linkage export function getSessionId() { try { return posthog.get_session_id(); } catch (_unused) { return null; } } // ---- event wrappers (mirror GA4 conversions) ---- export var PH = { projectSaved: function projectSaved(project_id) { posthog.capture('project_saved', { project_id: project_id, client_name: sessionStorage.getItem('visualizerName'), session_id: getSessionId() }); }, assistanceRequested: function assistanceRequested(method, project_id) { posthog.capture('assistance_requested', { method: method, project_id: project_id, client_name: sessionStorage.getItem('visualizerName'), session_id: getSessionId() }); }, addToCart: function addToCart(project_id, sku_count, price_total) { posthog.capture('add_to_cart', { project_id: project_id, sku_count: sku_count, price_total: price_total, client_name: sessionStorage.getItem('visualizerName'), session_id: getSessionId() }); } };