Skip to content

Commit 989224b

Browse files
committed
Fixing tag substitution for IAM previews
We will always get tags for the preview since we don't have a real InAppMessage object to check for hasLiquid.
1 parent 1db43af commit 989224b

File tree

1 file changed

+24
-13
lines changed

1 file changed

+24
-13
lines changed

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

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -755,15 +755,9 @@ public void run() {
755755
return "in_app_messages/" + message.messageId + "/variants/" + variantId + "/html?app_id=" + OneSignal.appId;
756756
}
757757

758-
private void displayMessage(@NonNull final OSInAppMessage message) {
759-
if (!inAppMessagingEnabled) {
760-
logger.verbose("In app messaging is currently paused, in app messages will not be shown!");
761-
return;
762-
}
763-
764-
inAppMessageShowing = true;
758+
private void getTagsForLiquidTemplating(@NonNull final OSInAppMessage message, final boolean isPreview) {
765759
waitForTags = false;
766-
if (message.getHasLiquid()) {
760+
if (isPreview || message.getHasLiquid()) {
767761
waitForTags = true;
768762
OneSignal.getTags(new OneSignal.OSGetTagsHandler() {
769763
@Override
@@ -773,13 +767,26 @@ public void tagsAvailable(JSONObject tags) {
773767
userTagsString = tags.toString();
774768
}
775769
if (pendingHTMLContent != null) {
776-
OneSignal.getSessionManager().onInAppMessageReceived(message.messageId);
770+
if (!isPreview) {
771+
OneSignal.getSessionManager().onInAppMessageReceived(message.messageId);
772+
}
777773
WebViewManager.showHTMLString(message, taggedHTMLString(pendingHTMLContent));
778774
pendingHTMLContent = null;
779775
}
780776
}
781777
});
782778
}
779+
}
780+
781+
private void displayMessage(@NonNull final OSInAppMessage message) {
782+
if (!inAppMessagingEnabled) {
783+
logger.verbose("In app messaging is currently paused, in app messages will not be shown!");
784+
return;
785+
}
786+
787+
inAppMessageShowing = true;
788+
789+
getTagsForLiquidTemplating(message, false);
783790

784791
String htmlPath = htmlPathForMessage(message);
785792
OneSignalRestClient.get(htmlPath, new ResponseHandler() {
@@ -838,6 +845,9 @@ String taggedHTMLString(@NonNull String untaggedString) {
838845
void displayPreviewMessage(@NonNull String previewUUID) {
839846
inAppMessageShowing = true;
840847

848+
final OSInAppMessage message = new OSInAppMessage(true);
849+
getTagsForLiquidTemplating(message, true);
850+
841851
String htmlPath = "in_app_messages/device_preview?preview_id=" + previewUUID + "&app_id=" + OneSignal.appId;
842852
OneSignalRestClient.get(htmlPath, new ResponseHandler() {
843853
@Override
@@ -853,12 +863,13 @@ void onSuccess(String response) {
853863
JSONObject jsonResponse = new JSONObject(response);
854864
String htmlStr = jsonResponse.getString("html");
855865

856-
OSInAppMessage message = new OSInAppMessage(true);
857-
858866
double displayDuration = jsonResponse.optDouble("display_duration");
859867
message.setDisplayDuration(displayDuration);
860-
861-
WebViewManager.showHTMLString(message, htmlStr);
868+
if (waitForTags) {
869+
pendingHTMLContent = htmlStr;
870+
return;
871+
}
872+
WebViewManager.showHTMLString(message, taggedHTMLString(htmlStr));
862873
} catch (JSONException e) {
863874
e.printStackTrace();
864875
}

0 commit comments

Comments
 (0)