Skip to content

Commit d812d07

Browse files
author
Evan Greer
committed
feat: adds getEmbeddedPlacements to native layers
1 parent 1fc84c5 commit d812d07

3 files changed

Lines changed: 57 additions & 1 deletion

File tree

android/src/main/java/com/iterable/reactnative/RNIterableAPIModule.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,36 @@ public void updateVisibleRows(ReadableArray visibleRows) {
482482
// ---------------------------------------------------------------------------------------
483483
// endregion
484484

485+
// ---------------------------------------------------------------------------------------
486+
// region Embedded APIs
487+
488+
@ReactMethod
489+
public void getEmbeddedPlacements(Promise promise) {
490+
IterableLogger.d(TAG, "getEmbeddedPlacements");
491+
492+
// Create test data
493+
JSONArray testPlacements = new JSONArray();
494+
try {
495+
// Test placement 1
496+
JSONObject placement1 = new JSONObject();
497+
placement1.put("placementId", "test_placement_1");
498+
testPlacements.put(placement1);
499+
500+
// Test placement 2
501+
JSONObject placement2 = new JSONObject();
502+
placement2.put("placementId", "test_placement_2");
503+
testPlacements.put(placement2);
504+
505+
promise.resolve(Serialization.convertJsonToArray(testPlacements));
506+
} catch (JSONException e) {
507+
508+
promise.reject("", "Failed to create test placements");
509+
}
510+
}
511+
512+
// ---------------------------------------------------------------------------------------
513+
// endregion
514+
485515
// ---------------------------------------------------------------------------------------
486516
// region Private Serialization Functions
487517

ios/RNIterableAPI/ReactIterableAPI.swift

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,22 @@ class ReactIterableAPI: RCTEventEmitter {
470470

471471
inboxSessionManager.updateVisibleRows(visibleRows: serializedRows)
472472
}
473+
474+
// MARK: - SDK Embedded Manager Functions
475+
476+
@objc(getEmbeddedPlacements:rejecter:)
477+
func getEmbeddedPlacements(resolver: @escaping RCTPromiseResolveBlock,
478+
rejecter: @escaping RCTPromiseRejectBlock) {
479+
ITBInfo()
480+
481+
// Create test data
482+
let testPlacements: [[String: Any]] = [
483+
["placementId": "test_placement_1"],
484+
["placementId": "test_placement_2"]
485+
]
486+
487+
resolver(testPlacements)
488+
}
473489

474490
// MARK: - SDK Auth Manager Functions
475491

@@ -481,7 +497,7 @@ class ReactIterableAPI: RCTEventEmitter {
481497

482498
authHandlerSemaphore.signal()
483499
}
484-
500+
485501
// MARK: Private
486502
private var shouldEmit = false
487503
private let _methodQueue = DispatchQueue(label: String(describing: ReactIterableAPI.self))

src/embedded/classes/IterableEmbeddedManager.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,17 @@ import { IterableEmbeddedPlacement } from './IterableEmbeddedPlacement';
55

66
const RNIterableAPI = NativeModules.RNIterableAPI;
77

8+
/**
9+
* Manages embedded messages for the current user.
10+
*
11+
* This class provides methods to interact with embedded messages, including retrieving placements.
12+
*/
813
export class IterableEmbeddedManager {
14+
/**
15+
* Retrieve the current user's list of embedded placements.
16+
*
17+
* @returns A Promise that resolves to an array of embedded placements.
18+
*/
919
getPlacements(): Promise<IterableEmbeddedPlacement[]> {
1020
Iterable?.logger?.log('EmbeddedManager.getPlacements');
1121

0 commit comments

Comments
 (0)