From 12ee8fd000f23d7c50de5fafbec648d19cf2c504 Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Fri, 10 Oct 2025 21:16:04 -0700 Subject: [PATCH 1/8] feat: enable embedded messaging configuration in RNIterableAPIModuleImpl --- .../com/iterable/reactnative/RNIterableAPIModuleImpl.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java index 3207bb5dc..5b15e9808 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java @@ -88,6 +88,10 @@ public void initializeWithApiKey(String apiKey, ReadableMap configReadableMap, S configBuilder.setAuthHandler(this); } + if (configReadableMap.hasKey("enableEmbeddedMessaging")) { + configBuilder.setEnableEmbeddedMessaging(configReadableMap.getBoolean("enableEmbeddedMessaging")); + } + IterableApi.initialize(reactContext, apiKey, configBuilder.build()); IterableApi.getInstance().setDeviceAttribute("reactNativeSDKVersion", version); @@ -118,6 +122,10 @@ public void initialize2WithApiKey(String apiKey, ReadableMap configReadableMap, configBuilder.setAuthHandler(this); } + if (configReadableMap.hasKey("enableEmbeddedMessaging")) { + configBuilder.setEnableEmbeddedMessaging(configReadableMap.getBoolean("enableEmbeddedMessaging")); + } + // NOTE: There does not seem to be a way to set the API endpoint // override in the Android SDK. Check with @Ayyanchira and @evantk91 to // see what the best approach is. From 93402fd9c1ff24b61f7e902be3886b496181487f Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Fri, 10 Oct 2025 21:40:36 -0700 Subject: [PATCH 2/8] feat: update IterableConfig with prop that matches android name --- example/src/hooks/useIterableApp.tsx | 2 ++ src/core/classes/IterableConfig.ts | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/example/src/hooks/useIterableApp.tsx b/example/src/hooks/useIterableApp.tsx index d648dd25c..136323dbd 100644 --- a/example/src/hooks/useIterableApp.tsx +++ b/example/src/hooks/useIterableApp.tsx @@ -134,6 +134,8 @@ export const IterableAppProvider: FunctionComponent< retryBackoff: IterableRetryBackoff.LINEAR, }; + config.enableEmbeddedMessaging = true; + config.onJWTError = (authFailure) => { console.log('onJWTError', authFailure); diff --git a/src/core/classes/IterableConfig.ts b/src/core/classes/IterableConfig.ts index cbe3cb665..6623108e7 100644 --- a/src/core/classes/IterableConfig.ts +++ b/src/core/classes/IterableConfig.ts @@ -327,7 +327,7 @@ export class IterableConfig { * - [Android Embedded Messaging](https://support.iterable.com/hc/en-us/articles/23061877893652-Embedded-Messages-with-Iterable-s-Android-SDK) * - [iOS Embedded Messaging](https://support.iterable.com/hc/en-us/articles/23061840746900-Embedded-Messages-with-Iterable-s-iOS-SDK) */ - embeddedMessagingEnabled = false; + enableEmbeddedMessaging = false; /** * Converts the IterableConfig instance to a dictionary object. @@ -378,7 +378,7 @@ export class IterableConfig { pushPlatform: this.pushPlatform, encryptionEnforced: this.encryptionEnforced, retryPolicy: this.retryPolicy, - embeddedMessagingEnabled: this.embeddedMessagingEnabled, + enableEmbeddedMessaging: this.enableEmbeddedMessaging, }; } } From b916fb376d8d074adcf1147ccdf5da4b92d93e05 Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Fri, 10 Oct 2025 21:59:29 -0700 Subject: [PATCH 3/8] feat: implement getEmbeddedPlacementIds --- .../reactnative/RNIterableAPIModuleImpl.java | 22 +++++++++++++++++++ .../newarch/java/com/RNIterableAPIModule.java | 5 +++++ .../oldarch/java/com/RNIterableAPIModule.java | 4 ++++ src/api/NativeRNIterableAPI.ts | 3 +++ src/core/classes/IterableApi.ts | 16 +++++++++++++- .../classes/IterableEmbeddedManager.ts | 11 ++++++++++ 6 files changed, 60 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java index 5b15e9808..3db33bd8a 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java @@ -15,6 +15,7 @@ import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.UiThreadUtil; +import com.facebook.react.bridge.WritableArray; import com.facebook.react.bridge.WritableMap; import com.facebook.react.modules.core.DeviceEventManagerModule; @@ -507,6 +508,27 @@ private static JSONObject optSerializedDataFields(ReadableMap dataFields) { // endregion // --------------------------------------------------------------------------------------- + // region Embedded Messaging + + public void getEmbeddedPlacementIds(Promise promise) { + IterableLogger.d(TAG, "getEmbeddedPlacementIds"); + try { + List placementIds = IterableApi.getInstance().getEmbeddedManager().getPlacementIds(); + WritableArray writableArray = Arguments.createArray(); + if (placementIds != null) { + for (Long placementId : placementIds) { + writableArray.pushDouble(placementId.doubleValue()); + } + } + promise.resolve(writableArray); + } catch (Exception e) { + IterableLogger.e(TAG, "Error getting placement IDs: " + e.getLocalizedMessage()); + promise.reject("", "Failed to get placement IDs: " + e.getLocalizedMessage()); + } + } + + // --------------------------------------------------------------------------------------- + // endregion // region IterableSDK callbacks @Override diff --git a/android/src/newarch/java/com/RNIterableAPIModule.java b/android/src/newarch/java/com/RNIterableAPIModule.java index f145bab10..50e814f0b 100644 --- a/android/src/newarch/java/com/RNIterableAPIModule.java +++ b/android/src/newarch/java/com/RNIterableAPIModule.java @@ -224,6 +224,11 @@ public void pauseAuthRetries(boolean pauseRetry) { moduleImpl.pauseAuthRetries(pauseRetry); } + @Override + public void getEmbeddedPlacementIds(Promise promise) { + moduleImpl.getEmbeddedPlacementIds(promise); + } + public void sendEvent(@NonNull String eventName, @Nullable Object eventData) { moduleImpl.sendEvent(eventName, eventData); } diff --git a/android/src/oldarch/java/com/RNIterableAPIModule.java b/android/src/oldarch/java/com/RNIterableAPIModule.java index c3a72339b..4555fd71b 100644 --- a/android/src/oldarch/java/com/RNIterableAPIModule.java +++ b/android/src/oldarch/java/com/RNIterableAPIModule.java @@ -228,6 +228,10 @@ public void pauseAuthRetries(boolean pauseRetry) { moduleImpl.pauseAuthRetries(pauseRetry); } + @ReactMethod + public void getEmbeddedPlacementIds(Promise promise) { + moduleImpl.getEmbeddedPlacementIds(promise); + } public void sendEvent(@NonNull String eventName, @Nullable Object eventData) { moduleImpl.sendEvent(eventName, eventData); diff --git a/src/api/NativeRNIterableAPI.ts b/src/api/NativeRNIterableAPI.ts index 391fadbb7..9dd2af2b7 100644 --- a/src/api/NativeRNIterableAPI.ts +++ b/src/api/NativeRNIterableAPI.ts @@ -118,6 +118,9 @@ export interface Spec extends TurboModule { passAlongAuthToken(authToken?: string | null): void; pauseAuthRetries(pauseRetry: boolean): void; + // Embedded Messaging + getEmbeddedPlacementIds(): Promise; + // Wake app -- android only wakeApp(): void; diff --git a/src/core/classes/IterableApi.ts b/src/core/classes/IterableApi.ts index fe2b446a3..9825f42ae 100644 --- a/src/core/classes/IterableApi.ts +++ b/src/core/classes/IterableApi.ts @@ -507,7 +507,21 @@ export class IterableApi { // ---- End IN-APP ---- // // ====================================================== // - // ======================= MOSC ======================= // + // ======================= EMBEDDED ===================== // + // ====================================================== // + + /** + * Get the embedded placement IDs. + */ + static getEmbeddedPlacementIds() { + IterableLogger.log('getEmbeddedPlacementIds'); + return RNIterableAPI.getEmbeddedPlacementIds(); + } + + // ---- End EMBEDDED ---- // + + // ====================================================== // + // ======================= MISCELLANEOUS ================ // // ====================================================== // /** diff --git a/src/embedded/classes/IterableEmbeddedManager.ts b/src/embedded/classes/IterableEmbeddedManager.ts index 333dd3af7..c4f8ae229 100644 --- a/src/embedded/classes/IterableEmbeddedManager.ts +++ b/src/embedded/classes/IterableEmbeddedManager.ts @@ -1,3 +1,5 @@ +import { IterableApi } from '../../core/classes/IterableApi'; + /** * Manages embedded messages from Iterable. * @@ -14,4 +16,13 @@ export class IterableEmbeddedManager { * Whether the embedded manager is enabled. */ isEnabled = false; + + /** + * Retrieves a list of placement IDs for the embedded manager. + * + * [Placement Documentation](https://support.iterable.com/hc/en-us/articles/23060529977364-Embedded-Messaging-Overview#placements-and-prioritization) + */ + getPlacementIds() { + return IterableApi.getEmbeddedPlacementIds(); + } } From b0e17f99db47c540f2ab66babb7062bcca348bf8 Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Fri, 10 Oct 2025 22:25:45 -0700 Subject: [PATCH 4/8] feat: add functionality to retrieve and display placement IDs in Embedded component --- example/src/components/Embedded/Embedded.tsx | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/example/src/components/Embedded/Embedded.tsx b/example/src/components/Embedded/Embedded.tsx index ce1348e48..4381cc2d1 100644 --- a/example/src/components/Embedded/Embedded.tsx +++ b/example/src/components/Embedded/Embedded.tsx @@ -1,9 +1,21 @@ -import { Text, View } from 'react-native'; +import { Text, TouchableOpacity, View } from 'react-native'; +import { useCallback, useState } from 'react'; import { Iterable } from '@iterable/react-native-sdk'; import styles from './Embedded.styles'; export const Embedded = () => { + const [placementIds, setPlacementIds] = useState([]); + const getPlacementIds = useCallback(() => { + Iterable.embeddedManager.getPlacementIds().then((ids: unknown) => { + console.log(ids); + setPlacementIds(ids as number[]); + }); + // .catch((error) => { + // console.error(error); + // }); + }, []); + return ( EMBEDDED @@ -14,6 +26,12 @@ export const Embedded = () => { Is embedded manager enabled? {Iterable.embeddedManager.isEnabled ? 'Yes' : 'No'} + + Placement ids: [{placementIds.join(', ')}] + + + Get placement ids + ); }; From d42dd737e39ed7639cc281c8844983d77d7dc03c Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Fri, 10 Oct 2025 22:47:50 -0700 Subject: [PATCH 5/8] feat: implement methods to retrieve and sync embedded messages in RNIterableAPIModuleImpl --- .../reactnative/RNIterableAPIModuleImpl.java | 110 +++++++++++++----- .../iterable/reactnative/Serialization.java | 18 ++- 2 files changed, 98 insertions(+), 30 deletions(-) diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java index 3db33bd8a..19bcbdb72 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java @@ -24,10 +24,14 @@ import com.iterable.iterableapi.IterableAction; import com.iterable.iterableapi.IterableActionContext; import com.iterable.iterableapi.IterableApi; +import com.iterable.iterableapi.IterableAttributionInfo; import com.iterable.iterableapi.IterableAuthHandler; import com.iterable.iterableapi.IterableConfig; import com.iterable.iterableapi.IterableCustomActionHandler; -import com.iterable.iterableapi.IterableAttributionInfo; +// import com.iterable.iterableapi.IterableEmbeddedManager; +import com.iterable.iterableapi.IterableEmbeddedMessage; +// import com.iterable.iterableapi.IterableEmbeddedSession; +// import com.iterable.iterableapi.IterableEmbeddedUpdateHandler; import com.iterable.iterableapi.IterableHelper; import com.iterable.iterableapi.IterableInAppCloseAction; import com.iterable.iterableapi.IterableInAppHandler; @@ -46,6 +50,7 @@ import java.util.Map; import java.util.HashMap; import java.util.List; +import java.util.ArrayList; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -97,6 +102,7 @@ public void initializeWithApiKey(String apiKey, ReadableMap configReadableMap, S IterableApi.getInstance().setDeviceAttribute("reactNativeSDKVersion", version); IterableApi.getInstance().getInAppManager().addListener(this); + IterableApi.getInstance().getEmbeddedManager().syncMessages(); // MOB-10421: Figure out what the error cases are and handle them appropriately // This is just here to match the TS types and let the JS thread know when we are done initializing @@ -124,8 +130,8 @@ public void initialize2WithApiKey(String apiKey, ReadableMap configReadableMap, } if (configReadableMap.hasKey("enableEmbeddedMessaging")) { - configBuilder.setEnableEmbeddedMessaging(configReadableMap.getBoolean("enableEmbeddedMessaging")); - } + configBuilder.setEnableEmbeddedMessaging(configReadableMap.getBoolean("enableEmbeddedMessaging")); + } // NOTE: There does not seem to be a way to set the API endpoint // override in the Android SDK. Check with @Ayyanchira and @evantk91 to @@ -135,6 +141,7 @@ public void initialize2WithApiKey(String apiKey, ReadableMap configReadableMap, IterableApi.getInstance().setDeviceAttribute("reactNativeSDKVersion", version); IterableApi.getInstance().getInAppManager().addListener(this); + IterableApi.getInstance().getEmbeddedManager().syncMessages(); // MOB-10421: Figure out what the error cases are and handle them appropriately // This is just here to match the TS types and let the JS thread know when we are done initializing @@ -508,27 +515,6 @@ private static JSONObject optSerializedDataFields(ReadableMap dataFields) { // endregion // --------------------------------------------------------------------------------------- - // region Embedded Messaging - - public void getEmbeddedPlacementIds(Promise promise) { - IterableLogger.d(TAG, "getEmbeddedPlacementIds"); - try { - List placementIds = IterableApi.getInstance().getEmbeddedManager().getPlacementIds(); - WritableArray writableArray = Arguments.createArray(); - if (placementIds != null) { - for (Long placementId : placementIds) { - writableArray.pushDouble(placementId.doubleValue()); - } - } - promise.resolve(writableArray); - } catch (Exception e) { - IterableLogger.e(TAG, "Error getting placement IDs: " + e.getLocalizedMessage()); - promise.reject("", "Failed to get placement IDs: " + e.getLocalizedMessage()); - } - } - - // --------------------------------------------------------------------------------------- - // endregion // region IterableSDK callbacks @Override @@ -659,14 +645,80 @@ public void sendEvent(@NonNull String eventName, @Nullable Object eventData) { public void onInboxUpdated() { sendEvent(EventName.receivedIterableInboxChanged.name(), null); } + // --------------------------------------------------------------------------------------- + // endregion + + // --------------------------------------------------------------------------------------- + // region Embedded messaging + + public void getEmbeddedMessages(@Nullable ReadableArray placementIds, Promise promise) { + IterableLogger.d(TAG, "getEmbeddedMessages for placements: " + placementIds); + + try { + List allMessages = new ArrayList<>(); + + if (placementIds == null || placementIds.size() == 0) { + // If no placement IDs provided, we need to get messages for all possible placements + // Since the Android SDK requires a placement ID, we'll use 0 as a default + // This might need to be adjusted based on the actual SDK behavior + List messages = IterableApi.getInstance().getEmbeddedManager().getMessages(0L); + if (messages != null) { + allMessages.addAll(messages); + } + } else { + // Convert ReadableArray to individual placement IDs and get messages for each + for (int i = 0; i < placementIds.size(); i++) { + long placementId = placementIds.getInt(i); + List messages = IterableApi.getInstance().getEmbeddedManager().getMessages(placementId); + if (messages != null) { + allMessages.addAll(messages); + } + } + } + + JSONArray embeddedMessageJsonArray = Serialization.serializeEmbeddedMessages(allMessages); + IterableLogger.d(TAG, "Messages for placements: " + embeddedMessageJsonArray); + + promise.resolve(Serialization.convertJsonToArray(embeddedMessageJsonArray)); + } catch (JSONException e) { + IterableLogger.e(TAG, e.getLocalizedMessage()); + promise.reject("", "Failed to fetch messages with error " + e.getLocalizedMessage()); + } + } + + public void syncEmbeddedMessages() { + IterableLogger.d(TAG, "syncEmbeddedMessages"); + IterableApi.getInstance().getEmbeddedManager().syncMessages(); + } + + public void getEmbeddedPlacementIds(Promise promise) { + IterableLogger.d(TAG, "getEmbeddedPlacementIds"); + try { + List placementIds = IterableApi.getInstance().getEmbeddedManager().getPlacementIds(); + WritableArray writableArray = Arguments.createArray(); + if (placementIds != null) { + for (Long placementId : placementIds) { + writableArray.pushDouble(placementId.doubleValue()); + } + } + promise.resolve(writableArray); + } catch (Exception e) { + IterableLogger.e(TAG, "Error getting placement IDs: " + e.getLocalizedMessage()); + promise.reject("", "Failed to get placement IDs: " + e.getLocalizedMessage()); + } + } + + // --------------------------------------------------------------------------------------- + // endregion } enum EventName { - handleUrlCalled, - handleCustomActionCalled, - handleInAppCalled, handleAuthCalled, - receivedIterableInboxChanged, + handleAuthFailureCalled, handleAuthSuccessCalled, - handleAuthFailureCalled + handleCustomActionCalled, + handleInAppCalled, + handleUrlCalled, + receivedIterableEmbeddedMessagesChanged, + receivedIterableInboxChanged } diff --git a/android/src/main/java/com/iterable/reactnative/Serialization.java b/android/src/main/java/com/iterable/reactnative/Serialization.java index 92c549554..2f0c4e1ca 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; @@ -23,8 +24,8 @@ import com.iterable.iterableapi.IterableInAppMessage; import com.iterable.iterableapi.IterableInboxSession; import com.iterable.iterableapi.IterableLogger; -import com.iterable.iterableapi.RNIterableInternal; import com.iterable.iterableapi.RetryPolicy; +import com.iterable.iterableapi.RNIterableInternal; import org.json.JSONArray; import org.json.JSONException; @@ -137,6 +138,17 @@ static JSONArray serializeInAppMessages(List inAppMessages return inAppMessagesJson; } + static JSONArray serializeEmbeddedMessages(List embeddedMessages) { + JSONArray embeddedMessagesJson = new JSONArray(); + if (embeddedMessages != null) { + 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); @@ -218,6 +230,10 @@ static IterableConfig.Builder getConfigFromReadableMap(ReadableMap iterableConte configBuilder.setDataRegion(iterableDataRegion); } + if (iterableContextJSON.has("enableEmbeddedMessaging")) { + configBuilder.setEnableEmbeddedMessaging(iterableContextJSON.optBoolean("enableEmbeddedMessaging")); + } + if (iterableContextJSON.has("retryPolicy")) { JSONObject retryPolicyJson = iterableContextJSON.getJSONObject("retryPolicy"); int maxRetry = retryPolicyJson.getInt("maxRetry"); From 67278b71557021d780e1f5ff1fff6e294ec2b73d Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Fri, 10 Oct 2025 23:06:13 -0700 Subject: [PATCH 6/8] refactor: add sync and get messages --- .../reactnative/RNIterableAPIModuleImpl.java | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java index 19bcbdb72..1517c717f 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java @@ -651,6 +651,28 @@ public void onInboxUpdated() { // --------------------------------------------------------------------------------------- // region Embedded messaging + public void syncEmbeddedMessages() { + IterableLogger.d(TAG, "syncEmbeddedMessages"); + IterableApi.getInstance().getEmbeddedManager().syncMessages(); + } + + public void getEmbeddedPlacementIds(Promise promise) { + IterableLogger.d(TAG, "getEmbeddedPlacementIds"); + try { + List placementIds = IterableApi.getInstance().getEmbeddedManager().getPlacementIds(); + WritableArray writableArray = Arguments.createArray(); + if (placementIds != null) { + for (Long placementId : placementIds) { + writableArray.pushDouble(placementId.doubleValue()); + } + } + promise.resolve(writableArray); + } catch (Exception e) { + IterableLogger.e(TAG, "Error getting placement IDs: " + e.getLocalizedMessage()); + promise.reject("", "Failed to get placement IDs: " + e.getLocalizedMessage()); + } + } + public void getEmbeddedMessages(@Nullable ReadableArray placementIds, Promise promise) { IterableLogger.d(TAG, "getEmbeddedMessages for placements: " + placementIds); @@ -686,28 +708,6 @@ public void getEmbeddedMessages(@Nullable ReadableArray placementIds, Promise pr } } - public void syncEmbeddedMessages() { - IterableLogger.d(TAG, "syncEmbeddedMessages"); - IterableApi.getInstance().getEmbeddedManager().syncMessages(); - } - - public void getEmbeddedPlacementIds(Promise promise) { - IterableLogger.d(TAG, "getEmbeddedPlacementIds"); - try { - List placementIds = IterableApi.getInstance().getEmbeddedManager().getPlacementIds(); - WritableArray writableArray = Arguments.createArray(); - if (placementIds != null) { - for (Long placementId : placementIds) { - writableArray.pushDouble(placementId.doubleValue()); - } - } - promise.resolve(writableArray); - } catch (Exception e) { - IterableLogger.e(TAG, "Error getting placement IDs: " + e.getLocalizedMessage()); - promise.reject("", "Failed to get placement IDs: " + e.getLocalizedMessage()); - } - } - // --------------------------------------------------------------------------------------- // endregion } From 06a94fc96405ac3d6e1e56c39504d5a19a094e10 Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Fri, 10 Oct 2025 23:12:09 -0700 Subject: [PATCH 7/8] refactor: remove unused methodss --- .../reactnative/RNIterableAPIModuleImpl.java | 41 ------------------- .../iterable/reactnative/Serialization.java | 11 ----- 2 files changed, 52 deletions(-) diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java index 1517c717f..fcbbbb2e1 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java @@ -650,12 +650,6 @@ public void onInboxUpdated() { // --------------------------------------------------------------------------------------- // region Embedded messaging - - public void syncEmbeddedMessages() { - IterableLogger.d(TAG, "syncEmbeddedMessages"); - IterableApi.getInstance().getEmbeddedManager().syncMessages(); - } - public void getEmbeddedPlacementIds(Promise promise) { IterableLogger.d(TAG, "getEmbeddedPlacementIds"); try { @@ -673,41 +667,6 @@ public void getEmbeddedPlacementIds(Promise promise) { } } - public void getEmbeddedMessages(@Nullable ReadableArray placementIds, Promise promise) { - IterableLogger.d(TAG, "getEmbeddedMessages for placements: " + placementIds); - - try { - List allMessages = new ArrayList<>(); - - if (placementIds == null || placementIds.size() == 0) { - // If no placement IDs provided, we need to get messages for all possible placements - // Since the Android SDK requires a placement ID, we'll use 0 as a default - // This might need to be adjusted based on the actual SDK behavior - List messages = IterableApi.getInstance().getEmbeddedManager().getMessages(0L); - if (messages != null) { - allMessages.addAll(messages); - } - } else { - // Convert ReadableArray to individual placement IDs and get messages for each - for (int i = 0; i < placementIds.size(); i++) { - long placementId = placementIds.getInt(i); - List messages = IterableApi.getInstance().getEmbeddedManager().getMessages(placementId); - if (messages != null) { - allMessages.addAll(messages); - } - } - } - - JSONArray embeddedMessageJsonArray = Serialization.serializeEmbeddedMessages(allMessages); - IterableLogger.d(TAG, "Messages for placements: " + embeddedMessageJsonArray); - - promise.resolve(Serialization.convertJsonToArray(embeddedMessageJsonArray)); - } catch (JSONException e) { - IterableLogger.e(TAG, e.getLocalizedMessage()); - promise.reject("", "Failed to fetch messages with error " + e.getLocalizedMessage()); - } - } - // --------------------------------------------------------------------------------------- // endregion } diff --git a/android/src/main/java/com/iterable/reactnative/Serialization.java b/android/src/main/java/com/iterable/reactnative/Serialization.java index 2f0c4e1ca..bace4c16c 100644 --- a/android/src/main/java/com/iterable/reactnative/Serialization.java +++ b/android/src/main/java/com/iterable/reactnative/Serialization.java @@ -138,17 +138,6 @@ static JSONArray serializeInAppMessages(List inAppMessages return inAppMessagesJson; } - static JSONArray serializeEmbeddedMessages(List embeddedMessages) { - JSONArray embeddedMessagesJson = new JSONArray(); - if (embeddedMessages != null) { - 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); From 80ec4fc37e3e2dfafff0de2dce797d2aa6ba370a Mon Sep 17 00:00:00 2001 From: Loren Posen Date: Fri, 10 Oct 2025 23:14:15 -0700 Subject: [PATCH 8/8] refactor: remove commented-out error handling in Embedded component --- example/src/components/Embedded/Embedded.tsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/example/src/components/Embedded/Embedded.tsx b/example/src/components/Embedded/Embedded.tsx index 4381cc2d1..39707e2ad 100644 --- a/example/src/components/Embedded/Embedded.tsx +++ b/example/src/components/Embedded/Embedded.tsx @@ -11,9 +11,6 @@ export const Embedded = () => { console.log(ids); setPlacementIds(ids as number[]); }); - // .catch((error) => { - // console.error(error); - // }); }, []); return (