react-native-moengage 8.4.0 → 8.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/index.ts CHANGED
@@ -26,7 +26,8 @@ import {
26
26
  getUserAttributeJson,
27
27
  getUserLocAttributeJson,
28
28
  getPushPermissionRequestCountJson,
29
- getDeviceIdTrackingJson
29
+ getDeviceIdTrackingJson,
30
+ getInitConfigJson
30
31
  } from "./utils/MoEJsonBuilder";
31
32
  import {
32
33
  USER_ATTRIBUTE_UNIQUE_ID,
@@ -41,6 +42,11 @@ import {
41
42
  } from "./utils/MoEConstants";
42
43
  import MoESelfHandledCampaignData from "./models/MoESelfHandledCampaignData";
43
44
  import {MoEngagePermissionType} from "./models/MoEngagePermissionType";
45
+ import MoEInitConfig from "./models/MoEInitConfig";
46
+ import MoEPushConfig from "./models/MoEPushConfig";
47
+ import MoEngageLogConfig, { MoEngageLogLevel } from "./models/MoEngageLogConfig";
48
+ import MoEngageGlobalCache from "./utils/MoEngageGlobalCache";
49
+ import MoEngageLogger from "./logger/MoEngageLogger";
44
50
 
45
51
  const MoEReactBridge = require("react-native").NativeModules.MoEReactBridge;
46
52
  const PLATFORM_ANDROID = "android";
@@ -99,7 +105,11 @@ var moeAppId = "";
99
105
  if (MoEReactBridge) {
100
106
  MoeEventEmitter = new NativeEventEmitter(MoEReactBridge);
101
107
  for (var i = 0; i < eventBroadcastNames.length; i++) {
102
- handleEventBroadcast(_eventNames[i], eventBroadcastNames[i]);
108
+ let eventName = _eventNames[i];
109
+ let eventBroadcastName = eventBroadcastNames[i];
110
+ if (eventName !== undefined && eventBroadcastName !== undefined) {
111
+ handleEventBroadcast(eventName, eventBroadcastName);
112
+ }
103
113
  }
104
114
  }
105
115
 
@@ -117,10 +127,6 @@ function commonValidationCheck() {
117
127
  }
118
128
  }
119
129
 
