Skip to content

Commit 59da91a

Browse files
committed
Merge branch 'loren/embedded/MOB-12261-add-embedded-manager-class' into loren/embedded/MOB-12263-android-add-ability-to-sync-embedded-messages
2 parents 2a5ac95 + 92c8c9e commit 59da91a

5 files changed

Lines changed: 106 additions & 21 deletions

File tree

example/src/hooks/useIterableApp.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,8 @@ export const IterableAppProvider: FunctionComponent<
194194

195195
config.logLevel = IterableLogLevel.debug;
196196

197+
config.enableEmbeddedMessaging = true;
198+
197199
config.inAppHandler = () => IterableInAppShowResponse.show;
198200

199201
if (

src/core/classes/Iterable.test.ts

Lines changed: 35 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -300,37 +300,39 @@ describe('Iterable', () => {
300300
// WHEN config is initialized
301301
const config = new IterableConfig();
302302
// THEN config has default values
303-
expect(config.pushIntegrationName).toBe(undefined);
303+
expect(config.allowedProtocols).toEqual([]);
304+
expect(config.androidSdkUseInMemoryStorageForInApps).toBe(false);
305+
expect(config.authHandler).toBe(undefined);
304306
expect(config.autoPushRegistration).toBe(true);
305307
expect(config.checkForDeferredDeeplink).toBe(false);
306-
expect(config.inAppDisplayInterval).toBe(30.0);
307-
expect(config.urlHandler).toBe(undefined);
308308
expect(config.customActionHandler).toBe(undefined);
309+
expect(config.dataRegion).toBe(IterableDataRegion.US);
310+
expect(config.enableEmbeddedMessaging).toBe(false);
311+
expect(config.encryptionEnforced).toBe(false);
312+
expect(config.expiringAuthTokenRefreshPeriod).toBe(60.0);
313+
expect(config.inAppDisplayInterval).toBe(30.0);
309314
expect(config.inAppHandler).toBe(undefined);
310-
expect(config.authHandler).toBe(undefined);
311315
expect(config.logLevel).toBe(IterableLogLevel.debug);
312316
expect(config.logReactNativeSdkCalls).toBe(true);
313-
expect(config.expiringAuthTokenRefreshPeriod).toBe(60.0);
314-
expect(config.allowedProtocols).toEqual([]);
315-
expect(config.androidSdkUseInMemoryStorageForInApps).toBe(false);
317+
expect(config.pushIntegrationName).toBe(undefined);
318+
expect(config.urlHandler).toBe(undefined);
316319
expect(config.useInMemoryStorageForInApps).toBe(false);
317-
expect(config.dataRegion).toBe(IterableDataRegion.US);
318-
expect(config.encryptionEnforced).toBe(false);
319320
const configDict = config.toDict();
320-
expect(configDict.pushIntegrationName).toBe(undefined);
321+
expect(configDict.allowedProtocols).toEqual([]);
322+
expect(configDict.androidSdkUseInMemoryStorageForInApps).toBe(false);
323+
expect(configDict.authHandlerPresent).toBe(false);
321324
expect(configDict.autoPushRegistration).toBe(true);
322-
expect(configDict.inAppDisplayInterval).toBe(30.0);
323-
expect(configDict.urlHandlerPresent).toBe(false);
324325
expect(configDict.customActionHandlerPresent).toBe(false);
326+
expect(configDict.dataRegion).toBe(IterableDataRegion.US);
327+
expect(configDict.enableEmbeddedMessaging).toBe(false);
328+
expect(configDict.encryptionEnforced).toBe(false);
329+
expect(configDict.expiringAuthTokenRefreshPeriod).toBe(60.0);
330+
expect(configDict.inAppDisplayInterval).toBe(30.0);
325331
expect(configDict.inAppHandlerPresent).toBe(false);
326-
expect(configDict.authHandlerPresent).toBe(false);
327332
expect(configDict.logLevel).toBe(IterableLogLevel.debug);
328-
expect(configDict.expiringAuthTokenRefreshPeriod).toBe(60.0);
329-
expect(configDict.allowedProtocols).toEqual([]);
330-
expect(configDict.androidSdkUseInMemoryStorageForInApps).toBe(false);
333+
expect(configDict.pushIntegrationName).toBe(undefined);
334+
expect(configDict.urlHandlerPresent).toBe(false);
331335
expect(configDict.useInMemoryStorageForInApps).toBe(false);
332-
expect(configDict.dataRegion).toBe(IterableDataRegion.US);
333-
expect(configDict.encryptionEnforced).toBe(false);
334336
});
335337
});
336338

