File tree 2 files changed +37
-2
lines changed
2 files changed +37
-2
lines changed Original file line number Diff line number Diff line change @@ -1384,7 +1384,14 @@ var _generateApiPropertiesTrackingConfig = function _generateApiPropertiesTracki
1384
1384
*/
1385
1385
AmplitudeClient . prototype . _limitEventsQueued = function _limitEventsQueued ( queue ) {
1386
1386
if ( queue . length > this . options . savedMaxCount ) {
1387
- queue . splice ( 0 , queue . length - this . options . savedMaxCount ) ;
1387
+ const deletedEvents = queue . splice ( 0 , queue . length - this . options . savedMaxCount ) ;
1388
+ deletedEvents . forEach ( ( event ) => {
1389
+ if ( type ( event . callback ) === 'function' ) {
1390
+ event . callback ( 0 , 'No request sent' , {
1391
+ reason : 'Event dropped because options.savedMaxCount exceeded. User may be offline or have a content blocker' ,
1392
+ } ) ;
1393
+ }
1394
+ } ) ;
1388
1395
}
1389
1396
} ;
1390
1397
@@ -1394,6 +1401,7 @@ AmplitudeClient.prototype._limitEventsQueued = function _limitEventsQueued(queue
1394
1401
* @callback Amplitude~eventCallback
1395
1402
* @param {number } responseCode - Server response code for the event / identify upload request.
1396
1403
* @param {string } responseBody - Server response body for the event / identify upload request.
1404
+ * @param {object } details - (optional) Additional information associated with sending event.
1397
1405
*/
1398
1406
1399
1407
/**
@@ -1684,7 +1692,7 @@ AmplitudeClient.prototype.sendEvents = function sendEvents() {
1684
1692
// here.
1685
1693
// }
1686
1694
} catch ( e ) {
1687
- // utils.log('failed upload');
1695
+ // utils.log.error ('failed upload');
1688
1696
}
1689
1697
} ) ;
1690
1698
} ;
Original file line number Diff line number Diff line change @@ -1945,6 +1945,33 @@ describe('AmplitudeClient', function () {
1945
1945
assert . equal ( message , 'success' ) ;
1946
1946
} ) ;
1947
1947
1948
+ it . only ( 'should run the callback even with a dropped unsent event' , function ( ) {
1949
+ amplitude . init ( apiKey , null , { savedMaxCount : 1 } ) ;
1950
+ var counter = 0 ;
1951
+ var value = null ;
1952
+ var message = null ;
1953
+ var reason = null ;
1954
+ var callback = function ( status , response , details ) {
1955
+ counter ++ ;
1956
+ value = status ;
1957
+ message = response ;
1958
+ reason = details . reason ;
1959
+ } ;
1960
+ amplitude . logEvent ( 'DroppedEvent' , { } , callback ) ;
1961
+ amplitude . logEvent ( 'SavedEvent' , { } , callback ) ;
1962
+ server . respondWith ( [ 0 , { } , '' ] ) ;
1963
+ server . respond ( ) ;
1964
+
1965
+ // verify callback fired
1966
+ assert . equal ( counter , 1 ) ;
1967
+ assert . equal ( value , 0 ) ;
1968
+ assert . equal ( message , 'No request sent' ) ;
1969
+ assert . equal (
1970
+ reason ,
1971
+ 'Event dropped because options.savedMaxCount exceeded. User may be offline or have a content blocker' ,
1972
+ ) ;
1973
+ } ) ;
1974
+
1948
1975
it ( 'should run callback once and only after 413 resolved' , function ( ) {
1949
1976
var counter = 0 ;
1950
1977
var value = - 1 ;
You can’t perform that action at this time.
0 commit comments