diff --git a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java index a3a301195..caef783e6 100644 --- a/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java +++ b/android/src/main/java/com/iterable/reactnative/RNIterableAPIModuleImpl.java @@ -755,12 +755,16 @@ public void getEmbeddedMessages(@Nullable ReadableArray placementIds, Promise pr 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); + // If no placement IDs provided, get messages from all placements + // Get all available placement IDs and fetch messages for each + List allPlacementIds = IterableApi.getInstance().getEmbeddedManager().getPlacementIds(); + IterableLogger.d(TAG, "Getting messages for all placement IDs: " + allPlacementIds); + + for (Long placementId : allPlacementIds) { + List messages = IterableApi.getInstance().getEmbeddedManager().getMessages(placementId); + if (messages != null) { + allMessages.addAll(messages); + } } } else { // Convert ReadableArray to individual placement IDs and get messages for each diff --git a/example/src/components/Embedded/Embedded.styles.ts b/example/src/components/Embedded/Embedded.styles.ts index 66deb7b69..bd712bacf 100644 --- a/example/src/components/Embedded/Embedded.styles.ts +++ b/example/src/components/Embedded/Embedded.styles.ts @@ -1,17 +1,10 @@ import { StyleSheet } from 'react-native'; import { button, buttonText, container, hr, link, input, title, subtitle } from '../../constants'; -import { neutrals, utilityColors, backgroundColors } from '../../constants/styles/colors'; +import { utilityColors, backgroundColors } from '../../constants/styles/colors'; const styles = StyleSheet.create({ button, - buttonDisabled: { - backgroundColor: neutrals.grey25, - opacity: 0.6, - }, buttonText, - buttonTextDisabled: { - color: neutrals.grey50, - }, container, embeddedSection: { display: 'flex', diff --git a/example/src/components/Embedded/Embedded.tsx b/example/src/components/Embedded/Embedded.tsx index 3356b9512..0abea82a0 100644 --- a/example/src/components/Embedded/Embedded.tsx +++ b/example/src/components/Embedded/Embedded.tsx @@ -1,4 +1,10 @@ -import { ScrollView, Text, TextInput, TouchableOpacity, View } from 'react-native'; +import { + ScrollView, + Text, + TextInput, + TouchableOpacity, + View, +} from 'react-native'; import { useCallback, useState } from 'react'; import { Iterable, @@ -44,19 +50,15 @@ export const Embedded = () => { }, []); const getEmbeddedMessages = useCallback(() => { - // Don't fetch if no IDs - if (parsedPlacementIds.length === 0) { - console.log('No placement IDs entered, button should be disabled'); - return; - } - console.log('Fetching messages for placement IDs:', idsToFetch); - Iterable.embeddedManager.getMessages(idsToFetch).then((messages: IterableEmbeddedMessage[]) => { + Iterable.embeddedManager + .getMessages(idsToFetch) + .then((messages: IterableEmbeddedMessage[]) => { setEmbeddedMessages(messages); console.log(messages); }); - }, [idsToFetch, parsedPlacementIds.length]); + }, [idsToFetch]); const startEmbeddedImpression = useCallback( (message: IterableEmbeddedMessage) => { @@ -96,7 +98,8 @@ export const Embedded = () => { {!Iterable.embeddedManager.isEnabled && ( - ⚠️ Embedded messaging is disabled. Please enable it in your Iterable config. + ⚠️ Embedded messaging is disabled. Please enable it in your Iterable + config. )} @@ -114,9 +117,7 @@ export const Embedded = () => { End session - - Placement IDs (comma-separated): - + Placement IDs (comma-separated): { onChangeText={setPlacementIdsInput} keyboardType="numbers-and-punctuation" /> - - + + Get messages for placement ids diff --git a/src/core/classes/Iterable.test.ts b/src/core/classes/Iterable.test.ts index 459cd2b8b..20ad805d7 100644 --- a/src/core/classes/Iterable.test.ts +++ b/src/core/classes/Iterable.test.ts @@ -1247,6 +1247,7 @@ describe('Iterable', () => { // sets up config file and onEmbeddedMessageUpdate callback const config = new IterableConfig(); config.logReactNativeSdkCalls = false; + config.enableEmbeddedMessaging = true; config.onEmbeddedMessageUpdate = jest.fn(); // initialize Iterable object Iterable.initialize('apiKey', config); @@ -1288,6 +1289,7 @@ describe('Iterable', () => { // sets up config with callback const config = new IterableConfig(); config.logReactNativeSdkCalls = false; + config.enableEmbeddedMessaging = true; config.onEmbeddedMessageUpdate = jest.fn(); // initialize Iterable object Iterable.initialize('apiKey', config); @@ -1335,6 +1337,7 @@ describe('Iterable', () => { // sets up config file and onEmbeddedMessagingDisabled callback const config = new IterableConfig(); config.logReactNativeSdkCalls = false; + config.enableEmbeddedMessaging = true; config.onEmbeddedMessagingDisabled = jest.fn(); // initialize Iterable object Iterable.initialize('apiKey', config); @@ -1376,6 +1379,7 @@ describe('Iterable', () => { // sets up config with callback const config = new IterableConfig(); config.logReactNativeSdkCalls = false; + config.enableEmbeddedMessaging = true; config.onEmbeddedMessagingDisabled = jest.fn(); // initialize Iterable object Iterable.initialize('apiKey', config); @@ -1420,6 +1424,7 @@ describe('Iterable', () => { // sets up config with both callbacks const config = new IterableConfig(); config.logReactNativeSdkCalls = false; + config.enableEmbeddedMessaging = true; config.onEmbeddedMessageUpdate = jest.fn(); config.onEmbeddedMessagingDisabled = jest.fn(); // initialize Iterable object