Skip to content

Commit 4759539

Browse files
emawbynan-li
authored andcommitted
Fixing dismissing lifecycle methods for IAMs with prompts
1 parent 3533c54 commit 4759539

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

OneSignalSDK/onesignal/src/main/java/com/onesignal/OSInAppMessageController.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -662,8 +662,6 @@ void messageWasDismissed(@NonNull OSInAppMessageInternal message) {
662662
}
663663

664664
void messageWasDismissed(@NonNull OSInAppMessageInternal message, boolean failed) {
665-
if (!failed)
666-
onMessageDidDismiss(message);
667665

668666
if (!message.isPreview) {
669667
dismissedMessages.add(message.messageId);
@@ -679,6 +677,9 @@ void messageWasDismissed(@NonNull OSInAppMessageInternal message, boolean failed
679677
logger.debug("OSInAppMessageController messageWasDismissed dismissedMessages: " + dismissedMessages.toString());
680678
}
681679

680+
if (!shouldWaitForPromptsBeforeDismiss())
681+
onMessageDidDismiss(message);
682+
682683
dismissCurrentMessage(message);
683684
}
684685

@@ -688,6 +689,10 @@ void messageWasDismissedByBackPress(@NonNull OSInAppMessageInternal message) {
688689
dismissCurrentMessage(message);
689690
}
690691

692+
private boolean shouldWaitForPromptsBeforeDismiss() {
693+
return currentPrompt != null;
694+
}
695+
691696
/**
692697
* Removes first item from the queue and attempts to show the next IAM in the queue
693698
*
@@ -697,7 +702,7 @@ private void dismissCurrentMessage(@Nullable OSInAppMessageInternal message) {
697702
// Remove DIRECT influence due to ClickHandler of ClickAction outcomes
698703
OneSignal.getSessionManager().onDirectInfluenceFromIAMClickFinished();
699704

700-
if (currentPrompt != null) {
705+
if (shouldWaitForPromptsBeforeDismiss()) {
701706
logger.debug("Stop evaluateMessageDisplayQueue because prompt is currently displayed");
702707
return;
703708
}

OneSignalSDK/onesignal/src/main/java/com/onesignal/WebViewManager.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ boolean isBanner() {
6767
@Nullable private String currentActivityName = null;
6868
private Integer lastPageHeight = null;
6969

70+
private boolean dismissing = false;
71+
7072
interface OneSignalGenericCallback {
7173
void onComplete();
7274
}
@@ -448,7 +450,7 @@ private void removeActivityListener() {
448450
* Trigger the {@link #messageView} dismiss animation flow
449451
*/
450452
protected void dismissAndAwaitNextMessage(@Nullable final OneSignalGenericCallback callback) {
451-
if (messageView == null) {
453+
if (messageView == null || dismissing) {
452454
if (callback != null)
453455
callback.onComplete();
454456
return;
@@ -459,10 +461,12 @@ protected void dismissAndAwaitNextMessage(@Nullable final OneSignalGenericCallba
459461
messageView.dismissAndAwaitNextMessage(new OneSignalGenericCallback() {
460462
@Override
461463
public void onComplete() {
464+
dismissing = false;
462465
messageView = null;
463466
if (callback != null)
464467
callback.onComplete();
465468
}
466469
});
470+
dismissing = true;
467471
}
468472
}

0 commit comments

Comments
 (0)