@convivainc/conviva-react-native-appanalytics 0.1.5 → 0.2.0

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/CHANGELOG.md CHANGED
@@ -1,6 +1,12 @@
1
1
 
2
2
  # Changelog
3
3
 
4
+ ## 0.2.0 (06/SEP/2024)
5
+ - Introduces API for setting the conviva identifier
6
+ - Internal enhancements for the Android Bridge
7
+ *This feature needs the Android App SDK version of [0.9.5](https://github.com/Conviva/conviva-android-appanalytics)*
8
+ *This feature needs the iOS App SDK version of [0.2.30](https://github.com/Conviva/conviva-ios-appanalytics)*
9
+
4
10
  ## 0.1.5 (07/JUN/2024)
5
11
  - Supports trackCustomEvent with JSONObject argument for [iOS Bridge](https://github.com/Conviva/conviva-ios-appanalytics)
6
12
 
package/README.md CHANGED
@@ -133,7 +133,6 @@ let App = withReactNavigationAutotrack(autocaptureNavigationTrack)(AppNavigator)
133
133
 
134
134
 
135
135
  ## Custom event tracking to track your application specific events and state changes
136
- <strong>_*** Note: Supported only in Android right now ***_<br></strong><br>
137
136
  Use trackCustomEvent() API to track all kinds of events. This API provides 2 fields to describe the tracked events.
138
137
 
139
138
  eventName - Name of the custom event. (Mandatory)
@@ -22,7 +22,6 @@ import com.conviva.apptracker.event.ScreenView;
22
22
  import com.conviva.apptracker.event.SelfDescribing;
23
23
  import com.conviva.apptracker.event.Structured;
24
24
  import com.conviva.apptracker.event.Timing;
25
- import com.conviva.apptracker.globalcontexts.GlobalContext;
26
25
  import com.conviva.apptracker.internal.constants.TrackerConstants;
27
26
  import com.conviva.apptracker.network.CollectorCookieJar;
28
27
  import com.conviva.apptracker.network.HttpMethod;
@@ -89,8 +88,6 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
89
88
  if (networkConfig.hasKey("customPostPath") && !networkConfig.isNull("customPostPath")) {
90
89
  String customPostPath = networkConfig.getString("customPostPath");
91
90
  networkConfiguration.customPostPath = customPostPath;
92
- } else {
93
- networkConfiguration.customPostPath = (customerKey + "/" + TrackerConstants.CONVIVA_PROTOCOL_VERSION);
94
91
  }
95
92
  if (networkConfig.hasKey("requestHeaders") && !networkConfig.isNull("requestHeaders")) {
96
93
  ReadableMap requestHeaders = networkConfig.getMap("requestHeaders");
@@ -180,8 +177,11 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
180
177
  try {
181
178
  String namespace = details.getString("tracker");
182
179
  TrackerController trackerController = getTracker(namespace);
183
-
184
- promise.resolve(ConvivaAppAnalytics.removeTracker(trackerController));
180
+ if (trackerController != null) {
181
+ promise.resolve(ConvivaAppAnalytics.removeTracker(trackerController));
182
+ } else {
183
+ promise.reject("ERROR", "TrackerController is null");
184
+ }
185
185
 
186
186
  } catch (Throwable t) {
187
187
  promise.reject("ERROR", t.getMessage());
@@ -200,23 +200,45 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
200
200
  }
201
201
  }
202
202
 
203
+ @ReactMethod
204
+ public void setClientId(ReadableMap argmap, Promise promise) {
205
+ try {
206
+ promise.resolve(ConvivaAppAnalytics.setClientId(this.reactContext, argmap.getString("clientId")));
207
+ } catch (Throwable t) {
208
+ promise.reject("ERROR", t.getMessage());
209
+ }
210
+ }
211
+
212
+ @ReactMethod
213
+ public void getClientId(Promise promise) {
214
+ try {
215
+ promise.resolve(ConvivaAppAnalytics.getClientId(this.reactContext));
216
+ } catch (Throwable t) {
217
+ promise.reject("ERROR", t.getMessage());
218
+ }
219
+ }
220
+
203
221
  @ReactMethod
204
222
  public void trackSelfDescribingEvent(ReadableMap details, Promise promise) {
205
223
  try {
206
224
  String namespace = details.getString("tracker");
207
- ReadableMap argmap = details.getMap("eventData");
208
- ReadableArray contexts = details.getArray("contexts");
209
-
210
225
  TrackerController trackerController = getTracker(namespace);
226
+ if (trackerController != null) {
227
+ ReadableMap argmap = details.getMap("eventData");
228
+ ReadableArray contexts = details.getArray("contexts");
211
229
 
212
- SelfDescribingJson sdj = EventUtil.createSelfDescribingJson(argmap);
213
- SelfDescribing event = new SelfDescribing(sdj);
214
230
 
215
- List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
216
- event.customContexts.addAll(evCtxts);
231
+ SelfDescribingJson sdj = EventUtil.createSelfDescribingJson(argmap);
232
+ SelfDescribing event = new SelfDescribing(sdj);
217
233
 
218
- trackerController.track(event);
219
- promise.resolve(true);
234
+ List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
235
+ event.customContexts.addAll(evCtxts);
236
+
237
+ trackerController.track(event);
238
+ promise.resolve(true);
239
+ } else {
240
+ promise.reject("ERROR", "TrackerController is null");
241
+ }
220
242
 
221
243
  } catch (Throwable t) {
222
244
  promise.reject("ERROR", t.getMessage());
@@ -227,18 +249,23 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
227
249
  public void trackStructuredEvent(ReadableMap details, Promise promise) {
228
250
  try {
229
251
  String namespace = details.getString("tracker");
230
- ReadableMap argmap = details.getMap("eventData");
231
- ReadableArray contexts = details.getArray("contexts");
232
-
233
252
  TrackerController trackerController = getTracker(namespace);
253
+ if (trackerController != null) {
234
254
 
235
- Structured event = EventUtil.createStructuredEvent(argmap);
255
+ ReadableMap argmap = details.getMap("eventData");
256
+ ReadableArray contexts = details.getArray("contexts");
236
257
 
237
- List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
238
- event.customContexts.addAll(evCtxts);
239
258
 
240
- trackerController.track(event);
241
- promise.resolve(true);
259
+ Structured event = EventUtil.createStructuredEvent(argmap);
260
+
261
+ List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
262
+ event.customContexts.addAll(evCtxts);
263
+
264
+ trackerController.track(event);
265
+ promise.resolve(true);
266
+ } else {
267
+ promise.reject("ERROR", "TrackerController is null");
268
+ }
242
269
 
243
270
  } catch (Throwable t) {
244
271
  promise.reject("ERROR", t.getMessage());
@@ -249,18 +276,22 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
249
276
  public void trackScreenViewEvent(ReadableMap details, Promise promise) {
250
277
  try {
251
278
  String namespace = details.getString("tracker");
252
- ReadableMap argmap = details.getMap("eventData");
253
- ReadableArray contexts = details.getArray("contexts");
254
-
255
279
  TrackerController trackerController = getTracker(namespace);
280
+ if (trackerController != null) {
281
+ ReadableMap argmap = details.getMap("eventData");
282
+ ReadableArray contexts = details.getArray("contexts");
256
283
 
257
- ScreenView event = EventUtil.createScreenViewEvent(argmap);
258
284
 
259
- List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
260
- event.customContexts.addAll(evCtxts);
285
+ ScreenView event = EventUtil.createScreenViewEvent(argmap);
261
286
 
262
- trackerController.track(event);
263
- promise.resolve(true);
287
+ List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
288
+ event.customContexts.addAll(evCtxts);
289
+
290
+ trackerController.track(event);
291
+ promise.resolve(true);
292
+ } else {
293
+ promise.reject("ERROR", "TrackerController is null");
294
+ }
264
295
 
265
296
  } catch (Throwable t) {
266
297
  promise.reject("ERROR", t.getMessage());
@@ -271,18 +302,22 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
271
302
  public void trackPageView(ReadableMap details, Promise promise) {
272
303
  try {
273
304
  String namespace = details.getString("tracker");
274
- ReadableMap argmap = details.getMap("eventData");
275
- ReadableArray contexts = details.getArray("contexts");
276
-
277
305
  TrackerController trackerController = getTracker(namespace);
306
+ if (trackerController != null) {
307
+ ReadableMap argmap = details.getMap("eventData");
308
+ ReadableArray contexts = details.getArray("contexts");
278
309
 
279
- PageView event = EventUtil.createPageViewEvent(argmap);
280
310
 
281
- List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
282
- event.customContexts.addAll(evCtxts);
311
+ PageView event = EventUtil.createPageViewEvent(argmap);
283
312
 
284
- trackerController.track(event);
285
- promise.resolve(true);
313
+ List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
314
+ event.customContexts.addAll(evCtxts);
315
+
316
+ trackerController.track(event);
317
+ promise.resolve(true);
318
+ } else {
319
+ promise.reject("ERROR", "TrackerController is null");
320
+ }
286
321
 
287
322
  } catch (Throwable t) {
288
323
  promise.reject("ERROR", t.getMessage());
@@ -293,18 +328,21 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
293
328
  public void trackTimingEvent(ReadableMap details, Promise promise) {
294
329
  try {
295
330
  String namespace = details.getString("tracker");
296
- ReadableMap argmap = details.getMap("eventData");
297
- ReadableArray contexts = details.getArray("contexts");
298
-
299
331
  TrackerController trackerController = getTracker(namespace);
332
+ if (trackerController != null) {
333
+ ReadableMap argmap = details.getMap("eventData");
334
+ ReadableArray contexts = details.getArray("contexts");
300
335
 
301
- Timing event = EventUtil.createTimingEvent(argmap);
336
+ Timing event = EventUtil.createTimingEvent(argmap);
302
337
 
303
- List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
304
- event.customContexts.addAll(evCtxts);
338
+ List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
339
+ event.customContexts.addAll(evCtxts);
305
340
 
306
- trackerController.track(event);
307
- promise.resolve(true);
341
+ trackerController.track(event);
342
+ promise.resolve(true);
343
+ } else {
344
+ promise.reject("ERROR", "TrackerController is null");
345
+ }
308
346
 
309
347
  } catch (Throwable t) {
310
348
  promise.reject("ERROR", t.getMessage());
@@ -315,18 +353,22 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
315
353
  public void trackConsentGrantedEvent(ReadableMap details, Promise promise) {
316
354
  try {
317
355
  String namespace = details.getString("tracker");
318
- ReadableMap argmap = details.getMap("eventData");
319
- ReadableArray contexts = details.getArray("contexts");
320
-
321
356
  TrackerController trackerController = getTracker(namespace);
357
+ if (trackerController != null) {
358
+ ReadableMap argmap = details.getMap("eventData");
359
+ ReadableArray contexts = details.getArray("contexts");
322
360
 
323
- ConsentGranted event = EventUtil.createConsentGrantedEvent(argmap);
324
361
 
325
- List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
326
- event.customContexts.addAll(evCtxts);
362
+ ConsentGranted event = EventUtil.createConsentGrantedEvent(argmap);
327
363
 
328
- trackerController.track(event);
329
- promise.resolve(true);
364
+ List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
365
+ event.customContexts.addAll(evCtxts);
366
+
367
+ trackerController.track(event);
368
+ promise.resolve(true);
369
+ } else {
370
+ promise.reject("ERROR", "TrackerController is null");
371
+ }
330
372
 
331
373
  } catch (Throwable t) {
332
374
  promise.reject("ERROR", t.getMessage());
@@ -337,18 +379,22 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
337
379
  public void trackConsentWithdrawnEvent(ReadableMap details, Promise promise) {
338
380
  try {
339
381
  String namespace = details.getString("tracker");
340
- ReadableMap argmap = details.getMap("eventData");
341
- ReadableArray contexts = details.getArray("contexts");
342
-
343
382
  TrackerController trackerController = getTracker(namespace);
383
+ if (trackerController != null) {
384
+ ReadableMap argmap = details.getMap("eventData");
385
+ ReadableArray contexts = details.getArray("contexts");
344
386
 
345
- ConsentWithdrawn event = EventUtil.createConsentWithdrawnEvent(argmap);
346
387
 
347
- List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
348
- event.customContexts.addAll(evCtxts);
388
+ ConsentWithdrawn event = EventUtil.createConsentWithdrawnEvent(argmap);
349
389
 
350
- trackerController.track(event);
351
- promise.resolve(true);
390
+ List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
391
+ event.customContexts.addAll(evCtxts);
392
+
393
+ trackerController.track(event);
394
+ promise.resolve(true);
395
+ } else {
396
+ promise.reject("ERROR", "TrackerController is null");
397
+ }
352
398
 
353
399
  } catch (Throwable t) {
354
400
  promise.reject("ERROR", t.getMessage());
@@ -359,18 +405,22 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
359
405
  public void trackEcommerceTransactionEvent(ReadableMap details, Promise promise) {
360
406
  try {
361
407
  String namespace = details.getString("tracker");
362
- ReadableMap argmap = details.getMap("eventData");
363
- ReadableArray contexts = details.getArray("contexts");
364
-
365
408
  TrackerController trackerController = getTracker(namespace);
409
+ if (trackerController != null) {
410
+ ReadableMap argmap = details.getMap("eventData");
411
+ ReadableArray contexts = details.getArray("contexts");
366
412
 
367
- EcommerceTransaction event = EventUtil.createEcommerceTransactionEvent(argmap);
368
413
 
369
- List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
370
- event.customContexts.addAll(evCtxts);
414
+ EcommerceTransaction event = EventUtil.createEcommerceTransactionEvent(argmap);
371
415
 
372
- trackerController.track(event);
373
- promise.resolve(true);
416
+ List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
417
+ event.customContexts.addAll(evCtxts);
418
+
419
+ trackerController.track(event);
420
+ promise.resolve(true);
421
+ } else {
422
+ promise.reject("ERROR", "TrackerController is null");
423
+ }
374
424
 
375
425
  } catch (Throwable t) {
376
426
  promise.reject("ERROR", t.getMessage());
@@ -381,18 +431,22 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
381
431
  public void trackDeepLinkReceivedEvent(ReadableMap details, Promise promise) {
382
432
  try {
383
433
  String namespace = details.getString("tracker");
384
- ReadableMap argmap = details.getMap("eventData");
385
- ReadableArray contexts = details.getArray("contexts");
386
-
387
434
  TrackerController trackerController = getTracker(namespace);
435
+ if (trackerController != null) {
436
+ ReadableMap argmap = details.getMap("eventData");
437
+ ReadableArray contexts = details.getArray("contexts");
388
438
 
389
- DeepLinkReceived event = EventUtil.createDeepLinkReceivedEvent(argmap);
390
439
 
391
- List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
392
- event.customContexts.addAll(evCtxts);
440
+ DeepLinkReceived event = EventUtil.createDeepLinkReceivedEvent(argmap);
393
441
 
394
- trackerController.track(event);
395
- promise.resolve(true);
442
+ List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
443
+ event.customContexts.addAll(evCtxts);
444
+
445
+ trackerController.track(event);
446
+ promise.resolve(true);
447
+ } else {
448
+ promise.reject("ERROR", "TrackerController is null");
449
+ }
396
450
 
397
451
  } catch (Throwable t) {
398
452
  promise.reject("ERROR", t.getMessage());
@@ -403,18 +457,22 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
403
457
  public void trackMessageNotificationEvent(ReadableMap details, Promise promise) {
404
458
  try {
405
459
  String namespace = details.getString("tracker");
406
- ReadableMap argmap = details.getMap("eventData");
407
- ReadableArray contexts = details.getArray("contexts");
408
-
409
460
  TrackerController trackerController = getTracker(namespace);
461
+ if (trackerController != null) {
462
+ ReadableMap argmap = details.getMap("eventData");
463
+ ReadableArray contexts = details.getArray("contexts");
410
464
 
411
- MessageNotification event = EventUtil.createMessageNotificationEvent(argmap);
412
465
 
413
- List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
414
- event.customContexts.addAll(evCtxts);
466
+ MessageNotification event = EventUtil.createMessageNotificationEvent(argmap);
415
467
 
416
- trackerController.track(event);
417
- promise.resolve(true);
468
+ List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
469
+ event.customContexts.addAll(evCtxts);
470
+
471
+ trackerController.track(event);
472
+ promise.resolve(true);
473
+ } else {
474
+ promise.reject("ERROR", "TrackerController is null");
475
+ }
418
476
 
419
477
  } catch (Throwable t) {
420
478
  promise.reject("ERROR", t.getMessage());
@@ -425,15 +483,18 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
425
483
  public void trackCustomEvent(ReadableMap details, Promise promise) {
426
484
  try {
427
485
  String namespace = details.getString("tracker");
428
- String eventName = details.getString("eventName");
429
- ReadableMap argmap = details.getMap("eventData");
430
-
431
486
  TrackerController trackerController = getTracker(namespace);
487
+ if (trackerController != null) {
488
+ String eventName = details.getString("eventName");
489
+ ReadableMap argmap = details.getMap("eventData");
432
490
 
433
- HashMap<String, Object> eventData = argmap.toHashMap();
491
+ HashMap<String, Object> eventData = argmap.toHashMap();
434
492
 
435
- trackerController.trackCustomEvent(eventName, JSONValue.toJSONString(eventData));
436
- promise.resolve(true);
493
+ trackerController.trackCustomEvent(eventName, JSONValue.toJSONString(eventData));
494
+ promise.resolve(true);
495
+ } else {
496
+ promise.reject("ERROR", "TrackerController is null");
497
+ }
437
498
 
438
499
  } catch (Throwable t) {
439
500
  promise.reject("ERROR", t.getMessage());
@@ -444,14 +505,17 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
444
505
  public void setCustomTags(ReadableMap details, Promise promise) {
445
506
  try {
446
507
  String namespace = details.getString("tracker");
447
- ReadableMap argmap = details.getMap("tags");
448
-
449
508
  TrackerController trackerController = getTracker(namespace);
509
+ if (trackerController != null) {
510
+ ReadableMap argmap = details.getMap("tags");
450
511
 
451
- HashMap<String, Object> tags = argmap.toHashMap();
512
+ HashMap<String, Object> tags = argmap.toHashMap();
452
513
 
453
- trackerController.setCustomTags(tags);
454
- promise.resolve(true);
514
+ trackerController.setCustomTags(tags);
515
+ promise.resolve(true);
516
+ } else {
517
+ promise.reject("ERROR", "TrackerController is null");
518
+ }
455
519
 
456
520
  } catch (Throwable t) {
457
521
  promise.reject("ERROR", t.getMessage());
@@ -462,13 +526,17 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
462
526
  public void clearCustomTags(ReadableMap details, Promise promise) {
463
527
  try {
464
528
  String namespace = details.getString("tracker");
465
- ReadableArray argArray = details.getArray("tagKeys");
466
-
467
529
  TrackerController trackerController = getTracker(namespace);
530
+ if (trackerController != null) {
531
+ ReadableArray argArray = details.getArray("tagKeys");
468
532
 
469
- List<String> tagKeys = EventUtil.createStrings(argArray);
470
- trackerController.clearCustomTags(new HashSet<>(tagKeys));
471
- promise.resolve(true);
533
+
534
+ List<String> tagKeys = EventUtil.createStrings(argArray);
535
+ trackerController.clearCustomTags(new HashSet<>(tagKeys));
536
+ promise.resolve(true);
537
+ } else {
538
+ promise.reject("ERROR", "TrackerController is null");
539
+ }
472
540
 
473
541
  } catch (Throwable t) {
474
542
  promise.reject("ERROR", t.getMessage());
@@ -480,9 +548,13 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
480
548
  try {
481
549
  String namespace = details.getString("tracker");
482
550
  TrackerController trackerController = getTracker(namespace);
551
+ if (trackerController != null) {
483
552
 
484
- trackerController.clearAllCustomTags();
485
- promise.resolve(true);
553
+ trackerController.clearAllCustomTags();
554
+ promise.resolve(true);
555
+ } else {
556
+ promise.reject("ERROR", "TrackerController is null");
557
+ }
486
558
 
487
559
  } catch (Throwable t) {
488
560
  promise.reject("ERROR", t.getMessage());
@@ -493,13 +565,18 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
493
565
  public void trackClickEvent(ReadableMap details, Promise promise) {
494
566
  try {
495
567
  String namespace = details.getString("tracker");
496
- ReadableMap eventMap = details.getMap("eventData");
497
568
  TrackerController trackerController = getTracker(namespace);
569
+ if (trackerController != null) {
570
+ ReadableMap eventMap = details.getMap("eventData");
498
571
 
499
- ButtonClick event = EventUtil.createButtonClickEvent(eventMap);
500
- trackerController.track(event);
501
572
 
502
- promise.resolve(true);
573
+ ButtonClick event = EventUtil.createButtonClickEvent(eventMap);
574
+ trackerController.track(event);
575
+
576
+ promise.resolve(true);
577
+ } else {
578
+ promise.reject("ERROR", "TrackerController is null");
579
+ }
503
580
 
504
581
  } catch (Throwable t) {
505
582
  promise.reject("ERROR", t.getMessage());
@@ -555,13 +632,17 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
555
632
  try {
556
633
  String namespace = details.getString("tracker");
557
634
  TrackerController trackerController = getTracker(namespace);
635
+ if (trackerController != null) {
558
636
 
559
- if (details.isNull("userId")) {
560
- trackerController.getSubject().setUserId(null);
637
+ if (details.isNull("userId")) {
638
+ trackerController.getSubject().setUserId(null);
639
+ } else {
640
+ trackerController.getSubject().setUserId(details.getString("userId"));
641
+ }
642
+ promise.resolve(true);
561
643
  } else {
562
- trackerController.getSubject().setUserId(details.getString("userId"));
644
+ promise.reject("ERROR", "TrackerController is null");
563
645
  }
564
- promise.resolve(true);
565
646
 
566
647
  } catch (Throwable t) {
567
648
  promise.reject("ERROR", t.getMessage());
@@ -573,13 +654,17 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
573
654
  try {
574
655
  String namespace = details.getString("tracker");
575
656
  TrackerController trackerController = getTracker(namespace);
657
+ if (trackerController != null) {
576
658
 
577
- if (details.isNull("networkUserId")) {
578
- trackerController.getSubject().setNetworkUserId(null);
659
+ if (details.isNull("networkUserId")) {
660
+ trackerController.getSubject().setNetworkUserId(null);
661
+ } else {
662
+ trackerController.getSubject().setNetworkUserId(details.getString("networkUserId"));
663
+ }
664
+ promise.resolve(true);
579
665
  } else {
580
- trackerController.getSubject().setNetworkUserId(details.getString("networkUserId"));
666
+ promise.reject("ERROR", "TrackerController is null");
581
667
  }
582
- promise.resolve(true);
583
668
 
584
669
  } catch (Throwable t) {
585
670
  promise.reject("ERROR", t.getMessage());
@@ -591,13 +676,17 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
591
676
  try {
592
677
  String namespace = details.getString("tracker");
593
678
  TrackerController trackerController = getTracker(namespace);
679
+ if (trackerController != null) {
594
680
 
595
- if (details.isNull("domainUserId")) {
596
- trackerController.getSubject().setDomainUserId(null);
681
+ if (details.isNull("domainUserId")) {
682
+ trackerController.getSubject().setDomainUserId(null);
683
+ } else {
684
+ trackerController.getSubject().setDomainUserId(details.getString("domainUserId"));
685
+ }
686
+ promise.resolve(true);
597
687
  } else {
598
- trackerController.getSubject().setDomainUserId(details.getString("domainUserId"));
688
+ promise.reject("ERROR", "TrackerController is null");
599
689
  }
600
- promise.resolve(true);
601
690
 
602
691
  } catch (Throwable t) {
603
692
  promise.reject("ERROR", t.getMessage());
@@ -609,13 +698,17 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
609
698
  try {
610
699
  String namespace = details.getString("tracker");
611
700
  TrackerController trackerController = getTracker(namespace);
701
+ if (trackerController != null) {
612
702
 
613
- if (details.isNull("ipAddress")) {
614
- trackerController.getSubject().setIpAddress(null);
703
+ if (details.isNull("ipAddress")) {
704
+ trackerController.getSubject().setIpAddress(null);
705
+ } else {
706
+ trackerController.getSubject().setIpAddress(details.getString("ipAddress"));
707
+ }
708
+ promise.resolve(true);
615
709
  } else {
616
- trackerController.getSubject().setIpAddress(details.getString("ipAddress"));
710
+ promise.reject("ERROR", "TrackerController is null");
617
711
  }
618
- promise.resolve(true);
619
712
 
620
713
  } catch (Throwable t) {
621
714
  promise.reject("ERROR", t.getMessage());
@@ -627,13 +720,17 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
627
720
  try {
628
721
  String namespace = details.getString("tracker");
629
722
  TrackerController trackerController = getTracker(namespace);
723
+ if (trackerController != null) {
630
724
 
631
- if (details.isNull("useragent")) {
632
- trackerController.getSubject().setUseragent(null);
725
+ if (details.isNull("useragent")) {
726
+ trackerController.getSubject().setUseragent(null);
727
+ } else {
728
+ trackerController.getSubject().setUseragent(details.getString("useragent"));
729
+ }
730
+ promise.resolve(true);
633
731
  } else {
634
- trackerController.getSubject().setUseragent(details.getString("useragent"));
732
+ promise.reject("ERROR", "TrackerController is null");
635
733
  }
636
- promise.resolve(true);
637
734
 
638
735
  } catch (Throwable t) {
639
736
  promise.reject("ERROR", t.getMessage());
@@ -645,13 +742,17 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
645
742
  try {
646
743
  String namespace = details.getString("tracker");
647
744
  TrackerController trackerController = getTracker(namespace);
745
+ if (trackerController != null) {
648
746
 
649
- if (details.isNull("timezone")) {
650
- trackerController.getSubject().setTimezone(null);
747
+ if (details.isNull("timezone")) {
748
+ trackerController.getSubject().setTimezone(null);
749
+ } else {
750
+ trackerController.getSubject().setTimezone(details.getString("timezone"));
751
+ }
752
+ promise.resolve(true);
651
753
  } else {
652
- trackerController.getSubject().setTimezone(details.getString("timezone"));
754
+ promise.reject("ERROR", "TrackerController is null");
653
755
  }
654
- promise.resolve(true);
655
756
 
656
757
  } catch (Throwable t) {
657
758
  promise.reject("ERROR", t.getMessage());
@@ -663,13 +764,17 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
663
764
  try {
664
765
  String namespace = details.getString("tracker");
665
766
  TrackerController trackerController = getTracker(namespace);
767
+ if (trackerController != null) {
666
768
 
667
- if (details.isNull("language")) {
668
- trackerController.getSubject().setLanguage(null);
769
+ if (details.isNull("language")) {
770
+ trackerController.getSubject().setLanguage(null);
771
+ } else {
772
+ trackerController.getSubject().setLanguage(details.getString("language"));
773
+ }
774
+ promise.resolve(true);
669
775
  } else {
670
- trackerController.getSubject().setLanguage(details.getString("language"));
776
+ promise.reject("ERROR", "TrackerController is null");
671
777
  }
672
- promise.resolve(true);
673
778
 
674
779
  } catch (Throwable t) {
675
780
  promise.reject("ERROR", t.getMessage());
@@ -681,18 +786,22 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
681
786
  try {
682
787
  String namespace = details.getString("tracker");
683
788
  TrackerController trackerController = getTracker(namespace);
789
+ if (trackerController != null) {
684
790
 
685
- if (details.isNull("screenResolution")) {
686
- trackerController.getSubject().setScreenResolution(null);
687
- } else {
688
- ReadableArray screenRes = details.getArray("screenResolution");
689
- int width = screenRes.getInt(0);
690
- int height = screenRes.getInt(1);
691
- Size screenR = new Size(width, height);
791
+ if (details.isNull("screenResolution")) {
792
+ trackerController.getSubject().setScreenResolution(null);
793
+ } else {
794
+ ReadableArray screenRes = details.getArray("screenResolution");
795
+ int width = screenRes.getInt(0);
796
+ int height = screenRes.getInt(1);
797
+ Size screenR = new Size(width, height);
692
798
 
693
- trackerController.getSubject().setScreenResolution(screenR);
799
+ trackerController.getSubject().setScreenResolution(screenR);
800
+ }
801
+ promise.resolve(true);
802
+ } else {
803
+ promise.reject("ERROR", "TrackerController is null");
694
804
  }
695
- promise.resolve(true);
696
805
 
697
806
  } catch (Throwable t) {
698
807
  promise.reject("ERROR", t.getMessage());
@@ -704,18 +813,22 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
704
813
  try {
705
814
  String namespace = details.getString("tracker");
706
815
  TrackerController trackerController = getTracker(namespace);
816
+ if (trackerController != null) {
707
817
 
708
- if (details.isNull("screenViewport")) {
709
- trackerController.getSubject().setScreenViewPort(null);
710
- } else {
711
- ReadableArray screenView = details.getArray("screenViewport");
712
- int width = screenView.getInt(0);
713
- int height = screenView.getInt(1);
714
- Size screenVP = new Size(width, height);
818
+ if (details.isNull("screenViewport")) {
819
+ trackerController.getSubject().setScreenViewPort(null);
820
+ } else {
821
+ ReadableArray screenView = details.getArray("screenViewport");
822
+ int width = screenView.getInt(0);
823
+ int height = screenView.getInt(1);
824
+ Size screenVP = new Size(width, height);
715
825
 
716
- trackerController.getSubject().setScreenViewPort(screenVP);
826
+ trackerController.getSubject().setScreenViewPort(screenVP);
827
+ }
828
+ promise.resolve(true);
829
+ } else {
830
+ promise.reject("ERROR", "TrackerController is null");
717
831
  }
718
- promise.resolve(true);
719
832
 
720
833
  } catch (Throwable t) {
721
834
  promise.reject("ERROR", t.getMessage());
@@ -727,13 +840,17 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
727
840
  try {
728
841
  String namespace = details.getString("tracker");
729
842
  TrackerController trackerController = getTracker(namespace);
843
+ if (trackerController != null) {
730
844
 
731
- if (details.isNull("colorDepth")) {
732
- trackerController.getSubject().setColorDepth(null);
845
+ if (details.isNull("colorDepth")) {
846
+ trackerController.getSubject().setColorDepth(null);
847
+ } else {
848
+ trackerController.getSubject().setColorDepth(details.getInt("colorDepth"));
849
+ }
850
+ promise.resolve(true);
733
851
  } else {
734
- trackerController.getSubject().setColorDepth(details.getInt("colorDepth"));
852
+ promise.reject("ERROR", "TrackerController is null");
735
853
  }
736
- promise.resolve(true);
737
854
 
738
855
  } catch (Throwable t) {
739
856
  promise.reject("ERROR", t.getMessage());
@@ -833,5 +950,4 @@ public class RNConvivaTrackerModule extends ReactContextBaseJavaModule {
833
950
  private TrackerController getTracker(String namespace) {
834
951
  return namespace == null ? ConvivaAppAnalytics.getDefaultTracker() : ConvivaAppAnalytics.getTracker(namespace);
835
952
  }
836
-
837
953
  }
@@ -4,6 +4,6 @@ import com.conviva.react.apptracker.BuildConfig;
4
4
 
5
5
  public class TrackerVersion {
6
6
 
7
- public final static String RN_CONVIVA_TRACKER_VERSION = "rn-0.1.5";
7
+ public final static String RN_CONVIVA_TRACKER_VERSION = "rn-0.2.0";
8
8
 
9
9
  }
@@ -848,6 +848,19 @@ declare function removeTracker(trackerNamespace: string): Promise<boolean>;
848
848
  * @returns - A boolean promise
849
849
  */
850
850
  declare function removeAllTrackers(): Promise<boolean>;
851
+ /**
852
+ * Gets the cliend id
853
+ *
854
+ * @returns - A string promise
855
+ */
856
+ declare function getClientId(): Promise<string>;
857
+ /**
858
+ * Sets the cliend id
859
+ *
860
+ * @param clientId {string}
861
+ * @returns - A boolean promise
862
+ */
863
+ declare function setClientId(clientId: string): Promise<boolean>;
851
864
  declare const autocaptureNavigationTrack: (...args: any[]) => any;
852
865
 
853
866
  declare const _default: {
@@ -139,6 +139,8 @@ const logMessages = {
139
139
  // api error prefix
140
140
  createTracker: 'createTracker:',
141
141
  removeTracker: 'removeTracker: trackerNamespace can only be a string',
142
+ getClientId: 'getClientId: failed fetching client id',
143
+ setClientId: 'setClientId: clientId is invalid',
142
144
  // methods
143
145
  trackSelfDesc: 'trackSelfDescribingEvent:',
144
146
  trackScreenView: 'trackScreenViewEvent:',
@@ -164,6 +166,7 @@ const logMessages = {
164
166
  setScreenViewport: 'setScreenViewport: screenViewport can only be of ScreenSize type or null',
165
167
  setColorDepth: 'setColorDepth: colorDepth can only be a number(integer) or null',
166
168
  setSubjectData: 'setSubjectData:',
169
+ createTrackerNotSet: 'createTracker not invoked prior:'
167
170
  };
168
171
 
169
172
  /*
@@ -1282,6 +1285,7 @@ function setSubjectData$1(namespace, config) {
1282
1285
  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1283
1286
  * See the Apache License Version 2.0 for the specific language governing permissions and limitations there under.
1284
1287
  */
1288
+ let isTrackerInitialised = false;
1285
1289
  /**
1286
1290
  * Create a tracker from specified initial configuration.
1287
1291
  *
@@ -1290,8 +1294,12 @@ function setSubjectData$1(namespace, config) {
1290
1294
  */
1291
1295
  function createTracker$1(initConfig) {
1292
1296
  return initValidate(initConfig)
1293
- .then(() => RNConvivaTracker.createTracker(initConfig))
1297
+ .then(() => {
1298
+ isTrackerInitialised = true;
1299
+ return RNConvivaTracker.createTracker(initConfig);
1300
+ })
1294
1301
  .catch((error) => {
1302
+ isTrackerInitialised = false;
1295
1303
  throw new Error(`${logMessages.createTracker} ${error.message}.`);
1296
1304
  });
1297
1305
  }
@@ -1305,6 +1313,10 @@ function removeTracker$1(trackerNamespace) {
1305
1313
  if (typeof trackerNamespace !== 'string') {
1306
1314
  return Promise.reject(new Error(logMessages.removeTracker));
1307
1315
  }
1316
+ if (!isTrackerInitialised) {
1317
+ return Promise.reject(new Error(logMessages.createTrackerNotSet));
1318
+ }
1319
+ isTrackerInitialised = false;
1308
1320
  return Promise.resolve(RNConvivaTracker.removeTracker({ tracker: trackerNamespace }));
1309
1321
  }
1310
1322
  /**
@@ -1313,8 +1325,35 @@ function removeTracker$1(trackerNamespace) {
1313
1325
  * @returns - A void promise
1314
1326
  */
1315
1327
  function removeAllTrackers$1() {
1328
+ if (!isTrackerInitialised) {
1329
+ return Promise.reject(new Error(logMessages.createTrackerNotSet));
1330
+ }
1316
1331
  return Promise.resolve(RNConvivaTracker.removeAllTrackers());
1317
1332
  }
1333
+ /**
1334
+ * Get the client id which is in prescribed format.
1335
+ *
1336
+ * @returns - A promise string if the client if available or genetrated
1337
+ */
1338
+ function getClientId$1() {
1339
+ return Promise.resolve(RNConvivaTracker.getClientId())
1340
+ .catch((error) => {
1341
+ throw new Error(`${logMessages.getClientId} ${error.message}.`);
1342
+ });
1343
+ }
1344
+ /**
1345
+ * Set the client id which is in the prescribed format.
1346
+ *
1347
+ * @param clientId {string} - client id generated for the application in the device
1348
+ * @returns - A promise fullfilled if the client id is valid
1349
+ */
1350
+ function setClientId$1(clid) {
1351
+ // have necessary checks in place
1352
+ if (!clid || clid === "" || clid.split(".").length != 4 || !clid.split(".").every(part => part !== "" && !isNaN(Number(part)))) {
1353
+ return Promise.reject(new Error(logMessages.setClientId));
1354
+ }
1355
+ return Promise.resolve(RNConvivaTracker.setClientId({ clientId: clid }));
1356
+ }
1318
1357
  /**
1319
1358
  * Returns a function to track a SelfDescribing event by a tracker
1320
1359
  *
@@ -1323,6 +1362,9 @@ function removeAllTrackers$1() {
1323
1362
  */
1324
1363
  function trackSelfDescribingEvent(namespace) {
1325
1364
  return function (argmap, contexts = []) {
1365
+ if (!isTrackerInitialised) {
1366
+ return Promise.reject(new Error(logMessages.createTrackerNotSet));
1367
+ }
1326
1368
  return trackSelfDescribingEvent$1(namespace, argmap, contexts);
1327
1369
  };
1328
1370
  }
@@ -1334,6 +1376,9 @@ function trackSelfDescribingEvent(namespace) {
1334
1376
  */
1335
1377
  function trackScreenViewEvent(namespace) {
1336
1378
  return function (argmap, contexts = []) {
1379
+ if (!isTrackerInitialised) {
1380
+ return Promise.reject(new Error(logMessages.createTrackerNotSet));
1381
+ }
1337
1382
  return trackScreenViewEvent$1(namespace, argmap, contexts);
1338
1383
  };
1339
1384
  }
@@ -1345,6 +1390,9 @@ function trackScreenViewEvent(namespace) {
1345
1390
  */
1346
1391
  function trackStructuredEvent(namespace) {
1347
1392
  return function (argmap, contexts = []) {
1393
+ if (!isTrackerInitialised) {
1394
+ return Promise.reject(new Error(logMessages.createTrackerNotSet));
1395
+ }
1348
1396
  return trackStructuredEvent$1(namespace, argmap, contexts);
1349
1397
  };
1350
1398
  }
@@ -1356,6 +1404,9 @@ function trackStructuredEvent(namespace) {
1356
1404
  */
1357
1405
  function trackPageView(namespace) {
1358
1406
  return function (argmap, contexts = []) {
1407
+ if (!isTrackerInitialised) {
1408
+ return Promise.reject(new Error(logMessages.createTrackerNotSet));
1409
+ }
1359
1410
  return trackPageView$1(namespace, argmap, contexts);
1360
1411
  };
1361
1412
  }
@@ -1367,6 +1418,9 @@ function trackPageView(namespace) {
1367
1418
  */
1368
1419
  function trackTimingEvent(namespace) {
1369
1420
  return function (argmap, contexts = []) {
1421
+ if (!isTrackerInitialised) {
1422
+ return Promise.reject(new Error(logMessages.createTrackerNotSet));
1423
+ }
1370
1424
  return trackTimingEvent$1(namespace, argmap, contexts);
1371
1425
  };
1372
1426
  }
@@ -1378,6 +1432,9 @@ function trackTimingEvent(namespace) {
1378
1432
  */
1379
1433
  function trackConsentGrantedEvent(namespace) {
1380
1434
  return function (argmap, contexts = []) {
1435
+ if (!isTrackerInitialised) {
1436
+ return Promise.reject(new Error(logMessages.createTrackerNotSet));
1437
+ }
1381
1438
  return trackConsentGrantedEvent$1(namespace, argmap, contexts);
1382
1439
  };
1383
1440
  }
@@ -1389,6 +1446,9 @@ function trackConsentGrantedEvent(namespace) {
1389
1446
  */
1390
1447
  function trackConsentWithdrawnEvent(namespace) {
1391
1448
  return function (argmap, contexts = []) {
1449
+ if (!isTrackerInitialised) {
1450
+ return Promise.reject(new Error(logMessages.createTrackerNotSet));
1451
+ }
1392
1452
  return trackConsentWithdrawnEvent$1(namespace, argmap, contexts);
1393
1453
  };
1394
1454
  }
@@ -1400,6 +1460,9 @@ function trackConsentWithdrawnEvent(namespace) {
1400
1460
  */
1401
1461
  function trackEcommerceTransactionEvent(namespace) {
1402
1462
  return function (argmap, contexts = []) {
1463
+ if (!isTrackerInitialised) {
1464
+ return Promise.reject(new Error(logMessages.createTrackerNotSet));
1465
+ }
1403
1466
  return trackEcommerceTransactionEvent$1(namespace, argmap, contexts);
1404
1467
  };
1405
1468
  }
@@ -1411,6 +1474,9 @@ function trackEcommerceTransactionEvent(namespace) {
1411
1474
  */
1412
1475
  function trackDeepLinkReceivedEvent(namespace) {
1413
1476
  return function (argmap, contexts = []) {
1477
+ if (!isTrackerInitialised) {
1478
+ return Promise.reject(new Error(logMessages.createTrackerNotSet));
1479
+ }
1414
1480
  return trackDeepLinkReceivedEvent$1(namespace, argmap, contexts);
1415
1481
  };
1416
1482
  }
@@ -1422,6 +1488,9 @@ function trackDeepLinkReceivedEvent(namespace) {
1422
1488
  */
1423
1489
  function trackMessageNotificationEvent(namespace) {
1424
1490
  return function (argmap, contexts = []) {
1491
+ if (!isTrackerInitialised) {
1492
+ return Promise.reject(new Error(logMessages.createTrackerNotSet));
1493
+ }
1425
1494
  return trackMessageNotificationEvent$1(namespace, argmap, contexts);
1426
1495
  };
1427
1496
  }
@@ -1433,26 +1502,41 @@ function trackMessageNotificationEvent(namespace) {
1433
1502
  */
1434
1503
  function trackCustomEvent(namespace) {
1435
1504
  return function (eventName, eventData, contexts = []) {
1505
+ if (!isTrackerInitialised) {
1506
+ return Promise.reject(new Error(logMessages.createTrackerNotSet));
1507
+ }
1436
1508
  return trackCustomEvent$1(namespace, eventName, eventData, contexts);
1437
1509
  };
1438
1510
  }
1439
1511
  function setCustomTags(namespace) {
1440
1512
  return function (tags, contexts = []) {
1513
+ if (!isTrackerInitialised) {
1514
+ return Promise.reject(new Error(logMessages.createTrackerNotSet));
1515
+ }
1441
1516
  return setCustomTags$1(namespace, tags, contexts);
1442
1517
  };
1443
1518
  }
1444
1519
  function setCustomTagsWithCategory(namespace) {
1445
1520
  return function (category, tags, contexts = []) {
1521
+ if (!isTrackerInitialised) {
1522
+ return Promise.reject(new Error(logMessages.createTrackerNotSet));
1523
+ }
1446
1524
  return setCustomTagsWithCategory$1(namespace, category, tags, contexts);
1447
1525
  };
1448
1526
  }
1449
1527
  function clearCustomTags(namespace) {
1450
1528
  return function (tagKeys, contexts = []) {
1529
+ if (!isTrackerInitialised) {
1530
+ return Promise.reject(new Error(logMessages.createTrackerNotSet));
1531
+ }
1451
1532
  return clearCustomTags$1(namespace, tagKeys, contexts);
1452
1533
  };
1453
1534
  }
1454
1535
  function clearAllCustomTags(namespace) {
1455
1536
  return function (contexts = []) {
1537
+ if (!isTrackerInitialised) {
1538
+ return Promise.reject(new Error(logMessages.createTrackerNotSet));
1539
+ }
1456
1540
  return clearAllCustomTags$1(namespace, contexts);
1457
1541
  };
1458
1542
  }
@@ -1685,6 +1769,9 @@ function getForegroundIndex(namespace) {
1685
1769
  */
1686
1770
  function trackClickEvent(namespace) {
1687
1771
  return function (eventData) {
1772
+ if (!isTrackerInitialised) {
1773
+ return Promise.reject(new Error(logMessages.createTrackerNotSet));
1774
+ }
1688
1775
  return trackClickEvent$1(namespace, eventData);
1689
1776
  };
1690
1777
  }
@@ -2187,6 +2274,25 @@ function removeAllTrackers() {
2187
2274
  return removeAllTrackers$1()
2188
2275
  .catch((e) => errorHandler(e));
2189
2276
  }
2277
+ /**
2278
+ * Gets the cliend id
2279
+ *
2280
+ * @returns - A string promise
2281
+ */
2282
+ function getClientId() {
2283
+ return Promise.resolve(getClientId$1())
2284
+ .catch((e) => errorHandler(e));
2285
+ }
2286
+ /**
2287
+ * Sets the cliend id
2288
+ *
2289
+ * @param clientId {string}
2290
+ * @returns - A boolean promise
2291
+ */
2292
+ function setClientId(clientId) {
2293
+ return Promise.resolve(setClientId$1(clientId))
2294
+ .catch((e) => errorHandler(e));
2295
+ }
2190
2296
  const autocaptureNavigationTrack = handleError((payload) => {
2191
2297
  checkDisplayNamePlugin();
2192
2298
  trackScreenViewEvent('CAT')(payload).catch((e) => errorHandler(e));
@@ -2200,5 +2306,5 @@ var index = {
2200
2306
  withReactNavigationAutotrack: withReactNavigationAutotrack(autocaptureNavigationTrack)
2201
2307
  };
2202
2308
 
2203
- export { autocaptureNavigationTrack, createTracker, index as default, getWebViewCallback, removeAllTrackers, removeTracker, withReactNavigationAutotrack };
2309
+ export { autocaptureNavigationTrack, createTracker, index as default, getClientId, getWebViewCallback, removeAllTrackers, removeTracker, setClientId, withReactNavigationAutotrack };
2204
2310
  //# sourceMappingURL=conviva-react-native-appanalytics.js.map
@@ -1074,6 +1074,44 @@ RCT_EXPORT_METHOD(getForegroundIndex:
1074
1074
  }
1075
1075
  }
1076
1076
 
1077
+ RCT_EXPORT_METHOD(getClientId: (RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
1078
+
1079
+ CATAppAnalytics *convivaAppAnalytics = [CATAppAnalytics sharedInstance];
1080
+
1081
+ if (convivaAppAnalytics != nil) {
1082
+ NSString *clientId = [convivaAppAnalytics getClientId];
1083
+ if (clientId != nil && clientId.length > 0) {
1084
+ resolve(clientId);
1085
+ }
1086
+ else {
1087
+ NSError* error = [NSError errorWithDomain:@"ConvivaAppAnalytics" code:200 userInfo:nil];
1088
+ reject(@"ERROR", @"ClientId not found", error);
1089
+ }
1090
+ } else {
1091
+ NSError* error = [NSError errorWithDomain:@"ConvivaAppAnalytics" code:200 userInfo:nil];
1092
+ reject(@"ERROR", @"CATAppAnalytics not found", error);
1093
+ }
1094
+ }
1095
+
1096
+ RCT_EXPORT_METHOD(setClientId:
1097
+ (NSDictionary *)details
1098
+ resolver:(RCTPromiseResolveBlock)resolve
1099
+ rejecter:(RCTPromiseRejectBlock)reject) {
1100
+ CATAppAnalytics *convivaAppAnalytics = [CATAppAnalytics sharedInstance];
1101
+
1102
+ if (convivaAppAnalytics != nil) {
1103
+ NSString *newClientId = [details rncat_stringForKey:@"clientId" defaultValue:nil];
1104
+ BOOL isClientIdSet = NO;
1105
+ if (newClientId != nil && newClientId.length > 0) {
1106
+ isClientIdSet = [convivaAppAnalytics setClientId: newClientId];
1107
+ }
1108
+ resolve(@(isClientIdSet));
1109
+ } else {
1110
+ NSError* error = [NSError errorWithDomain:@"ConvivaAppAnalytics" code:200 userInfo:nil];
1111
+ reject(@"ERROR", @"tracker with given namespace not found", error);
1112
+ }
1113
+ }
1114
+
1077
1115
  - (nullable id<CATTrackerController>)trackerByNamespace:(NSString *)namespace {
1078
1116
  return [namespace isEqual:[NSNull null]] ? [CATAppAnalytics defaultTracker] : [CATAppAnalytics trackerByNamespace:namespace];
1079
1117
  }
@@ -22,6 +22,6 @@
22
22
 
23
23
  @implementation RNTrackerVersion
24
24
 
25
- NSString * const kRNTrackerVersion = @"rn-0.1.5";
25
+ NSString * const kRNTrackerVersion = @"rn-0.2.0";
26
26
 
27
27
  @end
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@convivainc/conviva-react-native-appanalytics",
3
- "version": "0.1.5",
3
+ "version": "0.2.0",
4
4
  "description": "Conviva React Native Application Analytics Library",
5
5
  "main": "conviva-react-native-appanalytics.js",
6
6
  "repository": {