@@ -38,6 +38,7 @@ class WebViewManager extends ActivityLifecycleHandler.ActivityAvailableListener
38
38
private static final String TAG = WebViewManager .class .getCanonicalName ();
39
39
private static final int MARGIN_PX_SIZE = dpToPx (24 );
40
40
private static final int IN_APP_MESSAGE_INIT_DELAY = 200 ;
41
+ private final Object messageViewSyncLock = new Object () {};
41
42
42
43
enum Position {
43
44
TOP_BANNER ,
@@ -343,23 +344,25 @@ void stopped(@NonNull Activity activity) {
343
344
void lostFocus () {
344
345
OneSignal .getInAppMessageController ().messageWasDismissedByBackPress (message );
345
346
removeActivityListener ();
346
- messageView = null ;
347
+ setMessageView ( null ) ;
347
348
}
348
349
349
350
private void showMessageView (@ Nullable Integer newHeight ) {
350
- if (messageView == null ) {
351
- OneSignal .Log (OneSignal .LOG_LEVEL .WARN , "No messageView found to update a with a new height." );
352
- return ;
353
- }
351
+ synchronized (messageViewSyncLock ) {
352
+ if (messageView == null ) {
353
+ OneSignal .Log (OneSignal .LOG_LEVEL .WARN , "No messageView found to update a with a new height." );
354
+ return ;
355
+ }
354
356
355
- OneSignal .Log (OneSignal .LOG_LEVEL .DEBUG , "In app message, showing first one with height: " + newHeight );
356
- messageView .setWebView (webView );
357
- if (newHeight != null ) {
358
- lastPageHeight = newHeight ;
359
- messageView .updateHeight (newHeight );
357
+ OneSignal .Log (OneSignal .LOG_LEVEL .DEBUG , "In app message, showing first one with height: " + newHeight );
358
+ messageView .setWebView (webView );
359
+ if (newHeight != null ) {
360
+ lastPageHeight = newHeight ;
361
+ messageView .updateHeight (newHeight );
362
+ }
363
+ messageView .showView (activity );
364
+ messageView .checkIfShouldDismiss ();
360
365
}
361
- messageView .showView (activity );
362
- messageView .checkIfShouldDismiss ();
363
366
}
364
367
365
368
@ SuppressLint ({"SetJavaScriptEnabled" , "AddJavascriptInterface" })
@@ -405,9 +408,16 @@ private void setWebViewToMaxSize(Activity activity) {
405
408
webView .layout (0 ,0 , getWebViewMaxSizeX (activity ), getWebViewMaxSizeY (activity ));
406
409
}
407
410
411
+ private void setMessageView (InAppMessageView view ) {
412
+ synchronized (messageViewSyncLock ) {
413
+ messageView = view ;
414
+ }
415
+ }
416
+
408
417
private void createNewInAppMessageView (@ NonNull Position displayLocation , int pageHeight , boolean dragToDismissDisabled ) {
409
418
lastPageHeight = pageHeight ;
410
- messageView = new InAppMessageView (webView , displayLocation , pageHeight , message .getDisplayDuration (), dragToDismissDisabled );
419
+ InAppMessageView newView = new InAppMessageView (webView , displayLocation , pageHeight , message .getDisplayDuration (), dragToDismissDisabled );
420
+ setMessageView (newView );
411
421
messageView .setMessageController (new InAppMessageView .InAppMessageViewListener () {
412
422
@ Override
413
423
public void onMessageWasShown () {
@@ -469,7 +479,8 @@ protected void dismissAndAwaitNextMessage(@Nullable final OneSignalGenericCallba
469
479
@ Override
470
480
public void onComplete () {
471
481
dismissFired = false ;
472
- messageView = null ;
482
+ setMessageView (null );
483
+
473
484
if (callback != null )
474
485
callback .onComplete ();
475
486
}
0 commit comments