From a591d39a6189c068858424476e64c29e2486db77 Mon Sep 17 00:00:00 2001 From: Evan Greer Date: Fri, 6 Jun 2025 16:09:20 -0600 Subject: [PATCH 1/6] feat: test calling native method --- .../reactnative/RNIterableAPIModule.java | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java index 29a97706..d03050ba 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java @@ -487,20 +487,12 @@ public void updateVisibleRows(ReadableArray visibleRows) { @ReactMethod public void getEmbeddedPlacements(Promise promise) { - IterableLogger.d(TAG, "getEmbeddedPlacements"); - - JSONArray testPlacements = new JSONArray(); - int[] testPlacementIds = {808, 1121, 112}; - - try { - for (int placementId : testPlacementIds) { - testPlacements.put(createTestPlacement(placementId)); - } - - promise.resolve(Serialization.convertJsonToArray(testPlacements)); - } catch (JSONException e) { - promise.reject("", "Failed to create test placements"); - } + + List messages = IterableApi.getInstance().getEmbeddedManager().getMessages(10); + IterableLogger.d(TAG, "Messages for placement: " + messages); + + // Return the collected logs as the success response + promise.resolve("success"); } private JSONObject createTestPlacement(int placementId) throws JSONException { From 5366d3a3acd5c37229c8e7e715ea03b584e5b0c4 Mon Sep 17 00:00:00 2001 From: Evan Greer Date: Fri, 6 Jun 2025 17:16:14 -0600 Subject: [PATCH 2/6] feat: adds serialization functions --- .../iterable/reactnative/RNIterableAPIModule.java | 12 ++++++------ .../java/com/iterable/reactnative/Serialization.java | 10 ++++++++++ package.json | 2 +- src/itblBuildInfo.ts | 2 +- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java index d03050ba..77c2da17 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java @@ -486,13 +486,13 @@ public void updateVisibleRows(ReadableArray visibleRows) { // region Embedded APIs @ReactMethod - public void getEmbeddedPlacements(Promise promise) { - - List messages = IterableApi.getInstance().getEmbeddedManager().getMessages(10); - IterableLogger.d(TAG, "Messages for placement: " + messages); + public void getEmbeddedMessages(Promise promise) { + IterableLogger.d(TAG, "getEmbeddedMessages"); + + JSONArray embeddedMessageJsonArray = Serialization.serializeEmbeddedMessages(IterableApi.getInstance().getEmbeddedManager().getMessages(10)); + IterableLogger.d(TAG, "Messages for placement: " + embeddedMessageJsonArray); - // Return the collected logs as the success response - promise.resolve("success"); + promise.resolve("success"); } private JSONObject createTestPlacement(int placementId) throws JSONException { diff --git a/android/src/main/java/com/iterable/reactnative/Serialization.java b/android/src/main/java/com/iterable/reactnative/Serialization.java index 19b82182..a74349c6 100644 --- a/android/src/main/java/com/iterable/reactnative/Serialization.java +++ b/android/src/main/java/com/iterable/reactnative/Serialization.java @@ -16,6 +16,7 @@ import com.iterable.iterableapi.IterableActionContext; import com.iterable.iterableapi.IterableConfig; import com.iterable.iterableapi.IterableDataRegion; +import com.iterable.iterableapi.IterableEmbeddedMessage; import com.iterable.iterableapi.IterableInAppCloseAction; import com.iterable.iterableapi.IterableInAppDeleteActionType; import com.iterable.iterableapi.IterableInAppHandler; @@ -136,6 +137,15 @@ static JSONArray serializeInAppMessages(List inAppMessages return inAppMessagesJson; } + static JSONArray serializeEmbeddedMessages(List embeddedMessages) { + JSONArray embeddedMessagesJson = new JSONArray(); + for (IterableEmbeddedMessage message : embeddedMessages) { + JSONObject messageJson = IterableEmbeddedMessage.Companion.toJSONObject(message); + embeddedMessagesJson.put(messageJson); + } + return embeddedMessagesJson; + } + static IterableConfig.Builder getConfigFromReadableMap(ReadableMap iterableContextMap) { try { JSONObject iterableContextJSON = convertMapToJson(iterableContextMap); diff --git a/package.json b/package.json index 2fde0d1e..9d59b09b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@iterable/react-native-sdk", - "version": "2.0.0", + "version": "2.0.0-rc.19", "description": "Iterable SDK for React Native.", "source": "./src/index.tsx", "main": "./lib/module/index.js", diff --git a/src/itblBuildInfo.ts b/src/itblBuildInfo.ts index 4cfc8536..4dcb9173 100644 --- a/src/itblBuildInfo.ts +++ b/src/itblBuildInfo.ts @@ -3,5 +3,5 @@ * It contains the version of the package */ export const buildInfo = { - version: '2.0.0', + version: '2.0.0-rc.19', }; From aac04d5b0f99779ec15f3726c29779bc86256211 Mon Sep 17 00:00:00 2001 From: Evan Greer Date: Sat, 7 Jun 2025 08:07:23 -0600 Subject: [PATCH 3/6] chore: resets version number --- .../com/iterable/reactnative/RNIterableAPIModule.java | 11 ++++++++--- package.json | 2 +- src/itblBuildInfo.ts | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java index 77c2da17..1d27c107 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java @@ -489,10 +489,15 @@ public void updateVisibleRows(ReadableArray visibleRows) { public void getEmbeddedMessages(Promise promise) { IterableLogger.d(TAG, "getEmbeddedMessages"); - JSONArray embeddedMessageJsonArray = Serialization.serializeEmbeddedMessages(IterableApi.getInstance().getEmbeddedManager().getMessages(10)); - IterableLogger.d(TAG, "Messages for placement: " + embeddedMessageJsonArray); + try { + JSONArray embeddedMessageJsonArray = Serialization.serializeEmbeddedMessages(IterableApi.getInstance().getEmbeddedManager().getMessages(10)); + IterableLogger.d(TAG, "Messages for placement: " + embeddedMessageJsonArray); - promise.resolve("success"); + promise.resolve("Success"); + } catch (JSONException e) { + IterableLogger.e(TAG, e.getLocalizedMessage()); + promise.reject("", "Failed to fetch messages with error " + e.getLocalizedMessage()); + } } private JSONObject createTestPlacement(int placementId) throws JSONException { diff --git a/package.json b/package.json index 9d59b09b..2fde0d1e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@iterable/react-native-sdk", - "version": "2.0.0-rc.19", + "version": "2.0.0", "description": "Iterable SDK for React Native.", "source": "./src/index.tsx", "main": "./lib/module/index.js", diff --git a/src/itblBuildInfo.ts b/src/itblBuildInfo.ts index 4dcb9173..4cfc8536 100644 --- a/src/itblBuildInfo.ts +++ b/src/itblBuildInfo.ts @@ -3,5 +3,5 @@ * It contains the version of the package */ export const buildInfo = { - version: '2.0.0-rc.19', + version: '2.0.0', }; From 38eddb93ec314a772d69ca0728a9f68dfc402dab Mon Sep 17 00:00:00 2001 From: Evan Greer Date: Tue, 10 Jun 2025 14:17:24 -0600 Subject: [PATCH 4/6] feat: passes converted messages into promise --- .../com/iterable/reactnative/RNIterableAPIModule.java | 2 +- src/embedded/classes/IterableEmbeddedManager.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java index 1d27c107..ba4c565a 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java @@ -493,7 +493,7 @@ public void getEmbeddedMessages(Promise promise) { JSONArray embeddedMessageJsonArray = Serialization.serializeEmbeddedMessages(IterableApi.getInstance().getEmbeddedManager().getMessages(10)); IterableLogger.d(TAG, "Messages for placement: " + embeddedMessageJsonArray); - promise.resolve("Success"); + promise.resolve(Serialization.convertJsonToArray(embeddedMessageJsonArray)); } catch (JSONException e) { IterableLogger.e(TAG, e.getLocalizedMessage()); promise.reject("", "Failed to fetch messages with error " + e.getLocalizedMessage()); diff --git a/src/embedded/classes/IterableEmbeddedManager.ts b/src/embedded/classes/IterableEmbeddedManager.ts index e570d750..7bfae0c3 100644 --- a/src/embedded/classes/IterableEmbeddedManager.ts +++ b/src/embedded/classes/IterableEmbeddedManager.ts @@ -1,7 +1,7 @@ import { NativeModules } from 'react-native'; import { Iterable } from '../../core/classes/Iterable'; -import { IterableEmbeddedPlacement } from './IterableEmbeddedPlacement'; +import type { IterableEmbeddedMessage } from './IterableEmbeddedMessage'; const RNIterableAPI = NativeModules.RNIterableAPI; @@ -16,9 +16,9 @@ export class IterableEmbeddedManager { * * @returns A Promise that resolves to an array of embedded placements. */ - getPlacements(): Promise { - Iterable?.logger?.log('EmbeddedManager.getPlacements'); + getMessages(): Promise { + Iterable?.logger?.log('EmbeddedManager.getMessages'); - return RNIterableAPI.getEmbeddedPlacements(); + return RNIterableAPI.getEmbeddedMessages(); } } From 6f1c83d5bb498a3cb1f3cb28dbd6506effc7fead Mon Sep 17 00:00:00 2001 From: Evan Greer Date: Fri, 13 Jun 2025 12:50:03 -0600 Subject: [PATCH 5/6] feat: adds placement id as a parameter to get embedded messages --- .../com/iterable/reactnative/RNIterableAPIModule.java | 6 +++--- src/embedded/classes/IterableEmbeddedManager.ts | 9 ++++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java index ba4c565a..cd46cc2b 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java @@ -486,11 +486,11 @@ public void updateVisibleRows(ReadableArray visibleRows) { // region Embedded APIs @ReactMethod - public void getEmbeddedMessages(Promise promise) { - IterableLogger.d(TAG, "getEmbeddedMessages"); + public void getEmbeddedMessages(Integer placementId, Promise promise) { + IterableLogger.d(TAG, "getEmbeddedMessages for placement: " + placementId); try { - JSONArray embeddedMessageJsonArray = Serialization.serializeEmbeddedMessages(IterableApi.getInstance().getEmbeddedManager().getMessages(10)); + JSONArray embeddedMessageJsonArray = Serialization.serializeEmbeddedMessages(IterableApi.getInstance().getEmbeddedManager().getMessages(placementId)); IterableLogger.d(TAG, "Messages for placement: " + embeddedMessageJsonArray); promise.resolve(Serialization.convertJsonToArray(embeddedMessageJsonArray)); diff --git a/src/embedded/classes/IterableEmbeddedManager.ts b/src/embedded/classes/IterableEmbeddedManager.ts index 7bfae0c3..a50235bf 100644 --- a/src/embedded/classes/IterableEmbeddedManager.ts +++ b/src/embedded/classes/IterableEmbeddedManager.ts @@ -14,11 +14,14 @@ export class IterableEmbeddedManager { /** * Retrieve the current user's list of embedded placements. * + * @param {number} placementId The ID of the placement to retrieve messages from. * @returns A Promise that resolves to an array of embedded placements. */ - getMessages(): Promise { - Iterable?.logger?.log('EmbeddedManager.getMessages'); + getMessages(placementId: number): Promise { + Iterable?.logger?.log( + `EmbeddedManager.getMessages for placement ${placementId}` + ); - return RNIterableAPI.getEmbeddedMessages(); + return RNIterableAPI.getEmbeddedMessages(placementId); } } From c35774ba3d6d8344f66b84aecd1341ec152d0a28 Mon Sep 17 00:00:00 2001 From: Evan Greer Date: Tue, 17 Jun 2025 15:26:35 -0600 Subject: [PATCH 6/6] feat: adds null check --- .../main/java/com/iterable/reactnative/Serialization.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/android/src/main/java/com/iterable/reactnative/Serialization.java b/android/src/main/java/com/iterable/reactnative/Serialization.java index a74349c6..af33e2e1 100644 --- a/android/src/main/java/com/iterable/reactnative/Serialization.java +++ b/android/src/main/java/com/iterable/reactnative/Serialization.java @@ -139,9 +139,11 @@ static JSONArray serializeInAppMessages(List inAppMessages static JSONArray serializeEmbeddedMessages(List embeddedMessages) { JSONArray embeddedMessagesJson = new JSONArray(); - for (IterableEmbeddedMessage message : embeddedMessages) { - JSONObject messageJson = IterableEmbeddedMessage.Companion.toJSONObject(message); - embeddedMessagesJson.put(messageJson); + if (embeddedMessages != null) { + for (IterableEmbeddedMessage message : embeddedMessages) { + JSONObject messageJson = IterableEmbeddedMessage.Companion.toJSONObject(message); + embeddedMessagesJson.put(messageJson); + } } return embeddedMessagesJson; }