@@ -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