UNPKG

visionify-analytics-tracker

Version:

Track user session and page usage in apps

34 lines (33 loc) 997 B
// Shared function to send data with fallback logic async function sendData(endpoint, payload, errorMessage) { let sent = false; if (navigator.sendBeacon) { try { sent = navigator.sendBeacon(endpoint, payload); } catch (err) { sent = false; } } if (!sent) { try { await fetch(endpoint, { method: 'POST', body: payload, headers: { 'Content-Type': 'application/json' }, keepalive: true, }); } catch (err) { console.warn(`visionify-analytics-tracker: ${errorMessage}`, err); } } } export async function sendEventBatch(events, endpoint, devMode) { if (!endpoint || devMode) { console.log('[visionify-analytics-tracker][devMode][pageviews]', events); return; } const payload = JSON.stringify(events); await sendData(endpoint, payload, 'failed to send batch'); }