From d812d07e8dd642233642ba49d877192ac11efbc6 Mon Sep 17 00:00:00 2001 From: Evan Greer Date: Wed, 21 May 2025 15:41:34 -0600 Subject: [PATCH 1/2] feat: adds getEmbeddedPlacements to native layers --- .../reactnative/RNIterableAPIModule.java | 30 +++++++++++++++++++ ios/RNIterableAPI/ReactIterableAPI.swift | 18 ++++++++++- .../classes/IterableEmbeddedManager.ts | 10 +++++++ 3 files changed, 57 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java index 9b0bed33a..65e75b9f9 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java @@ -482,6 +482,36 @@ public void updateVisibleRows(ReadableArray visibleRows) { // --------------------------------------------------------------------------------------- // endregion + // --------------------------------------------------------------------------------------- + // region Embedded APIs + + @ReactMethod + public void getEmbeddedPlacements(Promise promise) { + IterableLogger.d(TAG, "getEmbeddedPlacements"); + + // Create test data + JSONArray testPlacements = new JSONArray(); + try { + // Test placement 1 + JSONObject placement1 = new JSONObject(); + placement1.put("placementId", "test_placement_1"); + testPlacements.put(placement1); + + // Test placement 2 + JSONObject placement2 = new JSONObject(); + placement2.put("placementId", "test_placement_2"); + testPlacements.put(placement2); + + promise.resolve(Serialization.convertJsonToArray(testPlacements)); + } catch (JSONException e) { + + promise.reject("", "Failed to create test placements"); + } + } + + // --------------------------------------------------------------------------------------- + // endregion + // --------------------------------------------------------------------------------------- // region Private Serialization Functions diff --git a/ios/RNIterableAPI/ReactIterableAPI.swift b/ios/RNIterableAPI/ReactIterableAPI.swift index 4db314f20..5831fd47e 100644 --- a/ios/RNIterableAPI/ReactIterableAPI.swift +++ b/ios/RNIterableAPI/ReactIterableAPI.swift @@ -470,6 +470,22 @@ class ReactIterableAPI: RCTEventEmitter { inboxSessionManager.updateVisibleRows(visibleRows: serializedRows) } + + // MARK: - SDK Embedded Manager Functions + + @objc(getEmbeddedPlacements:rejecter:) + func getEmbeddedPlacements(resolver: @escaping RCTPromiseResolveBlock, + rejecter: @escaping RCTPromiseRejectBlock) { + ITBInfo() + + // Create test data + let testPlacements: [[String: Any]] = [ + ["placementId": "test_placement_1"], + ["placementId": "test_placement_2"] + ] + + resolver(testPlacements) + } // MARK: - SDK Auth Manager Functions @@ -481,7 +497,7 @@ class ReactIterableAPI: RCTEventEmitter { authHandlerSemaphore.signal() } - + // MARK: Private private var shouldEmit = false private let _methodQueue = DispatchQueue(label: String(describing: ReactIterableAPI.self)) diff --git a/src/embedded/classes/IterableEmbeddedManager.ts b/src/embedded/classes/IterableEmbeddedManager.ts index 3d1a91686..e570d7500 100644 --- a/src/embedded/classes/IterableEmbeddedManager.ts +++ b/src/embedded/classes/IterableEmbeddedManager.ts @@ -5,7 +5,17 @@ import { IterableEmbeddedPlacement } from './IterableEmbeddedPlacement'; const RNIterableAPI = NativeModules.RNIterableAPI; +/** + * Manages embedded messages for the current user. + * + * This class provides methods to interact with embedded messages, including retrieving placements. + */ export class IterableEmbeddedManager { + /** + * Retrieve the current user's list of embedded placements. + * + * @returns A Promise that resolves to an array of embedded placements. + */ getPlacements(): Promise { Iterable?.logger?.log('EmbeddedManager.getPlacements'); From 8b16063b1f9f94adb5fb6e03330cd48d7ecfd422 Mon Sep 17 00:00:00 2001 From: Evan Greer Date: Wed, 21 May 2025 15:51:39 -0600 Subject: [PATCH 2/2] feat: adds getEmbeddedPlacements to RNIterableAPI --- ios/RNIterableAPI/RNIterableAPI.m | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ios/RNIterableAPI/RNIterableAPI.m b/ios/RNIterableAPI/RNIterableAPI.m index 8850c755a..68c90b76c 100644 --- a/ios/RNIterableAPI/RNIterableAPI.m +++ b/ios/RNIterableAPI/RNIterableAPI.m @@ -133,6 +133,11 @@ @interface RCT_EXTERN_REMAP_MODULE(RNIterableAPI, ReactIterableAPI, NSObject) RCT_EXTERN_METHOD(updateVisibleRows: (nonnull NSArray *) visibleRows) +// MARK: - SDK Embedded Manager Functions + +RCT_EXTERN_METHOD(getEmbeddedPlacements: (RCTPromiseResolveBlock) resolve + rejecter: (RCTPromiseRejectBlock) reject) + // MARK: - SDK Auth Manager Functions RCT_EXTERN_METHOD(passAlongAuthToken: (NSString *) authToken)