Skip to content

Commit 397de12

Browse files
committed
Parsing loadContentHTML into OSInAppMessageContent object
Creating new object that will hold the HTML for an IAM as well as style information that will include margins, overlay color, and size.
1 parent e453400 commit 397de12

File tree

3 files changed

+60
-21
lines changed

3 files changed

+60
-21
lines changed

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

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ class OSInAppMessageController extends OSBackgroundManager implements OSDynamicT
8383
private String userTagsString = null;
8484

8585
@Nullable
86-
private String pendingHTMLContent = null;
86+
private OSInAppMessageContent pendingMessageContent = null;
8787

8888
private boolean waitForTags = false;
8989

@@ -775,18 +775,26 @@ public void tagsAvailable(JSONObject tags) {
775775
if (tags != null) {
776776
userTagsString = tags.toString();
777777
}
778-
if (pendingHTMLContent != null) {
778+
if (pendingMessageContent != null) {
779779
if (!isPreview) {
780780
OneSignal.getSessionManager().onInAppMessageReceived(message.messageId);
781781
}
782-
WebViewManager.showHTMLString(message, taggedHTMLString(pendingHTMLContent));
783-
pendingHTMLContent = null;
782+
pendingMessageContent.setContentHtml(taggedHTMLString(pendingMessageContent.getContentHtml()));
783+
WebViewManager.showMessageContent(message, pendingMessageContent);
784+
pendingMessageContent = null;
784785
}
785786
}
786787
});
787788
}
788789
}
789790

791+
private OSInAppMessageContent parseMessageContentData(JSONObject data, OSInAppMessageInternal message) {
792+
OSInAppMessageContent content = new OSInAppMessageContent(data);
793+
double displayDuration = data.optDouble("display_duration");
794+
message.setDisplayDuration(displayDuration);
795+
return content;
796+
}
797+
790798
private void displayMessage(@NonNull final OSInAppMessageInternal message) {
791799
if (!inAppMessagingEnabled) {
792800
logger.verbose("In app messaging is currently paused, in app messages will not be shown!");
@@ -803,17 +811,19 @@ private void displayMessage(@NonNull final OSInAppMessageInternal message) {
803811
public void onSuccess(String response) {
804812
try {
805813
JSONObject jsonResponse = new JSONObject(response);
806-
String htmlStr = jsonResponse.getString("html");
807-
808-
double displayDuration = jsonResponse.optDouble("display_duration");
809-
message.setDisplayDuration(displayDuration);
814+
OSInAppMessageContent content = parseMessageContentData(jsonResponse, message);
815+
if (content.getContentHtml() == null) {
816+
logger.debug("displayMessage:OnSuccess: No HTML retrieved from loadMessageContent");
817+
return;
818+
}
810819
if (waitForTags) {
811-
pendingHTMLContent = htmlStr;
820+
pendingMessageContent = content;
812821
return;
813822
}
814823
OneSignal.getSessionManager().onInAppMessageReceived(message.messageId);
815824
onMessageWillDisplay(message);
816-
WebViewManager.showHTMLString(message, taggedHTMLString(htmlStr));
825+
content.setContentHtml(taggedHTMLString(content.getContentHtml()));
826+
WebViewManager.showMessageContent(message, content);
817827
} catch (JSONException e) {
818828
e.printStackTrace();
819829
}
@@ -858,16 +868,18 @@ void displayPreviewMessage(@NonNull String previewUUID) {
858868
public void onSuccess(String response) {
859869
try {
860870
JSONObject jsonResponse = new JSONObject(response);
861-
String htmlStr = jsonResponse.getString("html");
862-
863-
double displayDuration = jsonResponse.optDouble("display_duration");
864-
message.setDisplayDuration(displayDuration);
871+
OSInAppMessageContent content = parseMessageContentData(jsonResponse, message);
872+
if (content.getContentHtml() == null) {
873+
logger.debug("displayPreviewMessage:OnSuccess: No HTML retrieved from loadMessageContent");
874+
return;
875+
}
865876
if (waitForTags) {
866-
pendingHTMLContent = htmlStr;
877+
pendingMessageContent = content;
867878
return;
868879
}
869880
onMessageWillDisplay(message);
870-
WebViewManager.showHTMLString(message, taggedHTMLString(htmlStr));
881+
content.setContentHtml(taggedHTMLString(content.getContentHtml()));
882+
WebViewManager.showMessageContent(message, content);
871883
} catch (JSONException e) {
872884
e.printStackTrace();
873885
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package com.onesignal
2+
3+
import org.json.JSONObject
4+
5+
const val HTML = "html"
6+
const val STYLE = "style"
7+
const val TOP_MARGIN = "top_margin"
8+
const val BOTTOM_MARGIN = "bottom_margin"
9+
const val LEFT_MARGIN = "left_margin"
10+
const val RIGHT_MARGIN = "right_margin"
11+
12+
class OSInAppMessageContent constructor(jsonObject: JSONObject) {
13+
var contentHtml: String? = null
14+
var topMargin: Int = 1
15+
var bottomMargin: Int = 1
16+
var leftMargin: Int = 1
17+
var rightMargin: Int = 1
18+
19+
init {
20+
contentHtml = jsonObject.optString(HTML)
21+
var style: JSONObject = jsonObject.optJSONObject(STYLE)
22+
topMargin = style.optInt(TOP_MARGIN, 1)
23+
bottomMargin = style.optInt(BOTTOM_MARGIN, 1)
24+
leftMargin = style.optInt(LEFT_MARGIN, 1)
25+
rightMargin = style.optInt(RIGHT_MARGIN, 1)
26+
}
27+
}

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,9 @@ protected WebViewManager(@NonNull OSInAppMessageInternal message, @NonNull Activ
8787
* Dismiss WebView if already showing one and the new one is a Preview
8888
*
8989
* @param message the message to show
90-
* @param htmlStr the html to display on the WebView
90+
* @param content the html to display on the WebView
9191
*/
92-
static void showHTMLString(@NonNull final OSInAppMessageInternal message, @NonNull final String htmlStr) {
92+
static void showMessageContent(@NonNull final OSInAppMessageInternal message, @NonNull final OSInAppMessageContent content) {
9393
final Activity currentActivity = OneSignal.getCurrentActivity();
9494
OneSignal.onesignalLog(OneSignal.LOG_LEVEL.DEBUG, "in app message showHTMLString on currentActivity: " + currentActivity);
9595
/* IMPORTANT
@@ -103,11 +103,11 @@ static void showHTMLString(@NonNull final OSInAppMessageInternal message, @NonNu
103103
@Override
104104
public void onComplete() {
105105
lastInstance = null;
106-
initInAppMessage(currentActivity, message, htmlStr);
106+
initInAppMessage(currentActivity, message, content.getContentHtml());
107107
}
108108
});
109109
} else {
110-
initInAppMessage(currentActivity, message, htmlStr);
110+
initInAppMessage(currentActivity, message, content.getContentHtml());
111111
}
112112
return;
113113
}
@@ -118,7 +118,7 @@ public void onComplete() {
118118
new Handler().postDelayed(new Runnable() {
119119
@Override
120120
public void run() {
121-
showHTMLString(message, htmlStr);
121+
showMessageContent(message, content);
122122
}
123123
}, IN_APP_MESSAGE_INIT_DELAY);
124124
}

0 commit comments

Comments
 (0)