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