Skip to content

Commit bae7dbf

Browse files
committed
feat: update getEmbeddedMessages method to accept multiple placement IDs
1 parent a4fe2ac commit bae7dbf

5 files changed

Lines changed: 44 additions & 9 deletions

File tree

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

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
import java.util.Map;
4747
import java.util.HashMap;
4848
import java.util.List;
49+
import java.util.ArrayList;
4950
import java.util.concurrent.CountDownLatch;
5051
import java.util.concurrent.TimeUnit;
5152

@@ -646,12 +647,33 @@ public void onInboxUpdated() {
646647
// region Embedded messaging
647648

648649

649-
public void getEmbeddedMessages(Integer placementId, Promise promise) {
650-
IterableLogger.d(TAG, "getEmbeddedMessages for placement: " + placementId);
650+
public void getEmbeddedMessages(@Nullable ReadableArray placementIds, Promise promise) {
651+
IterableLogger.d(TAG, "getEmbeddedMessages for placements: " + placementIds);
651652

652653
try {
653-
JSONArray embeddedMessageJsonArray = Serialization.serializeEmbeddedMessages(IterableApi.getInstance().getEmbeddedManager().getMessages(placementId));
654-
IterableLogger.d(TAG, "Messages for placement: " + embeddedMessageJsonArray);
654+
List<IterableEmbeddedMessage> allMessages = new ArrayList<>();
655+
656+
if (placementIds == null || placementIds.size() == 0) {
657+
// If no placement IDs provided, we need to get messages for all possible placements
658+
// Since the Android SDK requires a placement ID, we'll use 0 as a default
659+
// This might need to be adjusted based on the actual SDK behavior
660+
List<IterableEmbeddedMessage> messages = IterableApi.getInstance().getEmbeddedManager().getMessages(0L);
661+
if (messages != null) {
662+
allMessages.addAll(messages);
663+
}
664+
} else {
665+
// Convert ReadableArray to individual placement IDs and get messages for each
666+
for (int i = 0; i < placementIds.size(); i++) {
667+
long placementId = placementIds.getInt(i);
668+
List<IterableEmbeddedMessage> messages = IterableApi.getInstance().getEmbeddedManager().getMessages(placementId);
669+
if (messages != null) {
670+
allMessages.addAll(messages);
671+
}
672+
}
673+
}
674+
675+
JSONArray embeddedMessageJsonArray = Serialization.serializeEmbeddedMessages(allMessages);
676+
IterableLogger.d(TAG, "Messages for placements: " + embeddedMessageJsonArray);
655677

656678
promise.resolve(Serialization.convertJsonToArray(embeddedMessageJsonArray));
657679
} catch (JSONException e) {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ public void onInboxUpdated() {
233233
}
234234

235235
@Override
236-
public void getEmbeddedMessages(Integer placementId, Promise promise) {
237-
moduleImpl.getEmbeddedMessages(placementId, promise);
236+
public void getEmbeddedMessages(@Nullable ReadableArray placementIds, Promise promise) {
237+
moduleImpl.getEmbeddedMessages(placementIds, promise);
238238
}
239239
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,8 +229,8 @@ public void pauseAuthRetries(boolean pauseRetry) {
229229
}
230230

231231
@ReactMethod
232-
public void getEmbeddedMessages(Integer placementId, Promise promise) {
233-
moduleImpl.getEmbeddedMessages(placementId, promise);
232+
public void getEmbeddedMessages(@Nullable ReadableArray placementIds, Promise promise) {
233+
moduleImpl.getEmbeddedMessages(placementIds, promise);
234234
}
235235

236236
public void sendEvent(@NonNull String eventName, @Nullable Object eventData) {

example/src/components/User/User.tsx

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Iterable } from '@iterable/react-native-sdk';
2-
import { useEffect, useState } from 'react';
2+
import { useCallback, useEffect, useState } from 'react';
33
import { Text, TouchableOpacity, View } from 'react-native';
44

55
import { useIterableApp } from '../../hooks';
@@ -17,13 +17,22 @@ export const User = () => {
1717
}
1818
}, [isLoggedIn]);
1919

20+
const getEmbeddedMessages = useCallback(() => {
21+
Iterable.getEmbeddedMessages().then((messages: unknown) => {
22+
console.log(messages);
23+
});
24+
}, []);
25+
2026
return (
2127
<View style={styles.container}>
2228
<Text style={styles.appName}>Welcome Iterator</Text>
2329
<Text style={styles.text}>Logged in as {loggedInAs}</Text>
2430
<TouchableOpacity style={styles.button} onPress={logout}>
2531
<Text style={styles.buttonText}>Logout</Text>
2632
</TouchableOpacity>
33+
<TouchableOpacity style={styles.button} onPress={getEmbeddedMessages}>
34+
<Text style={styles.buttonText}>Get embedded messages</Text>
35+
</TouchableOpacity>
2736
</View>
2837
);
2938
};

src/core/classes/Iterable.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -918,6 +918,10 @@ export class Iterable {
918918
);
919919
}
920920

921+
static getEmbeddedMessages(placementIds?: number[] | null) {
922+
return IterableApi.getEmbeddedMessages(placementIds ?? null);
923+
}
924+
921925
/**
922926
* Sets up event handlers for various Iterable events.
923927
*

0 commit comments

Comments
 (0)