120
- function showError(message: String) {
121
- console.error(message);
122
- }
123
-
124
130
  var ReactMoE = {
125
131
  setEventListener: function (type: any, handler: any) {
126
132
  if (!MoEReactBridge) return;
@@ -132,11 +138,18 @@ var ReactMoE = {
132
138
  _eventTypeHandler.delete(type);
133
139
  },
134
140
 
135
- initialize: function (appId:string) {
136
- moeAppId = appId;
141
+ /**
142
+ * Initialise the MoEngage SDK, once the hybrid component is mounted
143
+ *
144
+ * @param appId AppId for the application, can be found on MoEngage Dashboard
145
+ * @param initConfig instance of {@link MoEInitConfig}, works only in Android & has no effect for other plaforms.
146
+ */
147
+ initialize: function (appId: string, initConfig: MoEInitConfig = MoEInitConfig.defaultConfig()) {
148
+ moeAppId = appId;
149
+ MoEngageGlobalCache.updateInitConfig(initConfig);
137
150
  commonValidationCheck();
138
151
  if (Platform.OS == PLATFORM_ANDROID) {
139
- MoERNAndroid.initialize(getAppIdJson(appId));
152
+ MoERNAndroid.initialize(getInitConfigJson(appId, initConfig));
140
153
  } else if (Platform.OS == PLATFORM_IOS) {
141
154
  MoERNiOS.initialize(getAppIdJson(appId));
142
155
  }
@@ -151,8 +164,8 @@ var ReactMoE = {
151
164
  */
152
165
  setAppStatus: function (status: MoEAppStatus) {
153
166
  commonValidationCheck();
154
- console.log("Will track whether it is a fresh install or update.");
155
- let payload = getAppStatusJson(MoEHelper.appStatusToString(status),moeAppId);
167
+ MoEngageLogger.verbose("Will track whether it is a fresh install or update.");
168
+ let payload = getAppStatusJson(MoEHelper.appStatusToString(status), moeAppId);
156
169
  if (Platform.OS == PLATFORM_ANDROID) {
157
170
  MoERNAndroid.setAppStatus(payload);
158
171
  } else if (Platform.OS == PLATFORM_IOS) {
@@ -173,12 +186,12 @@ var ReactMoE = {
173
186
  }
174
187
 
175
188
  if (!(properties instanceof MoEProperties)) {
176
- showError("trackEvent: properties must of MoEProperties type");
189
+ MoEngageLogger.warn("trackEvent: properties must of MoEProperties type");
177
190
  return;
178
191
  }
179
192
 
180
- console.log("trackEvent with properties", properties);
181
- let payload= getMoEPropertiesJson(properties, eventName, moeAppId);
193
+ MoEngageLogger.verbose("trackEvent with properties", properties);
194
+ let payload = getMoEPropertiesJson(properties, eventName, moeAppId);
182
195
 
183
196
  if (Platform.OS == PLATFORM_ANDROID) {
184
197
  MoERNAndroid.trackEvent(payload);
@@ -193,8 +206,8 @@ var ReactMoE = {
193
206
  */
194
207
  setUserUniqueID: function (uniqueId: string) {
195
208
  commonValidationCheck();
196
- console.log("Will set unique ID: " + uniqueId);
197
- const payload = getUserAttributeJson(USER_ATTRIBUTE_UNIQUE_ID,uniqueId,GENERAL,moeAppId)
209
+ MoEngageLogger.verbose("Will set unique ID: ", uniqueId);
210
+ const payload = getUserAttributeJson(USER_ATTRIBUTE_UNIQUE_ID, uniqueId, GENERAL, moeAppId);
198
211
  if (Platform.OS == PLATFORM_ANDROID) {
199
212
  MoERNAndroid.setUserAttribute(payload);
200
213
  } else if (Platform.OS == PLATFORM_IOS) {
@@ -208,8 +221,8 @@ var ReactMoE = {
208
221
  */
209
222
  setAlias: function (alias: string) {
210
223
  commonValidationCheck();
211
- console.log("Will set alias: " + alias);
212
- let payload = getAliasJson(alias,moeAppId);
224
+ MoEngageLogger.verbose("Will set alias: ", alias);
225
+ let payload = getAliasJson(alias, moeAppId);
213
226
  if (Platform.OS == PLATFORM_ANDROID) {
214
227
  MoERNAndroid.setAlias(payload);
215
228
  } else if (Platform.OS == PLATFORM_IOS) {
@@ -223,8 +236,8 @@ var ReactMoE = {
223
236
  */
224
237
  setUserName: function (userName: string) {
225
238
  commonValidationCheck();
226
- console.log("Will set username: " + userName);
227
- const payload = getUserAttributeJson(USER_ATTRIBUTE_USER_NAME,userName,GENERAL,moeAppId)
239
+ MoEngageLogger.verbose("Will set username: ", userName);
240
+ const payload = getUserAttributeJson(USER_ATTRIBUTE_USER_NAME, userName, GENERAL, moeAppId);
228
241
 
229
242
  if (Platform.OS == PLATFORM_ANDROID) {
230
243
  MoERNAndroid.setUserAttribute(payload);
@@ -239,8 +252,8 @@ var ReactMoE = {
239
252
  */
240
253
  setUserFirstName: function (firstName: string) {
241
254
  commonValidationCheck();
242
- console.log("Will set first name: " + firstName);
243
- const payload = getUserAttributeJson(USER_ATTRIBUTE_USER_FIRST_NAME,firstName,GENERAL,moeAppId)
255
+ MoEngageLogger.verbose("Will set first name: ", firstName);
256
+ const payload = getUserAttributeJson(USER_ATTRIBUTE_USER_FIRST_NAME, firstName, GENERAL, moeAppId);
244
257
 
245
258
  if (Platform.OS == PLATFORM_ANDROID) {
246
259
  MoERNAndroid.setUserAttribute(payload);
@@ -255,8 +268,8 @@ var ReactMoE = {
255
268
  */
256
269
  setUserLastName: function (lastName: string) {
257
270
  commonValidationCheck();
258
- console.log("Will set last name: " + lastName);
259
- const payload = getUserAttributeJson(USER_ATTRIBUTE_USER_LAST_NAME,lastName,GENERAL,moeAppId)
271
+ MoEngageLogger.verbose("Will set last name: ", lastName);
272
+ const payload = getUserAttributeJson(USER_ATTRIBUTE_USER_LAST_NAME, lastName, GENERAL, moeAppId);
260
273
 
261
274
  if (Platform.OS == PLATFORM_ANDROID) {
262
275
  MoERNAndroid.setUserAttribute(payload);
@@ -271,8 +284,8 @@ var ReactMoE = {
271
284
  */
272
285
  setUserEmailID: function (emailId: string) {
273
286
  commonValidationCheck();
274
- console.log("Will set email-id " + emailId);
275
- const payload = getUserAttributeJson(USER_ATTRIBUTE_USER_EMAIL,emailId,GENERAL,moeAppId)
287
+ MoEngageLogger.verbose("Will set email-id ", emailId);
288
+ const payload = getUserAttributeJson(USER_ATTRIBUTE_USER_EMAIL, emailId, GENERAL, moeAppId);
276
289
 
277
290
  if (Platform.OS == PLATFORM_ANDROID) {
278
291
  MoERNAndroid.setUserAttribute(payload);
@@ -287,8 +300,8 @@ var ReactMoE = {
287
300
  */
288
301
  setUserContactNumber: function (mobileNumber: string) {
289
302
  commonValidationCheck();
290
- console.log("Will set Mobile Number: " + mobileNumber);
291
- const payload = getUserAttributeJson(USER_ATTRIBUTE_USER_MOBILE,mobileNumber,GENERAL,moeAppId)
303
+ MoEngageLogger.verbose("Will set Mobile Number: ", mobileNumber);
304
+ const payload = getUserAttributeJson(USER_ATTRIBUTE_USER_MOBILE, mobileNumber, GENERAL, moeAppId)
292
305
 
293
306
  if (Platform.OS == PLATFORM_ANDROID) {
294
307
  MoERNAndroid.setUserAttribute(payload);
@@ -303,8 +316,8 @@ var ReactMoE = {
303
316
  */
304
317
  setUserBirthday: function (birthday: string) {
305
318
  commonValidationCheck();
306
- console.log("Will set birthday: " + birthday);
307
- const payload = getUserAttributeJson(USER_ATTRIBUTE_USER_BDAY,birthday,TIMESTAMP,moeAppId)
319
+ MoEngageLogger.verbose("Will set birthday: ", birthday);
320
+ const payload = getUserAttributeJson(USER_ATTRIBUTE_USER_BDAY, birthday, TIMESTAMP, moeAppId);
308
321
 
309
322
  if (Platform.OS == PLATFORM_ANDROID) {
310
323
  MoERNAndroid.setUserAttribute(payload);
@@ -319,9 +332,8 @@ var ReactMoE = {
319
332
  */
320
333
  setUserGender: function (gender: Object) {
321
334
  commonValidationCheck();
322
- console.log("Will set gender: " + gender);
323
-
324
- const payload = getUserAttributeJson(USER_ATTRIBUTE_USER_GENDER,gender,GENERAL,moeAppId)
335
+ MoEngageLogger.verbose("Will set gender: ", gender);
336
+ const payload = getUserAttributeJson(USER_ATTRIBUTE_USER_GENDER, gender, GENERAL, moeAppId);
325
337
 
326
338
  if (Platform.OS == PLATFORM_ANDROID) {
327
339
  MoERNAndroid.setUserAttribute(payload);
@@ -337,10 +349,10 @@ var ReactMoE = {
337
349
  setUserLocation: function (location: MoEGeoLocation) {
338
350
  commonValidationCheck();
339
351
  if (!(location instanceof MoEGeoLocation)) {
340
- showError("setUserLocation: location must of type MoEGeoLocation");
352
+ MoEngageLogger.warn("setUserLocation: location must of type MoEGeoLocation");
341
353
  return;
342
354
  }
343
- const payload = getUserLocAttributeJson(USER_ATTRIBUTE_USER_LOCATION,location.latitude,location.longitude,moeAppId)
355
+ const payload = getUserLocAttributeJson(USER_ATTRIBUTE_USER_LOCATION, location.latitude, location.longitude, moeAppId);
344
356
 
345
357
  if (Platform.OS == PLATFORM_ANDROID) {
346
358
  MoERNAndroid.setUserAttribute(payload);
@@ -356,13 +368,13 @@ var ReactMoE = {
356
368
  */
357
369
  setUserAttribute: function (userAttributeName: string, userAttributeValue: Object) {
358
370
  commonValidationCheck();
359
- console.log(
371
+ MoEngageLogger.verbose(
360
372
  "Will track user attribute [attributeName]: " +
361
373
  userAttributeName +
362
374
  " attributeValue: " +
363
375
  userAttributeValue
364
376
  );
365
- const payload = getUserAttributeJson(userAttributeName,userAttributeValue,GENERAL,moeAppId)
377
+ const payload = getUserAttributeJson(userAttributeName, userAttributeValue, GENERAL, moeAppId);
366
378
 
367
379
  if (Platform.OS == PLATFORM_ANDROID) {
368
380
  MoERNAndroid.setUserAttribute(payload);
@@ -381,7 +393,7 @@ var ReactMoE = {
381
393
  date: String
382
394
  ) {
383
395
  commonValidationCheck();
384
- const payload = getUserAttributeJson(attributeName,date,TIMESTAMP,moeAppId)
396
+ const payload = getUserAttributeJson(attributeName, date, TIMESTAMP, moeAppId);
385
397
 
386
398
  if (Platform.OS == PLATFORM_ANDROID) {
387
399
  MoERNAndroid.setUserAttribute(payload);
@@ -401,12 +413,10 @@ var ReactMoE = {
401
413
  ) {
402
414
  commonValidationCheck();
403
415
  if (!(location instanceof MoEGeoLocation)) {
404
- showError(
405
- "setUserAttributeWithLocation: location must of type MoEGeoLocation"
406
- );
416
+ MoEngageLogger.warn("setUserAttributeWithLocation: location must of type MoEGeoLocation");
407
417
  return;
408
418
  }
409
- const payload = getUserLocAttributeJson(userAttributeName,location.latitude,location.longitude,moeAppId)
419
+ const payload = getUserLocAttributeJson(userAttributeName, location.latitude, location.longitude, moeAppId);
410
420
 
411
421
  if (Platform.OS == PLATFORM_ANDROID) {
412
422
  MoERNAndroid.setUserAttribute(payload);
@@ -420,7 +430,7 @@ var ReactMoE = {
420
430
  */
421
431
  logout: function () {
422
432
  commonValidationCheck();
423
- console.log("Will logout user");
433
+ MoEngageLogger.verbose("Will logout user");
424
434
  if (Platform.OS == PLATFORM_ANDROID) {
425
435
  MoERNAndroid.logout(getAppIdJson(moeAppId));
426
436
  } else if (Platform.OS == PLATFORM_IOS) {
@@ -433,7 +443,7 @@ var ReactMoE = {
433
443
  */
434
444
  showInApp: function () {
435
445
  commonValidationCheck();
436
- console.log("Will try to show in-app.");
446
+ MoEngageLogger.verbose("Will try to show in-app.");
437
447
  if (Platform.OS == PLATFORM_ANDROID) {
438
448
  MoERNAndroid.showInApp(getAppIdJson(moeAppId));
439
449
  } else if (Platform.OS == PLATFORM_IOS) {
@@ -460,12 +470,10 @@ var ReactMoE = {
460
470
  selfHandledShown: function (inAppCampaign: MoESelfHandledCampaignData) {
461
471
  commonValidationCheck();
462
472
  if (!(inAppCampaign instanceof MoESelfHandledCampaignData)) {
463
- showError(
464
- "selfHandledShown: inAppCampaign must of MoESelfHandledCampaignData type"
465
- );
473
+ MoEngageLogger.warn("selfHandledShown: inAppCampaign must of MoESelfHandledCampaignData type");
466
474
  return;
467
475
  }
468
- let campaignJson = getSelfHandledJson(inAppCampaign,"impression",moeAppId);
476
+ let campaignJson = getSelfHandledJson(inAppCampaign, "impression", moeAppId);
469
477
  if (Platform.OS == PLATFORM_ANDROID) {
470
478
  MoERNAndroid.selfHandledShown(campaignJson);
471
479
  } else if (Platform.OS == PLATFORM_IOS) {
@@ -480,12 +488,10 @@ var ReactMoE = {
480
488
  selfHandledClicked: function (moEClickData: MoESelfHandledCampaignData) {
481
489
  commonValidationCheck();
482
490
  if (!(moEClickData instanceof MoESelfHandledCampaignData)) {
483
- showError(
484
- "selfHandledClicked: inAppCampaign must of MoEClickData type"
485
- );
491
+ MoEngageLogger.warn("selfHandledClicked: inAppCampaign must of MoEClickData type");
486
492
  return;
487
493
  }
488
- let campaignJson = getSelfHandledJson(moEClickData,"click",moeAppId);
494
+ let campaignJson = getSelfHandledJson(moEClickData, "click", moeAppId);
489
495
  if (Platform.OS == PLATFORM_ANDROID) {
490
496
  MoERNAndroid.selfHandledClicked(campaignJson);
491
497
  } else if (Platform.OS == PLATFORM_IOS) {
@@ -500,12 +506,10 @@ var ReactMoE = {
500
506
  selfHandledDismissed: function (inAppCampaign: MoESelfHandledCampaignData) {
501
507
  commonValidationCheck();
502
508
  if (!(inAppCampaign instanceof MoESelfHandledCampaignData)) {
503
- showError(
504
- "selfHandledDismissed: inAppCampaign must of MoESelfHandledCampaignData type"
505
- );
509
+ MoEngageLogger.warn("selfHandledDismissed: inAppCampaign must of MoESelfHandledCampaignData type");
506
510
  return;
507
511
  }
508
- let campaignJson = getSelfHandledJson(inAppCampaign,"dismissed",moeAppId);
512
+ let campaignJson = getSelfHandledJson(inAppCampaign, "dismissed", moeAppId);
509
513
  if (Platform.OS == PLATFORM_ANDROID) {
510
514
  MoERNAndroid.selfHandledDismissed(campaignJson);
511
515
  } else if (Platform.OS == PLATFORM_IOS) {
@@ -520,12 +524,10 @@ var ReactMoE = {
520
524
  setCurrentContext: function (contexts: Array<String>) {
521
525
  commonValidationCheck();
522
526
  if (!MoEHelper.validateArrayOfString(contexts)) {
523
- showError(
524
- "setCurrentContext: contexts must be a non empty array of strings"
525
- );
527
+ MoEngageLogger.warn("setCurrentContext: contexts must be a non empty array of strings");
526
528
  return;
527
529
  }
528
- let payload = getInAppContextJson(contexts,moeAppId);
530
+ let payload = getInAppContextJson(contexts, moeAppId);
529
531
  if (Platform.OS == PLATFORM_ANDROID) {
530
532
  MoERNAndroid.setAppContext(payload);
531
533
  } else if (Platform.OS == PLATFORM_IOS) {
@@ -553,13 +555,13 @@ var ReactMoE = {
553
555
  */
554
556
  passFcmPushToken: function (pushToken: string) {
555
557
  commonValidationCheck();
556
- console.log("Will process push token");
557
- let payload = getMoEPushTokenJson(pushToken,PUSH_SERVICE_FCM,PLATFORM_ANDROID,moeAppId);
558
+ MoEngageLogger.verbose("Will process push token");
559
+ let payload = getMoEPushTokenJson(pushToken, PUSH_SERVICE_FCM, PLATFORM_ANDROID, moeAppId);
558
560
 
559
561
  if (Platform.OS == PLATFORM_ANDROID) {
560
562
  MoERNAndroid.passFcmPushToken(payload);
561
563
  } else {
562
- console.log("This api is not supported on iOS platform.");
564
+ MoEngageLogger.debug("This api is not supported on iOS platform.");
563
565
  }
564
566
  },
565
567
  /**
@@ -570,13 +572,13 @@ var ReactMoE = {
570
572
  */
571
573
  passFcmPushPayload: function (pushPayload: object) {
572
574
  commonValidationCheck();
573
- console.log("Will process push payload.");
574
- let payload = getMoEPushCampaignJson(pushPayload,PUSH_SERVICE_FCM,moeAppId)
575
+ MoEngageLogger.verbose("Will process push payload.");
576
+ let payload = getMoEPushCampaignJson(pushPayload, PUSH_SERVICE_FCM, moeAppId);
575
577
 
576
578
  if (Platform.OS == PLATFORM_ANDROID) {
577
579
  MoERNAndroid.passFcmPushPayload(payload);
578
580
  } else {
579
- console.log("This api is not supported on iOS platform.");
581
+ MoEngageLogger.debug("This api is not supported on iOS platform.");
580
582
  }
581
583
  },
582
584
 
@@ -585,9 +587,9 @@ var ReactMoE = {
585
587
  */
586
588
  registerForPush: function () {
587
589
  commonValidationCheck();
588
- console.log("Will registerForPush");
590
+ MoEngageLogger.verbose("Will registerForPush");
589
591
  if (Platform.OS == PLATFORM_ANDROID) {
590
- console.log("This api is not supported on android platform.");
592
+ MoEngageLogger.debug("This api is not supported on android platform.");
591
593
  } else if (Platform.OS == PLATFORM_IOS) {
592
594
  MoERNiOS.registerForPush();
593
595
  }
@@ -598,9 +600,9 @@ var ReactMoE = {
598
600
  */
599
601
  disableInbox: function () {
600
602
  commonValidationCheck();
601
- console.log("Will disableInbox");
603
+ MoEngageLogger.verbose("Will disableInbox");
602
604
  if (Platform.OS == PLATFORM_ANDROID) {
603
- console.log("This api is not supported on android platform.");
605
+ MoEngageLogger.debug("This api is not supported on android platform.");
604
606
  } else if (Platform.OS == PLATFORM_IOS) {
605
607
  MoERNiOS.disableInbox(getAppIdJson(moeAppId));
606
608
  }
@@ -618,8 +620,8 @@ var ReactMoE = {
618
620
  },
619
621
 
620
622
  optOutDataTracking: function (shouldOptOutDataTracking: boolean) {
621
- console.log("Will opt out data tracking");
622
- let payload = getOptOutTrackingJson("data",shouldOptOutDataTracking,moeAppId);
623
+ MoEngageLogger.verbose("Will opt out data tracking");
624
+ let payload = getOptOutTrackingJson("data", shouldOptOutDataTracking, moeAppId);
623
625
  if (Platform.OS == PLATFORM_ANDROID) {
624
626
  MoERNAndroid.optOutDataTracking(payload);
625
627
  } else if (Platform.OS == PLATFORM_IOS) {
@@ -635,19 +637,19 @@ var ReactMoE = {
635
637
  */
636
638
  passPushKitPushToken: function (pushToken: string) {
637
639
  commonValidationCheck();
638
- console.log("Will process push-kit push token");
639
- let payload = getMoEPushTokenJson(pushToken,PUSH_SERVICE_PUSH_KIT,PLATFORM_ANDROID,moeAppId);
640
+ MoEngageLogger.verbose("Will process push-kit push token");
641
+ let payload = getMoEPushTokenJson(pushToken, PUSH_SERVICE_PUSH_KIT, PLATFORM_ANDROID, moeAppId);
640
642
 
641
643
  if (Platform.OS == PLATFORM_ANDROID) {
642
644
  MoERNAndroid.passPushKitPushToken(payload);
643
645
  } else {
644
- console.log("This api is not supported on iOS platform.");
646
+ MoEngageLogger.debug("This api is not supported on iOS platform.");
645
647
  }
646
648
  },
647
649
 
648
650
  enableSdk: function () {
649
- console.log("Will enable SDK");
650
- let payload = getSdkStateJson(true,moeAppId)
651
+ MoEngageLogger.verbose("Will enable SDK");
652
+ let payload = getSdkStateJson(true, moeAppId);
651
653
  if (Platform.OS == PLATFORM_ANDROID) {
652
654
  MoERNAndroid.updateSdkState(payload);
653
655
  } else if (Platform.OS == PLATFORM_IOS) {
@@ -656,8 +658,8 @@ var ReactMoE = {
656
658
  },
657
659
 
658
660
  disableSdk: function () {
659
- console.log("Will disable SDK");
660
- let payload = getSdkStateJson(false,moeAppId)
661
+ MoEngageLogger.verbose("Will disable SDK");
662
+ let payload = getSdkStateJson(false, moeAppId);
661
663
 
662
664
  if (Platform.OS == PLATFORM_ANDROID) {
663
665
  MoERNAndroid.updateSdkState(payload);
@@ -667,7 +669,7 @@ var ReactMoE = {
667
669
  },
668
670
 
669
671
  onOrientationChanged: function () {
670
- console.log("Will process screen rotation.");
672
+ MoEngageLogger.verbose("Will process screen rotation.");
671
673
  if (Platform.OS == PLATFORM_ANDROID) {
672
674
  MoERNAndroid.onOrientationChanged();
673
675
  }
@@ -677,8 +679,8 @@ var ReactMoE = {
677
679
  * API to enable Advertising Id tracking for Android.
678
680
  */
679
681
  enableAdIdTracking: function () {
680
- console.log("Will enable advertising-id tracking");
681
- let payload = getAdIdTrackingJson(true,moeAppId);
682
+ MoEngageLogger.verbose("Will enable advertising-id tracking");
683
+ let payload = getAdIdTrackingJson(true, moeAppId);
682
684
 
683
685
  if (Platform.OS == PLATFORM_ANDROID) {
684
686
  MoERNAndroid.enableAdIdTracking(payload);
@@ -692,8 +694,8 @@ var ReactMoE = {
692
694
  * Advertising Id tracking at some point.
693
695
  */
694
696
  disableAdIdTracking: function () {
695
- console.log("Will disable advertising-id tracking");
696
- let payload = getAdIdTrackingJson(false,moeAppId);
697
+ MoEngageLogger.verbose("Will disable advertising-id tracking");
698
+ let payload = getAdIdTrackingJson(false, moeAppId);
697
699
 
698
700
  if (Platform.OS == PLATFORM_ANDROID) {
699
701
  MoERNAndroid.disableAdIdTracking(payload);
@@ -704,8 +706,8 @@ var ReactMoE = {
704
706
  * API to enable Android Id tracking for Android.
705
707
  */
706
708
  enableAndroidIdTracking: function () {
707
- console.log("Will enable android-id tracking");
708
- let payload = getAndroidIdTrackingJson(true,moeAppId);
709
+ MoEngageLogger.verbose("Will enable android-id tracking");
710
+ let payload = getAndroidIdTrackingJson(true, moeAppId);
709
711
 
710
712
  if (Platform.OS == PLATFORM_ANDROID) {
711
713
  MoERNAndroid.enableAndroidIdTracking(payload);
@@ -719,8 +721,8 @@ var ReactMoE = {
719
721
  * Advertising Id tracking at some point.
720
722
  */
721
723
  disableAndroidIdTracking: function () {
722
- console.log("Will disable android-id tracking");
723
- let payload = getAndroidIdTrackingJson(false,moeAppId);
724
+ MoEngageLogger.verbose("Will disable android-id tracking");
725
+ let payload = getAndroidIdTrackingJson(false, moeAppId);
724
726
 
725
727
  if (Platform.OS == PLATFORM_ANDROID) {
726
728
  MoERNAndroid.disableAndroidIdTracking(payload);
@@ -728,28 +730,28 @@ var ReactMoE = {
728
730
  },
729
731
 
730
732
  pushPermissionResponseAndroid: function (isGranted: boolean) {
731
- console.log("Will track permission response");
733
+ MoEngageLogger.verbose("Will track permission response");
732
734
  if (Platform.OS == PLATFORM_ANDROID) {
733
735
  MoERNAndroid.permissionResponse(isGranted, MoEngagePermissionType.PUSH)
734
736
  }
735
737
  },
736
738
 
737
739
  setupNotificationChannelsAndroid: function () {
738
- console.log("Will setup notification");
740
+ MoEngageLogger.verbose("Will setup notification");
739
741
  if (Platform.OS == PLATFORM_ANDROID) {
740
742
  MoERNAndroid.setupNotificationChannels();
741
743
  }
742
744
  },
743
745
 
744
746
  navigateToSettingsAndroid: function () {
745
- console.log("Will navigate to settings");
747
+ MoEngageLogger.verbose("Will navigate to settings");
746
748
  if (Platform.OS == PLATFORM_ANDROID) {
747
749
  MoERNAndroid.navigateToSettings();
748
750
  }
749
751
  },
750
752
 
751
753
  requestPushPermissionAndroid: function () {
752
- console.log("Will request push permission.");
754
+ MoEngageLogger.verbose("Will request push permission.");
753
755
  if (Platform.OS == PLATFORM_ANDROID) {
754
756
  MoERNAndroid.requestPushPermission();
755
757
  }
@@ -762,7 +764,7 @@ var ReactMoE = {
762
764
  * @param {number} count - number of times push permission requested
763
765
  */
764
766
  updatePushPermissionRequestCountAndroid: function (count: number) {
765
- console.log("Will increment push permission request count");
767
+ MoEngageLogger.verbose("Will increment push permission request count");
766
768
  let payload = getPushPermissionRequestCountJson(count, moeAppId);
767
769
 
768
770
  if (Platform.OS == PLATFORM_ANDROID) {
@@ -776,7 +778,7 @@ var ReactMoE = {
776
778
  * Note: By default Device Id tracking is enabled
777
779
  */
778
780
  enableDeviceIdTracking: function () {
779
- console.log("Will enable device id tracking");
781
+ MoEngageLogger.verbose("Will enable device id tracking");
780
782
  let payload = getDeviceIdTrackingJson(true, moeAppId);
781
783
 
782
784
  if (Platform.OS == PLATFORM_ANDROID) {
@@ -788,7 +790,7 @@ var ReactMoE = {
788
790
  * API to disable Device Id tracking for Android.
789
791
  */
790
792
  disableDeviceIdTracking: function () {
791
- console.log("Will disable device id tracking");
793
+ MoEngageLogger.verbose("Will disable device id tracking");
792
794
  let payload = getDeviceIdTrackingJson(false, moeAppId);
793
795
 
794
796
  if (Platform.OS == PLATFORM_ANDROID) {
@@ -805,5 +807,10 @@ export {
805
807
  MoEGeoLocation,
806
808
  MoEProperties,
807
809
  MoEAppStatus,
810
+ MoEInitConfig,
811
+ MoEPushConfig,
812
+ MoEngageLogConfig,
813
+ MoEngageLogLevel,
814
+ MoEngageLogger
808
815
  };
809
816
  export default ReactMoE;
@@ -0,0 +1,77 @@
1
+ import MoEngageGlobalCache from "../utils/MoEngageGlobalCache";
2
+ import { MoEngageLogLevel } from "../models/MoEngageLogConfig";
3
+
4
+ /**
5
+ * Logger to print the ReactNative Plugin log
6
+ * Notes: To Configure the log check {@link MoEInitConfig}
7
+ */
8
+ namespace MoEngageLogger {
9
+
10
+ function isLoggable(logLevel: MoEngageLogLevel): boolean {
11
+ return (__DEV__ || MoEngageGlobalCache.getInitConfig().logConfig.isEnabledForReleaseBuild)
12
+ && MoEngageGlobalCache.getInitConfig().logConfig.logLevel >= logLevel;
13
+ }
14
+
15
+ /**
16
+ * Console error log
17
+ *
18
+ * @param {any} message - log message which need to be logged
19
+ * @param {any} data - additional message or data
20
+ */
21
+ export function error(message: any, data?: any): void {
22
+ if (!isLoggable(MoEngageLogLevel.ERROR)) return;
23
+ if (data === undefined) console.error(message);
24
+ else console.error(message, data);
25
+ }
26
+
27
+ /**
28
+ * Console warn log
29
+ *
30
+ * @param {any} message - log message which need to be logged
31
+ * @param {any} data - additional message or data
32
+ */
33
+ export function warn(message: any, data?: any): void {
34
+ if (!isLoggable(MoEngageLogLevel.WARN)) return;
35
+ if (data === undefined) console.warn(message);
36
+ else console.warn(message, data);
37
+ }
38
+
39
+ /**
40
+ * Console info log
41
+ *
42
+ * @param {any} message - log message which need to be logged
43
+ * @param {any} data - additional message or data
44
+ */
45
+ export function info(message: any, data?: any): void {
46
+ if (!isLoggable(MoEngageLogLevel.INFO)) return;
47
+ if (data === undefined) console.info(message);
48
+ else console.info(message, data);
49
+ }
50
+
51
+ /**
52
+ * Console debug log
53
+ *
54
+ * @param {any} message - log message which need to be logged
55
+ * @param {any} data - additional message or data
56
+ */
57
+ export function debug(message: any, data?: any): void {
58
+ if (!isLoggable(MoEngageLogLevel.DEBUG)) return;
59
+ if (data === undefined) console.debug(message);
60
+ else console.debug(message, data);
61
+ }
62
+
63
+ /**
64
+ * Console verbose log
65
+ * Notes: On Console it will be clubbed with debug log
66
+ *
67
+ * @param {any} message - log message which need to be logged
68
+ * @param {any} data - additional message or data
69
+ */
70
+ export function verbose(message: any, data?: any): void {
71
+ if (!isLoggable(MoEngageLogLevel.VERBOSE)) return;
72
+ if (data === undefined) console.debug(message);
73
+ else console.debug(message, data);
74
+ }
75
+ }
76
+
77
+ export default MoEngageLogger;
@@ -0,0 +1,36 @@
1
+ import MoEngageLogConfig from "./MoEngageLogConfig";
2
+ import MoEPushConfig from "./MoEPushConfig";
3
+
4
+ /**
5
+ * Config class for MoEngage SDK
6
+ * Note: This Config is only for Android platform and is a no-operation method for other plaforms.
7
+ */
8
+ export default class MoEInitConfig {
9
+
10
+ pushConfig: MoEPushConfig = MoEPushConfig.defaultConfig();
11
+
12
+ logConfig: MoEngageLogConfig = MoEngageLogConfig.defaultConfig();
13
+
14
+ /**
15
+ * Create an instance of {@link MoEInitConfig}
16
+ *
17
+ * @param pushConfig instance of {@link MoEPushConfig}
18
+ * @param logConfig instance of {@link MoEngageLogConfig}
19
+ */
20
+ constructor(pushConfig: MoEPushConfig = MoEPushConfig.defaultConfig(),
21
+ logConfig: MoEngageLogConfig = MoEngageLogConfig.defaultConfig()
22
+ ) {
23
+ this.pushConfig = pushConfig;
24
+ this.logConfig = logConfig;
25
+ }
26
+
27
+ /**
28
+ * Default Config for {@link MoEInitConfig}
29
+ */
30
+ static defaultConfig() {
31
+ return new MoEInitConfig(
32
+ MoEPushConfig.defaultConfig(),
33
+ MoEngageLogConfig.defaultConfig()
34
+ );
35
+ }
36
+ }