@@ -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 ,
@@ -333,23 +334,25 @@ void stopped(@NonNull Activity activity) {
333
334
void lostFocus () {
334
335
OneSignal .getInAppMessageController ().messageWasDismissedByBackPress (message );
335
336
removeActivityListener ();
336
- messageView = null ;
337
+ setMessageView ( null ) ;
337
338
}
338
339
339
340
private void showMessageView (@ Nullable Integer newHeight ) {
340
- if (messageView == null ) {
341
- OneSignal .Log (OneSignal .LOG_LEVEL .WARN , "No messageView found to update a with a new height." );
342
- return ;
343
- }
341
+ synchronized (messageViewSyncLock ) {
342
+ if (messageView == null ) {
343
+ OneSignal .Log (OneSignal .LOG_LEVEL .WARN , "No messageView found to update a with a new height." );
344
+ return ;
345
+ }
344
346
345
- OneSignal .Log (OneSignal .LOG_LEVEL .DEBUG , "In app message, showing first one with height: " + newHeight );
346
- messageView .setWebView (webView );
347
- if (newHeight != null ) {
348
- lastPageHeight = newHeight ;
349
- messageView .updateHeight (newHeight );
347
+ OneSignal .Log (OneSignal .LOG_LEVEL .DEBUG , "In app message, showing first one with height: " + newHeight );
348
+ messageView .setWebView (webView );
349
+ if (newHeight != null ) {
350
+ lastPageHeight = newHeight ;
351
+ messageView .updateHeight (newHeight );
352
+ }
353
+ messageView .showView (activity );
354
+ messageView .checkIfShouldDismiss ();
350
355
}
351
- messageView .showView (activity );
352
- messageView .checkIfShouldDismiss ();
353
356
}
354
357
355
358
@ SuppressLint ({"SetJavaScriptEnabled" , "AddJavascriptInterface" })
@@ -395,9 +398,16 @@ private void setWebViewToMaxSize(Activity activity) {
395
398
webView .layout (0 ,0 , getWebViewMaxSizeX (activity ), getWebViewMaxSizeY (activity ));
396
399
}
397
400
401
+ private void setMessageView (InAppMessageView view ) {
402
+ synchronized (messageViewSyncLock ) {
403
+ messageView = view ;
404
+ }
405
+ }
406
+
398
407
private void createNewInAppMessageView (@ NonNull Position displayLocation , int pageHeight , boolean dragToDismissDisabled ) {
399
408
lastPageHeight = pageHeight ;
400
- messageView = new InAppMessageView (webView , displayLocation , pageHeight , message .getDisplayDuration (), dragToDismissDisabled );
409
+ InAppMessageView newView = new InAppMessageView (webView , displayLocation , pageHeight , message .getDisplayDuration (), dragToDismissDisabled );
410
+ setMessageView (newView );
401
411
messageView .setMessageController (new InAppMessageView .InAppMessageViewListener () {
402
412
@ Override
403
413
public void onMessageWasShown () {
@@ -451,7 +461,7 @@ protected void dismissAndAwaitNextMessage(@Nullable final OneSignalGenericCallba
451
461
messageView .dismissAndAwaitNextMessage (new OneSignalGenericCallback () {
452
462
@ Override
453
463
public void onComplete () {
454
- messageView = null ;
464
+ setMessageView ( null ) ;
455
465
if (callback != null )
456
466
callback .onComplete ();
457
467
}
0 commit comments