Skip to content

Commit 50b4e22

Browse files
committed
[MOB-10364] Update according to new discussiom
1 parent 52a9610 commit 50b4e22

File tree

2 files changed

+46
-7
lines changed

2 files changed

+46
-7
lines changed

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -234,12 +234,6 @@ public void showMessage(final @NonNull IterableInAppMessage message, boolean con
234234
}
235235

236236
public void showMessage(final @NonNull IterableInAppMessage message, boolean consume, final @Nullable IterableHelper.IterableUrlCallback clickCallback, @NonNull IterableInAppLocation inAppLocation) {
237-
if (message.isJsonOnly()) {
238-
setRead(message, true, null, null);
239-
message.setConsumed(true);
240-
return;
241-
}
242-
243237
if (displayer.showMessage(message, inAppLocation, new IterableHelper.IterableUrlCallback() {
244238
@Override
245239
public void execute(Uri url) {
@@ -420,7 +414,14 @@ private void processMessages() {
420414
IterableLogger.d(TAG, "Response: " + response);
421415
message.setProcessed(true);
422416

423-
if (response == InAppResponse.SHOW || message.isJsonOnly()) {
417+
if (message.isJsonOnly()) {
418+
setRead(message, true, null, null);
419+
message.setConsumed(true);
420+
api.inAppConsume(message, null, null, null, null);
421+
return;
422+
}
423+
424+
if (response == InAppResponse.SHOW) {
424425
boolean consume = !message.isInboxMessage();
425426
showMessage(message, consume, null);
426427
return;

iterableapi/src/test/java/com/iterable/iterableapi/IterableInAppManagerTest.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -796,4 +796,42 @@ public InAppResponse onNewInApp(@NonNull IterableInAppMessage message) {
796796
return InAppResponse.SKIP;
797797
}
798798
}
799+
800+
@Test
801+
public void testJsonOnlyMessageConsume() throws Exception {
802+
// Create payload with a JSON-only message
803+
JSONObject payload = new JSONObject()
804+
.put("inAppMessages", new JSONArray()
805+
.put(new JSONObject()
806+
.put("saveToInbox", false)
807+
.put("jsonOnly", 1)
808+
.put("customPayload", new JSONObject().put("key", "value"))
809+
.put("trigger", new JSONObject().put("type", "immediate"))
810+
.put("messageId", "message1")));
811+
812+
dispatcher.enqueueResponse("/inApp/getMessages", new MockResponse().setBody(payload.toString()));
813+
814+
// Create InAppManager with spied IterableApi
815+
IterableApi spyApi = spy(IterableApi.sharedInstance);
816+
IterableInAppManager inAppManager = new IterableInAppManager(
817+
spyApi,
818+
new IterableDefaultInAppHandler(),
819+
30.0,
820+
new IterableInAppMemoryStorage(),
821+
IterableActivityMonitor.getInstance(),
822+
mock(IterableInAppDisplayer.class));
823+
824+
// Process messages by bringing app to foreground
825+
Robolectric.buildActivity(Activity.class).create().start().resume();
826+
shadowOf(getMainLooper()).idle();
827+
828+
// Verify inAppConsume was called with the correct parameters
829+
verify(spyApi).inAppConsume(
830+
argThat(message -> message.getMessageId().equals("message1")),
831+
eq(null),
832+
eq(null),
833+
eq(null),
834+
eq(null)
835+
);
836+
}
799837
}

0 commit comments

Comments
 (0)