UNPKG

visionify-analytics-tracker

Version:

Track user session and page usage in apps

53 lines (52 loc) 1.79 kB
// Shared function to send data with fallback logic async function sendData(endpoint, payload, errorMessage, devMode) { try { const response = await fetch(endpoint, { method: 'POST', body: payload, headers: { 'Content-Type': 'application/json', }, keepalive: true, }); if (!response.ok) { const errorText = await response.text(); console.warn(`visionify-analytics-tracker: ${errorMessage}`, { status: response.status, statusText: response.statusText, error: errorText }); } else if (devMode) { console.log(`visionify-analytics-tracker: Successfully sent ${JSON.parse(payload).length} events`); } } catch (err) { console.warn(`visionify-analytics-tracker: ${errorMessage}`, err); } } export async function sendEventBatch(events, endpoint, devMode) { if (devMode) { console.log('[visionify-analytics-tracker] sendEventBatch called with:', { eventsLength: events.length, endpoint, devMode, hasEndpoint: !!endpoint, shouldSend: !(!endpoint || devMode) }); } if (!endpoint || devMode) { if (devMode) { console.log('[visionify-analytics-tracker][devMode][pageviews]', events); } return; } if (!Array.isArray(events) || events.length === 0) { if (devMode) { console.warn('[visionify-analytics-tracker] Attempted to send empty or invalid events array'); } return; } const payload = JSON.stringify(events); await sendData(endpoint, payload, 'failed to send batch', devMode); }