Skip to content

Commit 760a9e3

Browse files
committed
feat: add syncEmbeddedMessages method
1 parent cbb547f commit 760a9e3

7 files changed

Lines changed: 55 additions & 0 deletions

File tree

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -651,6 +651,11 @@ public void onInboxUpdated() {
651651
// ---------------------------------------------------------------------------------------
652652
// region Embedded messaging
653653

654+
public void syncEmbeddedMessages() {
655+
IterableLogger.d(TAG, "syncEmbeddedMessages");
656+
IterableApi.getInstance().getEmbeddedManager().syncMessages();
657+
}
658+
654659
public void startEmbeddedSession() {
655660
IterableLogger.d(TAG, "startEmbeddedSession");
656661
IterableApi.getInstance().getEmbeddedManager().getEmbeddedSessionManager().startSession();

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,11 @@ public void pauseAuthRetries(boolean pauseRetry) {
224224
moduleImpl.pauseAuthRetries(pauseRetry);
225225
}
226226

227+
@Override
228+
public void syncEmbeddedMessages() {
229+
moduleImpl.syncEmbeddedMessages();
230+
}
231+
227232
@Override
228233
public void startEmbeddedSession() {
229234
moduleImpl.startEmbeddedSession();

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

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

231+
@ReactMethod
232+
public void syncEmbeddedMessages() {
233+
moduleImpl.syncEmbeddedMessages();
234+
}
235+
231236
@ReactMethod
232237
public void startEmbeddedSession() {
233238
moduleImpl.startEmbeddedSession();

example/src/components/Embedded/Embedded.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ import styles from './Embedded.styles';
66

77
export const Embedded = () => {
88
const [placementIds, setPlacementIds] = useState<number[]>([]);
9+
10+
const syncEmbeddedMessages = useCallback(() => {
11+
Iterable.embeddedManager.syncMessages();
12+
}, []);
13+
914
const getPlacementIds = useCallback(() => {
1015
Iterable.embeddedManager.getPlacementIds().then((ids: unknown) => {
1116
console.log(ids);
@@ -40,6 +45,9 @@ export const Embedded = () => {
4045
<Text style={styles.text}>
4146
Placement ids: [{placementIds.join(', ')}]
4247
</Text>
48+
<TouchableOpacity style={styles.button} onPress={syncEmbeddedMessages}>
49+
<Text style={styles.buttonText}>Sync embedded messages</Text>
50+
</TouchableOpacity>
4351
<TouchableOpacity style={styles.button} onPress={getPlacementIds}>
4452
<Text style={styles.buttonText}>Get placement ids</Text>
4553
</TouchableOpacity>

src/api/NativeRNIterableAPI.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ export interface Spec extends TurboModule {
119119
pauseAuthRetries(pauseRetry: boolean): void;
120120

121121
// Embedded Messaging
122+
syncEmbeddedMessages(): void;
122123
startEmbeddedSession(): void;
123124
endEmbeddedSession(): void;
124125
getEmbeddedPlacementIds(): Promise<number[]>;

src/core/classes/IterableApi.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,14 @@ export class IterableApi {
510510
// ======================= EMBEDDED ===================== //
511511
// ====================================================== //
512512

513+
/**
514+
* Syncs embedded local cache with the server.
515+
*/
516+
static syncEmbeddedMessages() {
517+
IterableLogger.log('syncEmbeddedMessages');
518+
return RNIterableAPI.syncEmbeddedMessages();
519+
}
520+
513521
/**
514522
* Starts an embedded session.
515523
*/

src/embedded/classes/IterableEmbeddedManager.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,29 @@ export class IterableEmbeddedManager {
2020
*/
2121
isEnabled = false;
2222

23+
/**
24+
* Syncs embedded local cache with the server.
25+
*
26+
* When your app first launches, and each time it comes to the foreground,
27+
* Iterable's iOS SDK automatically refresh a local, on-device cache of
28+
* embedded messages for the signed-in user. These are the messages the
29+
* signed-in user is eligible to see.
30+
*
31+
* At key points during your app's lifecycle, you may want to manually refresh
32+
* your app's local cache of embedded messages. For example, as users navigate
33+
* around, on pull-to-refresh, etc.
34+
*
35+
* However, do not poll for new embedded messages at a regular interval.
36+
*
37+
* @example
38+
* ```typescript
39+
* IterableEmbeddedManager.syncMessages();
40+
* ```
41+
*/
42+
syncMessages() {
43+
return IterableApi.syncEmbeddedMessages();
44+
}
45+
2346
/**
2447
* Retrieves a list of placement IDs for the embedded manager.
2548
*

0 commit comments

Comments
 (0)