Skip to content

Commit c1620b8

Browse files
authored
Adds Campaign ID to IterableInAppMessage (#223)
Adds Campaign ID to IterableInAppMessage
2 parents 0254477 + 34fa480 commit c1620b8

File tree

2 files changed

+60
-4
lines changed

2 files changed

+60
-4
lines changed

iterableapi/src/main/java/com/iterable/iterableapi/IterableInAppMessage.java

+32-4
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import androidx.annotation.RestrictTo;
88
import androidx.core.util.ObjectsCompat;
99

10-
import org.json.JSONArray;
1110
import org.json.JSONException;
1211
import org.json.JSONObject;
1312

@@ -24,13 +23,23 @@ public class IterableInAppMessage {
2423
private final @NonNull Trigger trigger;
2524
private final @Nullable Boolean saveToInbox;
2625
private final @Nullable InboxMetadata inboxMetadata;
26+
private final @Nullable Long campaignId;
2727
private boolean processed = false;
2828
private boolean consumed = false;
2929
private boolean read = false;
3030
private boolean loadedHtmlFromJson = false;
3131
private @Nullable IterableInAppStorage inAppStorageInterface;
3232

33-
IterableInAppMessage(@NonNull String messageId, @NonNull Content content, @NonNull JSONObject customPayload, @NonNull Date createdAt, @NonNull Date expiresAt, @NonNull Trigger trigger, @Nullable Boolean saveToInbox, @Nullable InboxMetadata inboxMetadata) {
33+
IterableInAppMessage(@NonNull String messageId,
34+
@NonNull Content content,
35+
@NonNull JSONObject customPayload,
36+
@NonNull Date createdAt,
37+
@NonNull Date expiresAt,
38+
@NonNull Trigger trigger,
39+
@Nullable Boolean saveToInbox,
40+
@Nullable InboxMetadata inboxMetadata,
41+
@Nullable Long campaignId) {
42+
3443
this.messageId = messageId;
3544
this.content = content;
3645
this.customPayload = customPayload;
@@ -39,6 +48,7 @@ public class IterableInAppMessage {
3948
this.trigger = trigger;
4049
this.saveToInbox = saveToInbox;
4150
this.inboxMetadata = inboxMetadata;
51+
this.campaignId = campaignId;
4252
}
4353

4454
static class Trigger {
@@ -193,6 +203,11 @@ public String getMessageId() {
193203
return messageId;
194204
}
195205

206+
@Nullable
207+
public Long getCampaignId() {
208+
return campaignId;
209+
}
210+
196211
@NonNull
197212
public Date getCreatedAt() {
198213
return createdAt;
@@ -281,6 +296,7 @@ static IterableInAppMessage fromJSONObject(@NonNull JSONObject messageJson, @Nul
281296
}
282297

283298
String messageId = messageJson.optString(IterableConstants.KEY_MESSAGE_ID);
299+
final Long campaignId = IterableUtil.retrieveValidCampaignIdOrNull(messageJson, IterableConstants.KEY_CAMPAIGN_ID);
284300
long createdAtLong = messageJson.optLong(IterableConstants.ITERABLE_IN_APP_CREATED_AT);
285301
Date createdAt = createdAtLong != 0 ? new Date(createdAtLong) : null;
286302
long expiresAtLong = messageJson.optLong(IterableConstants.ITERABLE_IN_APP_EXPIRES_AT);
@@ -306,8 +322,17 @@ static IterableInAppMessage fromJSONObject(@NonNull JSONObject messageJson, @Nul
306322
JSONObject inboxPayloadJson = messageJson.optJSONObject(IterableConstants.ITERABLE_IN_APP_INBOX_METADATA);
307323
InboxMetadata inboxMetadata = InboxMetadata.fromJSONObject(inboxPayloadJson);
308324

309-
IterableInAppMessage message = new IterableInAppMessage(messageId,
310-
new Content(html, padding, backgroundAlpha), customPayload, createdAt, expiresAt, trigger, saveToInbox, inboxMetadata);
325+
IterableInAppMessage message = new IterableInAppMessage(
326+
messageId,
327+
new Content(html, padding, backgroundAlpha),
328+
customPayload,
329+
createdAt,
330+
expiresAt,
331+
trigger,
332+
saveToInbox,
333+
inboxMetadata,
334+
campaignId);
335+
311336
message.inAppStorageInterface = storageInterface;
312337
if (html != null) {
313338
message.setLoadedHtmlFromJson(true);
@@ -324,6 +349,9 @@ JSONObject toJSONObject() {
324349
JSONObject contentJson = new JSONObject();
325350
try {
326351
messageJson.putOpt(IterableConstants.KEY_MESSAGE_ID, messageId);
352+
if (campaignId != null && IterableUtil.isValidCampaignId(campaignId)) {
353+
messageJson.put(IterableConstants.KEY_CAMPAIGN_ID, campaignId);
354+
}
327355
if (createdAt != null) {
328356
messageJson.putOpt(IterableConstants.ITERABLE_IN_APP_CREATED_AT, createdAt.getTime());
329357
}

iterableapi/src/main/java/com/iterable/iterableapi/IterableUtil.java

+28
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import com.iterable.iterableapi.util.IOUtils;
1212

13+
import org.json.JSONException;
1314
import org.json.JSONObject;
1415

1516
import java.io.BufferedReader;
@@ -63,6 +64,15 @@ static JSONObject retrieveExpirableJsonObject(SharedPreferences preferences, Str
6364
return instance.retrieveExpirableJsonObject(preferences, key);
6465
}
6566

67+
@Nullable
68+
static Long retrieveValidCampaignIdOrNull(final JSONObject json, final String key) {
69+
return instance.retrieveValidCampaignIdOrNull(json, key);
70+
}
71+
72+
static boolean isValidCampaignId(final long campaignId) {
73+
return instance.isValidCampaignId(campaignId);
74+
}
75+
6676
static File getSdkCacheDir(Context context) {
6777
return instance.getSdkCacheDir(context);
6878
}
@@ -161,6 +171,24 @@ JSONObject retrieveExpirableJsonObject(SharedPreferences preferences, String key
161171
return null;
162172
}
163173

174+
@Nullable
175+
Long retrieveValidCampaignIdOrNull(final JSONObject json, final String key) {
176+
try {
177+
final long id = json.getLong(key);
178+
if (isValidCampaignId(id)) {
179+
return id;
180+
} else {
181+
return null;
182+
}
183+
} catch (final JSONException ex) {
184+
return null;
185+
}
186+
}
187+
188+
boolean isValidCampaignId(final long campaignId) {
189+
return campaignId >= 0;
190+
}
191+
164192
File getSdkCacheDir(Context context) {
165193
File sdkCacheDir = new File(context.getCacheDir(), "com.iterable.sdk");
166194
if (!sdkCacheDir.exists()) {

0 commit comments

Comments
 (0)