Skip to content
Draft
8 changes: 8 additions & 0 deletions example/src/components/Embedded/Embedded.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
import { Text, View } from 'react-native';
import { Iterable } from '@iterable/react-native-sdk';

import styles from './Embedded.styles';

export const Embedded = () => {
return (
<View style={styles.container}>
<Text style={styles.text}>EMBEDDED</Text>
<Text style={styles.text}>
Does embedded class exist? {Iterable.embeddedManager ? 'Yes' : 'No'}
</Text>
<Text style={styles.text}>
Is embedded manager enabled?{' '}
{Iterable.embeddedManager.isEnabled ? 'Yes' : 'No'}
</Text>
</View>
);
};
Expand Down
26 changes: 26 additions & 0 deletions src/core/classes/Iterable.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import { IterableAuthResponse } from './IterableAuthResponse';
import type { IterableCommerceItem } from './IterableCommerceItem';
import { IterableConfig } from './IterableConfig';
import { IterableLogger } from './IterableLogger';
import { IterableEmbeddedManager } from '../../embedded/classes/IterableEmbeddedManager';

const RNEventEmitter = new NativeEventEmitter(RNIterableAPI);

Expand Down Expand Up @@ -79,6 +80,27 @@ export class Iterable {
*/
static authManager: IterableAuthManager = new IterableAuthManager();

/**
* Embedded message manager for the current user.
*
* This property provides access to embedded message functionality including
* retrieving messages, displaying messages, removing messages, and more.
*
* **Documentation**
* - [Embedded Messaging Overview](https://support.iterable.com/hc/en-us/articles/23060529977364-Embedded-Messaging-Overview)
* - [Android Embedded Messaging](https://support.iterable.com/hc/en-us/articles/23061877893652-Embedded-Messages-with-Iterable-s-Android-SDK)
* - [iOS Embedded Messaging](https://support.iterable.com/hc/en-us/articles/23061840746900-Embedded-Messages-with-Iterable-s-iOS-SDK)
*
* @example
* ```typescript
* Iterable.embeddedManager.getMessages().then(messages => {
* console.log('Messages:', messages);
* });
* ```
*/
static embeddedManager: IterableEmbeddedManager =
new IterableEmbeddedManager();

/**
* Initializes the Iterable React Native SDK in your app's Javascript or Typescript code.
*
Expand Down Expand Up @@ -155,6 +177,10 @@ export class Iterable {

IterableLogger.setLoggingEnabled(config.logReactNativeSdkCalls ?? true);
IterableLogger.setLogLevel(config.logLevel);

Iterable.embeddedManager.setEnabled(
config.embeddedMessagingEnabled === true
);
}

this.setupEventHandlers();
Expand Down
11 changes: 11 additions & 0 deletions src/core/classes/IterableConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,16 @@ export class IterableConfig {
*/
encryptionEnforced = false;

/**
* Should the SDK enable and use embedded messaging?
*
* **Documentation**
* - [Embedded Messaging Overview](https://support.iterable.com/hc/en-us/articles/23060529977364-Embedded-Messaging-Overview)
* - [Android Embedded Messaging](https://support.iterable.com/hc/en-us/articles/23061877893652-Embedded-Messages-with-Iterable-s-Android-SDK)
* - [iOS Embedded Messaging](https://support.iterable.com/hc/en-us/articles/23061840746900-Embedded-Messages-with-Iterable-s-iOS-SDK)
*/
embeddedMessagingEnabled = false;

/**
* Converts the IterableConfig instance to a dictionary object.
*
Expand Down Expand Up @@ -368,6 +378,7 @@ export class IterableConfig {
pushPlatform: this.pushPlatform,
encryptionEnforced: this.encryptionEnforced,
retryPolicy: this.retryPolicy,
embeddedMessagingEnabled: this.embeddedMessagingEnabled,
};
}
}
26 changes: 26 additions & 0 deletions src/embedded/classes/IterableEmbeddedManager.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/**
* Manages embedded messages from Iterable.
*
* Provides embedded message functionality including retrieving messages,
* displaying messages, removing messages, and more.
*
* **Documentation**
* - [Embedded Messaging Overview](https://support.iterable.com/hc/en-us/articles/23060529977364-Embedded-Messaging-Overview)
* - [Android Embedded Messaging](https://support.iterable.com/hc/en-us/articles/23061877893652-Embedded-Messages-with-Iterable-s-Android-SDK)
* - [iOS Embedded Messaging](https://support.iterable.com/hc/en-us/articles/23061840746900-Embedded-Messages-with-Iterable-s-iOS-SDK)
*/
export class IterableEmbeddedManager {
/**
* Whether the embedded manager is enabled.
*/
isEnabled = false;

/**
* Sets whether the embedded manager is enabled.
*
* @param enabled - Whether the embedded manager is enabled.
*/
setEnabled(enabled: boolean) {
this.isEnabled = enabled;
}
}
1 change: 1 addition & 0 deletions src/embedded/classes/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './IterableEmbeddedManager';
1 change: 1 addition & 0 deletions src/embedded/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './classes';
1 change: 1 addition & 0 deletions src/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -59,3 +59,4 @@ export {
type IterableInboxProps,
type IterableInboxRowViewModel,
} from './inbox';
export { IterableEmbeddedManager } from './embedded';