Skip to content

Commit b7e6597

Browse files
committed
analytics | beacon only on doc-hide
1 parent 9c1f38d commit b7e6597

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

src/modules/analytics.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,9 @@ export const createAnalyticsModule = ({
8484
};
8585

8686
// currently disabled, until fully tested //
87-
const beaconRequest = async (events: AnalyticsApiRequestData[]) => {
88-
const beaconPayload = JSON.stringify({ events });
87+
const beaconRequest = (events: AnalyticsApiRequestData[]) => {
8988
try {
89+
const beaconPayload = JSON.stringify({ events });
9090
const blob = new Blob([beaconPayload], { type: "application/json" });
9191
return (
9292
typeof navigator === "undefined" ||
@@ -98,13 +98,21 @@ export const createAnalyticsModule = ({
9898
}
9999
};
100100

101-
const flush = async (eventsData: TrackEventData[]) => {
101+
const flush = async (
102+
eventsData: TrackEventData[],
103+
options: { isBeacon?: boolean } = {}
104+
) => {
105+
if (eventsData.length === 0) return;
106+
102107
const sessionContext_ = await getSessionContext(userAuthModule);
103108
const events = eventsData.map(
104109
transformEventDataToApiRequestData(sessionContext_)
105110
);
111+
106112
try {
107-
return batchRequestFallback(events);
113+
if (!options.isBeacon || !beaconRequest(events)) {
114+
await batchRequestFallback(events);
115+
}
108116
} catch {
109117
// do nothing
110118
}
@@ -139,10 +147,10 @@ export const createAnalyticsModule = ({
139147

140148
const onDocHidden = () => {
141149
stopAnalyticsProcessor();
150+
clearHeartBeatProcessor?.();
142151
// flush entire queue on visibility change and hope for the best //
143152
const eventsData = analyticsSharedState.requestsQueue.splice(0);
144-
flush(eventsData);
145-
clearHeartBeatProcessor?.();
153+
flush(eventsData, { isBeacon: true });
146154
};
147155

148156
const onVisibilityChange = () => {

0 commit comments

Comments
 (0)