@expofp/floorplan
Version:
Interactive floor plan library for expos and events
2 lines (1 loc) • 1.85 kB
JavaScript
import{createKiosk as f}from"../components/Kiosk/kioskApi";import{getSavedKiosk as u}from"../components/Kiosk/SetKiosk";import{KIOSK_STATS_ID_STORAGE_KEY as c}from"../components/Kiosk/SetKiosk/constants";import l from"../data";import{getLocationHistory as p}from"../services/url-sync";import{uiState as d}from"../store";import a from"./logger";import{createTelemetry as g}from"./telemetry";let i;function S(){if(i)return i;const r=window.__efpEvent;let e;try{const t=new URL(l.trackerUrl).searchParams.get("expoId");e=t?Number(t):void 0}catch(t){a.error(t)}return i=g({url:"https://app.expofp.com/api/telemetry",expo:r,expoId:e}),i}function s(r,e){const t=p(),n=t[t.length-2];return{type:r,value:e!==void 0?String(e):"",timestamp:new Date().toISOString(),url:window.location.href,referrer:n?window.location.origin+n:""}}function v(){return!!l?.trackerUrl&&process.env.NODE_ENV==="production"&&!d.heatmap}export default async function k(r,e){if(a.log("trackEvent",r,e),!!v())try{const t=S(),n=u();if(n){const o=await I(n);if(o)t.setKioskId(o);else{t.enqueue(s(r,e));return}}else localStorage.removeItem(c),t.setKioskId("");y(t),await t.send(s(r,e))}catch(t){a.error("trackEvent",String(t))}}async function I(r){if(!r)return null;let e=localStorage.getItem(c);return e||(e=await f(r,"https://app.expofp.com/"),e?(localStorage.setItem(c,e),e):null)}let m=!1;function y(r){if(m)return;m=!0;const e="efp-track-events";try{const t=localStorage.getItem(e);if(!t)return;const n=JSON.parse(t);if(!Array.isArray(n)){localStorage.removeItem(e);return}for(const o of n)!o||typeof o!="object"||!o.headers||r.enqueue({type:o.type,value:o.value!==void 0?String(o.value):"",timestamp:o.timeStamp,url:o.headers["X-href"],referrer:o.headers["X-ref"]??""});localStorage.removeItem(e)}catch(t){localStorage.removeItem(e),a.error("Failed to migrate old events.",String(t))}}