@@ -1212,4 +1214,19 @@ describe('Iterable', () => {
12121214
});
12131215
});
12141216
});
1217+
1218+
describe('embeddedManager', () => {
1219+
it('should be disabled by default', () => {
1220+
const config = new IterableConfig();
1221+
expect(config.enableEmbeddedMessaging).toBe(false);
1222+
expect(Iterable.embeddedManager.isEnabled).toBe(false);
1223+
});
1224+
1225+
it('should enable embeddedManager when config is set', async () => {
1226+
const config = new IterableConfig();
1227+
config.enableEmbeddedMessaging = true;
1228+
await Iterable.initialize('test-key', config);
1229+
expect(Iterable.embeddedManager.isEnabled).toBe(true);
1230+
});
1231+
});
12151232
});

src/core/classes/Iterable.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ export class Iterable {
196196
IterableLogger.setLogLevel(config.logLevel);
197197

198198
Iterable.embeddedManager.setEnabled(
199-
config.enableEmbeddedMessaging === true
199+
config.enableEmbeddedMessaging ?? false
200200
);
201201
}
202202

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import { IterableEmbeddedManager } from './IterableEmbeddedManager';
2+
3+
describe('IterableEmbeddedManager', () => {
4+
let embeddedManager: IterableEmbeddedManager;
5+
6+
beforeEach(() => {
7+
embeddedManager = new IterableEmbeddedManager();
8+
});
9+
10+
describe('isEnabled', () => {
11+
it('should be false by default', () => {
12+
expect(embeddedManager.isEnabled).toBe(false);
13+
});
14+
15+
it('should return true after being enabled', () => {
16+
embeddedManager.setEnabled(true);
17+
expect(embeddedManager.isEnabled).toBe(true);
18+
});
19+
20+
it('should return false after being disabled', () => {
21+
embeddedManager.setEnabled(false);
22+
expect(embeddedManager.isEnabled).toBe(false);
23+
});
24+
});
25+
26+
describe('setEnabled', () => {
27+
it('should enable the embedded manager', () => {
28+
embeddedManager.setEnabled(true);
29+
expect(embeddedManager.isEnabled).toBe(true);
30+
});
31+
32+
it('should disable the embedded manager', () => {
33+
embeddedManager.setEnabled(false);
34+
expect(embeddedManager.isEnabled).toBe(false);
35+
});
36+
37+
it('should toggle enabled state multiple times', () => {
38+
embeddedManager.setEnabled(true);
39+
expect(embeddedManager.isEnabled).toBe(true);
40+
41+
embeddedManager.setEnabled(false);
42+
expect(embeddedManager.isEnabled).toBe(false);
43+
44+
embeddedManager.setEnabled(true);
45+
expect(embeddedManager.isEnabled).toBe(true);
46+
});
47+
48+
it('should handle setting the same state multiple times', () => {
49+
embeddedManager.setEnabled(true);
50+
embeddedManager.setEnabled(true);
51+
expect(embeddedManager.isEnabled).toBe(true);
52+
53+
embeddedManager.setEnabled(false);
54+
embeddedManager.setEnabled(false);
55+
expect(embeddedManager.isEnabled).toBe(false);
56+
});
57+
});
58+
});
59+

src/embedded/classes/IterableEmbeddedManager.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,22 @@ export class IterableEmbeddedManager {
1515
/**
1616
* Whether the embedded manager is enabled.
1717
*/
18-
isEnabled = false;
18+
private _isEnabled = false;
19+
20+
/**
21+
* Gets whether the embedded manager is enabled.
22+
*/
23+
get isEnabled(): boolean {
24+
return this._isEnabled;
25+
}
1926

2027
/**
2128
* Sets whether the embedded manager is enabled.
2229
*
2330
* @param enabled - Whether the embedded manager is enabled.
2431
*/
2532
setEnabled(enabled: boolean) {
26-
this.isEnabled = enabled;
33+
this._isEnabled = enabled;
2734
}
2835

2936
/**

0 commit comments

Comments
 (0)