@@ -67,7 +67,10 @@ boolean isBanner() {
67
67
@ Nullable private String currentActivityName = null ;
68
68
private Integer lastPageHeight = null ;
69
69
70
- private boolean dismissing = false ;
70
+ // dismissFired prevents onDidDismiss from getting called multiple times
71
+ private boolean dismissFired = false ;
72
+ // closing prevents IAM being redisplayed when the activity changes during an actionHandler
73
+ private boolean closing = false ;
71
74
72
75
interface OneSignalGenericCallback {
73
76
void onComplete ();
@@ -229,14 +232,16 @@ private boolean getDragToDismissDisabled(JSONObject jsonObject) {
229
232
private void handleActionTaken (JSONObject jsonObject ) throws JSONException {
230
233
JSONObject body = jsonObject .getJSONObject ("body" );
231
234
String id = body .optString ("id" , null );
235
+
236
+ closing = body .getBoolean ("close" );
237
+
232
238
if (message .isPreview ) {
233
239
OneSignal .getInAppMessageController ().onMessageActionOccurredOnPreview (message , body );
234
240
} else if (id != null ) {
235
241
OneSignal .getInAppMessageController ().onMessageActionOccurredOnMessage (message , body );
236
242
}
237
243
238
- boolean close = body .getBoolean ("close" );
239
- if (close ) {
244
+ if (closing ) {
240
245
dismissAndAwaitNextMessage (null );
241
246
}
242
247
}
@@ -313,10 +318,12 @@ void available(final @NonNull Activity activity) {
313
318
if (lastActivityName == null )
314
319
showMessageView (null );
315
320
else if (!lastActivityName .equals (currentActivityName )) {
316
- // Navigate to new activity while displaying current IAM
317
- if (messageView != null )
318
- messageView .removeAllViews ();
319
- showMessageView (lastPageHeight );
321
+ if (!closing ) {
322
+ // Navigate to new activity while displaying current IAM
323
+ if (messageView != null )
324
+ messageView .removeAllViews ();
325
+ showMessageView (lastPageHeight );
326
+ }
320
327
} else {
321
328
// Activity rotated
322
329
calculateHeightAndShowWebViewAfterNewActivity ();
@@ -450,7 +457,7 @@ private void removeActivityListener() {
450
457
* Trigger the {@link #messageView} dismiss animation flow
451
458
*/
452
459
protected void dismissAndAwaitNextMessage (@ Nullable final OneSignalGenericCallback callback ) {
453
- if (messageView == null || dismissing ) {
460
+ if (messageView == null || dismissFired ) {
454
461
if (callback != null )
455
462
callback .onComplete ();
456
463
return ;
@@ -461,12 +468,12 @@ protected void dismissAndAwaitNextMessage(@Nullable final OneSignalGenericCallba
461
468
messageView .dismissAndAwaitNextMessage (new OneSignalGenericCallback () {
462
469
@ Override
463
470
public void onComplete () {
464
- dismissing = false ;
471
+ dismissFired = false ;
465
472
messageView = null ;
466
473
if (callback != null )
467
474
callback .onComplete ();
468
475
}
469
476
});
470
- dismissing = true ;
477
+ dismissFired = true ;
471
478
}
472
479
}
0 commit comments