visionify-analytics-tracker
Version:
Track user session and page usage in apps
34 lines (33 loc) • 997 B
JavaScript
// 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');
}