Skip to content

Commit d695a8b

Browse files
authored
Merge pull request #739 from Iterable/jwt/MOB-12298-new-improve-logger
[MOB-12298] Improve the logger
2 parents 1eb3069 + e2c6148 commit d695a8b

File tree

8 files changed

+626
-129
lines changed

8 files changed

+626
-129
lines changed

src/__tests__/IterableInApp.test.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import { NativeEventEmitter } from 'react-native';
22

3-
import { IterableLogger } from '../core';
4-
53
import { MockRNIterableAPI } from '../__mocks__/MockRNIterableAPI';
64

75
import {
@@ -21,7 +19,6 @@ import {
2119
describe('Iterable In App', () => {
2220
beforeEach(() => {
2321
jest.clearAllMocks();
24-
Iterable.logger = new IterableLogger(new IterableConfig());
2522
});
2623

2724
test('trackInAppOpen_params_methodCalledWithParams', () => {
@@ -202,9 +199,11 @@ describe('Iterable In App', () => {
202199
// WHEN the simulated local queue is set to the in-app messages
203200
MockRNIterableAPI.setMessages(messages);
204201
// THEN Iterable.inAppManager.getMessages returns the list of in-app messages
205-
return await Iterable.inAppManager?.getMessages().then((messagesObtained) => {
206-
expect(messagesObtained).toEqual(messages);
207-
});
202+
return await Iterable.inAppManager
203+
?.getMessages()
204+
.then((messagesObtained) => {
205+
expect(messagesObtained).toEqual(messages);
206+
});
208207
});
209208

210209
test('showMessage_messageAndConsume_returnsClickedUrl', async () => {
@@ -222,9 +221,11 @@ describe('Iterable In App', () => {
222221
// WHEN the simulated clicked url is set to the clicked url
223222
MockRNIterableAPI.setClickedUrl(clickedUrl);
224223
// THEN Iterable,inAppManager.showMessage returns the simulated clicked url
225-
return await Iterable.inAppManager?.showMessage(message, consume).then((url) => {
226-
expect(url).toEqual(clickedUrl);
227-
});
224+
return await Iterable.inAppManager
225+
?.showMessage(message, consume)
226+
.then((url) => {
227+
expect(url).toEqual(clickedUrl);
228+
});
228229
});
229230

230231
test('removeMessage_params_methodCalledWithParams', () => {

src/core/classes/Iterable.test.ts

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,41 +2,32 @@ import { NativeEventEmitter, Platform } from 'react-native';
22

33
import { MockLinking } from '../../__mocks__/MockLinking';
44
import { MockRNIterableAPI } from '../../__mocks__/MockRNIterableAPI';
5-
import { IterableLogger } from '..';
65
// import from the same location that consumers import from
76
import {
87
Iterable,
98
IterableAction,
109
IterableActionContext,
1110
IterableActionSource,
1211
IterableAttributionInfo,
12+
IterableAuthResponse,
1313
IterableCommerceItem,
1414
IterableConfig,
1515
IterableDataRegion,
1616
IterableEventName,
17-
IterableLogLevel,
18-
IterableInAppMessage,
1917
IterableInAppCloseSource,
2018
IterableInAppDeleteSource,
2119
IterableInAppLocation,
20+
IterableInAppMessage,
21+
IterableInAppShowResponse,
2222
IterableInAppTrigger,
2323
IterableInAppTriggerType,
24-
IterableAuthResponse,
25-
IterableInAppShowResponse,
24+
IterableLogLevel,
2625
} from '../..';
2726
import { TestHelper } from '../../__tests__/TestHelper';
2827

29-
const getDefaultConfig = () => {
30-
const config = new IterableConfig();
31-
config.logReactNativeSdkCalls = false;
32-
return config;
33-
};
34-
3528
describe('Iterable', () => {
3629
beforeEach(() => {
3730
jest.clearAllMocks();
38-
const config = getDefaultConfig();
39-
Iterable.logger = new IterableLogger(config);
4031
});
4132

4233
afterEach(() => {
@@ -265,7 +256,7 @@ describe('Iterable', () => {
265256
expect(config.customActionHandler).toBe(undefined);
266257
expect(config.inAppHandler).toBe(undefined);
267258
expect(config.authHandler).toBe(undefined);
268-
expect(config.logLevel).toBe(IterableLogLevel.info);
259+
expect(config.logLevel).toBe(IterableLogLevel.debug);
269260
expect(config.logReactNativeSdkCalls).toBe(true);
270261
expect(config.expiringAuthTokenRefreshPeriod).toBe(60.0);
271262
expect(config.allowedProtocols).toEqual([]);
@@ -281,7 +272,7 @@ describe('Iterable', () => {
281272
expect(configDict.customActionHandlerPresent).toBe(false);
282273
expect(configDict.inAppHandlerPresent).toBe(false);
283274
expect(configDict.authHandlerPresent).toBe(false);
284-
expect(configDict.logLevel).toBe(IterableLogLevel.info);
275+
expect(configDict.logLevel).toBe(IterableLogLevel.debug);
285276
expect(configDict.expiringAuthTokenRefreshPeriod).toBe(60.0);
286277
expect(configDict.allowedProtocols).toEqual([]);
287278
expect(configDict.androidSdkUseInMemoryStorageForInApps).toBe(false);

src/core/classes/Iterable.ts

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,6 @@ const RNEventEmitter = new NativeEventEmitter(RNIterableAPI);
4242
*/
4343
/* eslint-enable tsdoc/syntax */
4444
export class Iterable {
45-
/**
46-
* Logger for the Iterable SDK
47-
* Log level is set with {@link IterableLogLevel}
48-
*/
49-
static logger: IterableLogger = new IterableLogger(new IterableConfig());
50-
5145
/**
5246
* Current configuration of the Iterable SDK
5347
*/
@@ -121,9 +115,7 @@ export class Iterable {
121115
config: IterableConfig = new IterableConfig()
122116
): Promise<boolean> {
123117
Iterable.savedConfig = config;
124-
Iterable.logger = new IterableLogger(Iterable.savedConfig);
125-
126-
this.setupEventHandlers();
118+
this.setupIterable(config);
127119

128120
const version = this.getVersionFromPackageJson();
129121

@@ -141,10 +133,7 @@ export class Iterable {
141133
config: IterableConfig = new IterableConfig(),
142134
apiEndPoint: string
143135
): Promise<boolean> {
144-
Iterable.savedConfig = config;
145-
Iterable.logger = new IterableLogger(Iterable.savedConfig);
146-
147-
this.setupEventHandlers();
136+
this.setupIterable(config);
148137

149138
const version = this.getVersionFromPackageJson();
150139

@@ -155,6 +144,22 @@ export class Iterable {
155144
});
156145
}
157146

147+
/**
148+
* @internal
149+
* Does basic setup of the Iterable SDK.
150+
* @param config - The configuration object for the Iterable SDK
151+
*/
152+
private static setupIterable(config: IterableConfig = new IterableConfig()) {
153+
if (config) {
154+
Iterable.savedConfig = config;
155+
156+
IterableLogger.setLoggingEnabled(config.logReactNativeSdkCalls ?? true);
157+
IterableLogger.setLogLevel(config.logLevel);
158+
}
159+
160+
this.setupEventHandlers();
161+
}
162+
158163
/**
159164
* Associate the current user with the passed in email parameter.
160165
*
@@ -502,7 +507,7 @@ export class Iterable {
502507
items: IterableCommerceItem[],
503508
dataFields?: unknown
504509
) {
505-
Iterable?.logger?.log('trackPurchase');
510+
IterableLogger?.log('trackPurchase');
506511

507512
IterableApi.trackPurchase({ total, items, dataFields });
508513
}
@@ -531,7 +536,7 @@ export class Iterable {
531536
location: IterableInAppLocation
532537
) {
533538
if (!message?.messageId) {
534-
Iterable?.logger?.log(
539+
IterableLogger?.log(
535540
`Skipping trackInAppOpen because message ID is required, but received ${message}.`
536541
);
537542
return;
@@ -968,9 +973,7 @@ export class Iterable {
968973
(promiseResult as IterableAuthResponse).failureCallback?.();
969974
}
970975
} else {
971-
Iterable?.logger?.log(
972-
'No callback received from native layer'
973-
);
976+
IterableLogger?.log('No callback received from native layer');
974977
}
975978
}, 1000);
976979
// Use unref() to prevent the timeout from keeping the process alive
@@ -979,12 +982,12 @@ export class Iterable {
979982
//If promise only returns string
980983
Iterable.authManager.passAlongAuthToken(promiseResult as string);
981984
} else {
982-
Iterable?.logger?.log(
985+
IterableLogger?.log(
983986
'Unexpected promise returned. Auth token expects promise of String or AuthResponse type.'
984987
);
985988
}
986989
})
987-
.catch((e) => Iterable?.logger?.log(e));
990+
.catch((e) => IterableLogger?.log(e));
988991
});
989992

990993
RNEventEmitter.addListener(
@@ -1018,7 +1021,7 @@ export class Iterable {
10181021
}
10191022
})
10201023
.catch((reason) => {
1021-
Iterable?.logger?.log('could not open url: ' + reason);
1024+
IterableLogger?.log('could not open url: ' + reason);
10221025
});
10231026
}
10241027
}

0 commit comments

Comments
 (0)