Skip to content

Commit d67c1ed

Browse files
committed
feat: add getEmbeddedMessages method to RNIterableAPIModule for embedded messaging support
1 parent a6a45ed commit d67c1ed

5 files changed

Lines changed: 53 additions & 2 deletions

File tree

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

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -634,6 +634,37 @@ public void sendEvent(@NonNull String eventName, @Nullable Object eventData) {
634634
public void onInboxUpdated() {
635635
sendEvent(EventName.receivedIterableInboxChanged.name(), null);
636636
}
637+
638+
// ---------------------------------------------------------------------------------------
639+
// endregion
640+
641+
// ---------------------------------------------------------------------------------------
642+
// region Embedded messaging
643+
644+
645+
public void getEmbeddedMessages(Integer placementId, Promise promise) {
646+
IterableLogger.d(TAG, "getEmbeddedMessages for placement: " + placementId);
647+
648+
try {
649+
JSONArray embeddedMessageJsonArray = Serialization.serializeEmbeddedMessages(IterableApi.getInstance().getEmbeddedManager().getMessages(placementId));
650+
IterableLogger.d(TAG, "Messages for placement: " + embeddedMessageJsonArray);
651+
652+
promise.resolve(Serialization.convertJsonToArray(embeddedMessageJsonArray));
653+
} catch (JSONException e) {
654+
IterableLogger.e(TAG, e.getLocalizedMessage());
655+
promise.reject("", "Failed to fetch messages with error " + e.getLocalizedMessage());
656+
}
657+
}
658+
659+
private JSONObject createTestPlacement(int placementId) throws JSONException {
660+
JSONObject placement = new JSONObject();
661+
placement.put("placementId", placementId);
662+
return placement;
663+
}
664+
665+
666+
// ---------------------------------------------------------------------------------------
667+
// endregion
637668
}
638669

639670
enum EventName {

android/src/newarch/java/com/RNIterableAPIModule.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,4 +231,9 @@ public void sendEvent(@NonNull String eventName, @Nullable Object eventData) {
231231
public void onInboxUpdated() {
232232
moduleImpl.onInboxUpdated();
233233
}
234+
235+
@Override
236+
public void getEmbeddedMessages(Integer placementId, Promise promise) {
237+
moduleImpl.getEmbeddedMessages(placementId, promise);
238+
}
234239
}

android/src/oldarch/java/com/RNIterableAPIModule.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,10 @@ public void pauseAuthRetries(boolean pauseRetry) {
228228
moduleImpl.pauseAuthRetries(pauseRetry);
229229
}
230230

231+
@ReactMethod
232+
public void getEmbeddedMessages(Integer placementId, Promise promise) {
233+
moduleImpl.getEmbeddedMessages(placementId, promise);
234+
}
231235

232236
public void sendEvent(@NonNull String eventName, @Nullable Object eventData) {
233237
moduleImpl.sendEvent(eventName, eventData);

example/android/gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
3232
# your application. You should enable this flag either if you want
3333
# to write custom TurboModules/Fabric components OR use libraries that
3434
# are providing them.
35-
newArchEnabled=true
35+
newArchEnabled=false
3636

3737
# Use this property to enable or disable the Hermes JS engine.
3838
# If set to false, you will be using JSC instead.
3939
hermesEnabled=true
4040

4141
# Needed for react-native-webview
4242
# See: https://github.com/react-native-webview/react-native-webview/blob/HEAD/docs/Getting-Started.md
43-
android.enableJetifier=true
43+
android.enableJetifier=true

src/api/NativeRNIterableAPI.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,17 @@ export interface Spec extends TurboModule {
118118
passAlongAuthToken(authToken?: string | null): void;
119119
pauseAuthRetries(pauseRetry: boolean): void;
120120

121+
// Embedded messaging
122+
getEmbeddedMessages(placementIds: number[] | null): Promise<
123+
Promise<
124+
{
125+
metadata: { [key: string]: string | number | boolean };
126+
elements: { [key: string]: string | number | boolean };
127+
payload: { [key: string]: string | number | boolean };
128+
}[]
129+
>
130+
>;
131+
121132
// Wake app -- android only
122133
wakeApp(): void;
123134

0 commit comments

Comments
 (0)