@@ -39,7 +39,7 @@ class Events {
3939 public Events (Project project ) {
4040 this .project = project ;
4141
42- simpleDateFormat = new SimpleDateFormat ("yyyy-MM-dd'T'HH:mm:ss'Z'" );
42+ simpleDateFormat = new SimpleDateFormat ("yyyy-MM-dd'T'HH:mm:ss.SSS 'Z'" );
4343 simpleDateFormat .setTimeZone (TimeZone .getTimeZone ("UTC" ));
4444
4545 project .getShoppingCart ().addListener (new ShoppingCart .SimpleShoppingCartListener () {
@@ -48,10 +48,10 @@ public void onChanged(ShoppingCart list) {
4848 if (cartId != null && !list .getId ().equals (cartId )) {
4949 PayloadSessionEnd payloadSessionEnd = new PayloadSessionEnd ();
5050 payloadSessionEnd .session = cartId ;
51- post (payloadSessionEnd );
51+ post (payloadSessionEnd , false );
5252 }
5353
54- post (getPayloadCart ());
54+ post (getPayloadCart (), true );
5555 }
5656 });
5757
@@ -79,12 +79,12 @@ public void updateShop(Shop newShop) {
7979
8080 PayloadSessionStart payloadSessionStart = new PayloadSessionStart ();
8181 payloadSessionStart .session = cartId ;
82- post (payloadSessionStart );
83- post (getPayloadCart ());
82+ post (payloadSessionStart , false );
83+ post (getPayloadCart (), true );
8484 } else {
8585 PayloadSessionEnd payloadSessionEnd = new PayloadSessionEnd ();
8686 payloadSessionEnd .session = cartId ;
87- post (payloadSessionEnd );
87+ post (payloadSessionEnd , false );
8888
8989 shop = null ;
9090 }
@@ -95,10 +95,10 @@ public void logError(String format, Object... args) {
9595 error .message = String .format (format , args );
9696 error .session = cartId ;
9797
98- post (error );
98+ post (error , false );
9999 }
100100
101- private <T extends Payload > void post (final T payload ) {
101+ private <T extends Payload > void post (final T payload , boolean debounce ) {
102102 if (!isResumed ) {
103103 Logger .d ("Could not send event, app is not active: " + payload .getEventType ());
104104 return ;
@@ -130,37 +130,44 @@ private <T extends Payload> void post(final T payload) {
130130 .post (requestBody )
131131 .build ();
132132
133- handler .removeCallbacksAndMessages (event .type );
134- handler .postAtTime (new Runnable () {
135- @ Override
136- public void run () {
137- OkHttpClient okHttpClient = project .getOkHttpClient ();
138- okHttpClient .newCall (request ).enqueue (new Callback () {
139- @ Override
140- public void onResponse (Call call , Response response ) {
141- if (response .isSuccessful ()) {
142- Logger .d ("Successfully posted event: " + payload .getEventType ());
143- } else {
144- Logger .e ("Failed to post event: " + payload .getEventType () + ", code " + response .code ());
145- }
146-
147- response .close ();
148- }
149-
150- @ Override
151- public void onFailure (Call call , IOException e ) {
152- Logger .e ("Could not post event: " + e .toString ());
153- }
154- });
155-
156- }
157- }, event .type , SystemClock .uptimeMillis () + 2000 );
133+ if (debounce ) {
134+ handler .removeCallbacksAndMessages (event .type );
135+ handler .postAtTime (new Runnable () {
136+ @ Override
137+ public void run () {
138+ send (request , payload );
139+ }
140+ }, event .type , SystemClock .uptimeMillis () + 2000 );
141+ } else {
142+ send (request , payload );
143+ }
158144
159145 if (event .type == EventType .SESSION_START ) {
160146 hasSentSessionStart = true ;
161147 }
162148 }
163149
150+ private <T extends Payload > void send (Request request , final T payload ) {
151+ OkHttpClient okHttpClient = project .getOkHttpClient ();
152+ okHttpClient .newCall (request ).enqueue (new Callback () {
153+ @ Override
154+ public void onResponse (Call call , Response response ) {
155+ if (response .isSuccessful ()) {
156+ Logger .d ("Successfully posted event: " + payload .getEventType ());
157+ } else {
158+ Logger .e ("Failed to post event: " + payload .getEventType () + ", code " + response .code ());
159+ }
160+
161+ response .close ();
162+ }
163+
164+ @ Override
165+ public void onFailure (Call call , IOException e ) {
166+ Logger .e ("Could not post event: " + e .toString ());
167+ }
168+ });
169+ }
170+
164171 private PayloadCart getPayloadCart () {
165172 ShoppingCart shoppingCart = project .getShoppingCart ();
166173
0 commit comments