Skip to content

Commit 2aae15d

Browse files
committed
Add IAM closing boolean to prevent re-displaying a closing IAM
* This boolean was added due to a customer-reported issue where an IAM was redisplaying for a brief moment after an activity changed. The customer's clickHandler on the IAM started a new activity while also closing the IAM. Don't redisplay the IAM if the IAM is 'closing'.
1 parent abf4fbb commit 2aae15d

File tree

1 file changed

+17
-10
lines changed

1 file changed

+17
-10
lines changed

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

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,10 @@ boolean isBanner() {
6767
@Nullable private String currentActivityName = null;
6868
private Integer lastPageHeight = null;
6969

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;
7174

7275
interface OneSignalGenericCallback {
7376
void onComplete();
@@ -229,14 +232,16 @@ private boolean getDragToDismissDisabled(JSONObject jsonObject) {
229232
private void handleActionTaken(JSONObject jsonObject) throws JSONException {
230233
JSONObject body = jsonObject.getJSONObject("body");
231234
String id = body.optString("id", null);
235+
236+
closing = body.getBoolean("close");
237+
232238
if (message.isPreview) {
233239
OneSignal.getInAppMessageController().onMessageActionOccurredOnPreview(message, body);
234240
} else if (id != null) {
235241
OneSignal.getInAppMessageController().onMessageActionOccurredOnMessage(message, body);
236242
}
237243

238-
boolean close = body.getBoolean("close");
239-
if (close) {
244+
if (closing) {
240245
dismissAndAwaitNextMessage(null);
241246
}
242247
}
@@ -313,10 +318,12 @@ void available(final @NonNull Activity activity) {
313318
if (lastActivityName == null)
314319
showMessageView(null);
315320
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+
}
320327
} else {
321328
// Activity rotated
322329
calculateHeightAndShowWebViewAfterNewActivity();
@@ -450,7 +457,7 @@ private void removeActivityListener() {
450457
* Trigger the {@link #messageView} dismiss animation flow
451458
*/
452459
protected void dismissAndAwaitNextMessage(@Nullable final OneSignalGenericCallback callback) {
453-
if (messageView == null || dismissing) {
460+
if (messageView == null || dismissFired) {
454461
if (callback != null)
455462
callback.onComplete();
456463
return;
@@ -461,12 +468,12 @@ protected void dismissAndAwaitNextMessage(@Nullable final OneSignalGenericCallba
461468
messageView.dismissAndAwaitNextMessage(new OneSignalGenericCallback() {
462469
@Override
463470
public void onComplete() {
464-
dismissing = false;
471+
dismissFired = false;
465472
messageView = null;
466473
if (callback != null)
467474
callback.onComplete();
468475
}
469476
});
470-
dismissing = true;
477+
dismissFired = true;
471478
}
472479
}

0 commit comments

Comments
 (0)