Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -755,12 +755,16 @@ public void getEmbeddedMessages(@Nullable ReadableArray placementIds, Promise pr
List<IterableEmbeddedMessage> 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<IterableEmbeddedMessage> 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<Long> allPlacementIds = IterableApi.getInstance().getEmbeddedManager().getPlacementIds();
IterableLogger.d(TAG, "Getting messages for all placement IDs: " + allPlacementIds);

for (Long placementId : allPlacementIds) {
List<IterableEmbeddedMessage> messages = IterableApi.getInstance().getEmbeddedManager().getMessages(placementId);
if (messages != null) {
allMessages.addAll(messages);
}
}
} else {
// Convert ReadableArray to individual placement IDs and get messages for each
Expand Down
9 changes: 1 addition & 8 deletions example/src/components/Embedded/Embedded.styles.ts
Original file line number Diff line number Diff line change
@@ -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',
Expand Down
41 changes: 16 additions & 25 deletions example/src/components/Embedded/Embedded.tsx
Original file line number Diff line number Diff line change
@@ -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,
Expand Down Expand Up @@ -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) => {
Expand Down Expand Up @@ -96,7 +98,8 @@ export const Embedded = () => {
{!Iterable.embeddedManager.isEnabled && (
<View style={styles.warningContainer}>
<Text style={styles.warningText}>
⚠️ Embedded messaging is disabled. Please enable it in your Iterable config.
⚠️ Embedded messaging is disabled. Please enable it in your Iterable
config.
</Text>
</View>
)}
Expand All @@ -114,9 +117,7 @@ export const Embedded = () => {
<Text style={styles.buttonText}>End session</Text>
</TouchableOpacity>
<View style={styles.inputContainer}>
<Text style={styles.text}>
Placement IDs (comma-separated):
</Text>
<Text style={styles.text}>Placement IDs (comma-separated):</Text>
<TextInput
style={styles.textInput}
placeholder="e.g., 1, 2, 3"
Expand All @@ -125,18 +126,8 @@ export const Embedded = () => {
onChangeText={setPlacementIdsInput}
keyboardType="numbers-and-punctuation"
/>
<TouchableOpacity
style={[
styles.button,
parsedPlacementIds.length === 0 && styles.buttonDisabled
]}
onPress={getEmbeddedMessages}
disabled={parsedPlacementIds.length === 0}
>
<Text style={[
styles.buttonText,
parsedPlacementIds.length === 0 && styles.buttonTextDisabled
]}>
<TouchableOpacity style={styles.button} onPress={getEmbeddedMessages}>
<Text style={styles.buttonText}>
Get messages for placement ids
</Text>
</TouchableOpacity>
Expand Down
5 changes: 5 additions & 0 deletions src/core/classes/Iterable.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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
Expand Down