clevertap-react-native 0.9.3 → 1.0.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.
Files changed (75) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +5 -0
  3. package/android/.gradle/6.1.1/executionHistory/executionHistory.bin +0 -0
  4. package/android/.gradle/6.1.1/executionHistory/executionHistory.lock +0 -0
  5. package/android/.gradle/6.1.1/fileChanges/last-build.bin +0 -0
  6. package/android/.gradle/6.1.1/fileContent/fileContent.lock +0 -0
  7. package/android/.gradle/6.1.1/fileHashes/fileHashes.bin +0 -0
  8. package/android/.gradle/6.1.1/fileHashes/fileHashes.lock +0 -0
  9. package/android/.gradle/6.1.1/fileHashes/resourceHashesCache.bin +0 -0
  10. package/android/.gradle/6.1.1/gc.properties +0 -0
  11. package/android/.gradle/6.1.1/javaCompile/classAnalysis.bin +0 -0
  12. package/android/.gradle/6.1.1/javaCompile/jarAnalysis.bin +0 -0
  13. package/android/.gradle/6.1.1/javaCompile/javaCompile.lock +0 -0
  14. package/android/.gradle/6.1.1/javaCompile/taskHistory.bin +0 -0
  15. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  16. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  17. package/android/.gradle/buildOutputCleanup/outputFiles.bin +0 -0
  18. package/android/.gradle/checksums/checksums.lock +0 -0
  19. package/android/.gradle/checksums/md5-checksums.bin +0 -0
  20. package/android/.gradle/checksums/sha1-checksums.bin +0 -0
  21. package/android/.gradle/vcs-1/gc.properties +0 -0
  22. package/android/build/generated/source/buildConfig/debug/com/clevertap/react/BuildConfig.java +12 -0
  23. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +14 -0
  24. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output.json +27 -0
  25. package/android/build/intermediates/aar_main_jar/debug/classes.jar +0 -0
  26. package/android/build/intermediates/annotation_processor_list/debug/annotationProcessors.json +1 -0
  27. package/android/build/intermediates/annotations_typedef_file/debug/typedefs.txt +0 -0
  28. package/android/build/intermediates/compile_only_not_namespaced_r_class_jar/debug/R.jar +0 -0
  29. package/android/build/intermediates/compile_symbol_list/debug/R.txt +5732 -0
  30. package/android/build/intermediates/incremental/debug-mergeJavaRes/merge-state +0 -0
  31. package/android/build/intermediates/incremental/debug-mergeNativeLibs/merge-state +0 -0
  32. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
  33. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
  34. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
  35. package/android/build/intermediates/incremental/packageDebugResources/compile-file-map.properties +1 -0
  36. package/android/build/intermediates/incremental/packageDebugResources/merger.xml +2 -0
  37. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/BuildConfig.class +0 -0
  38. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapApplication$1$1.class +0 -0
  39. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapApplication$1.class +0 -0
  40. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapApplication.class +0 -0
  41. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapModule$1.class +0 -0
  42. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapModule$2.class +0 -0
  43. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapModule$ErrorMessages.class +0 -0
  44. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapModule$InBoxMessages.class +0 -0
  45. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapModule.class +0 -0
  46. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapPackage.class +0 -0
  47. package/android/build/intermediates/javac/debug/classes/com/clevertap/react/CleverTapUtils.class +0 -0
  48. package/android/build/intermediates/library_manifest/debug/AndroidManifest.xml +14 -0
  49. package/android/build/intermediates/local_only_symbol_list/debug/R-def.txt +2 -0
  50. package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +17 -0
  51. package/android/build/intermediates/merged_java_res/debug/out.jar +0 -0
  52. package/android/build/intermediates/merged_manifests/debug/output.json +27 -0
  53. package/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt +3965 -0
  54. package/android/build/outputs/aar/android-debug.aar +0 -0
  55. package/android/build/outputs/logs/manifest-merger-debug-report.txt +39 -0
  56. package/android/build.gradle +7 -7
  57. package/android/local.properties +2 -2
  58. package/android/src/main/java/com/clevertap/react/CleverTapModule.java +240 -12
  59. package/clevertap-react-native.podspec +1 -1
  60. package/docs/iospushtemplates.md +449 -0
  61. package/docs/pushprimer.md +97 -0
  62. package/docs/usage.md +4 -0
  63. package/index.d.ts +51 -4
  64. package/index.js +41 -4
  65. package/ios/CleverTapReact/CleverTapReact.h +2 -0
  66. package/ios/CleverTapReact/CleverTapReact.m +204 -63
  67. package/ios/CleverTapReact/CleverTapReactEventEmitter.h +0 -1
  68. package/ios/CleverTapReact/CleverTapReactEventEmitter.m +6 -3
  69. package/ios/CleverTapReact/CleverTapReactManager.h +3 -0
  70. package/ios/CleverTapReact/CleverTapReactManager.m +23 -11
  71. package/package.json +1 -1
  72. package/static/Finder.png +0 -0
  73. package/static/GenerateSpecs.png +0 -0
  74. package/static/NotificationContent.png +0 -0
  75. package/static/NotificationContentTarget.png +0 -0
@@ -0,0 +1,39 @@
1
+ -- Merging decision tree log ---
2
+ manifest
3
+ ADDED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml:1:1-5:12
4
+ INJECTED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml:1:1-5:12
5
+ INJECTED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml:1:1-5:12
6
+ INJECTED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml:1:1-5:12
7
+ INJECTED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml:1:1-5:12
8
+ INJECTED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml:1:1-5:12
9
+ INJECTED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml:1:1-5:12
10
+ package
11
+ ADDED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml:2:5-34
12
+ INJECTED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml
13
+ INJECTED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml
14
+ android:versionName
15
+ INJECTED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml
16
+ ADDED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml:1:1-5:12
17
+ INJECTED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml
18
+ android:versionCode
19
+ INJECTED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml
20
+ ADDED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml:1:1-5:12
21
+ INJECTED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml
22
+ xmlns:android
23
+ ADDED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml:1:11-69
24
+ application
25
+ ADDED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml:3:5-4:19
26
+ uses-sdk
27
+ INJECTED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml reason: use-sdk injection requested
28
+ INJECTED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml
29
+ INJECTED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml
30
+ INJECTED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml
31
+ INJECTED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml
32
+ android:targetSdkVersion
33
+ INJECTED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml
34
+ ADDED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml
35
+ INJECTED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml
36
+ android:minSdkVersion
37
+ INJECTED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml
38
+ ADDED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml
39
+ INJECTED from /Users/shivam.sharma/Desktop/clevertap-react-native/android/src/main/AndroidManifest.xml
@@ -15,14 +15,14 @@ buildscript {
15
15
  }
16
16
 
17
17
  android {
18
- compileSdkVersion 31
19
- buildToolsVersion '30.0.3'
18
+ compileSdkVersion 33
19
+ buildToolsVersion '33.0.0'
20
20
 
21
21
  defaultConfig {
22
- minSdkVersion 16
23
- targetSdkVersion 31
24
- versionCode 93
25
- versionName "0.9.3"
22
+ minSdkVersion 19
23
+ targetSdkVersion 33
24
+ versionCode 95
25
+ versionName "1.0.0"
26
26
  }
27
27
  buildTypes {
28
28
  release {
@@ -39,7 +39,7 @@ dependencies {
39
39
  maven { url "$rootDir/../node_modules/react-native/android" }
40
40
  }
41
41
 
42
- api 'com.clevertap.android:clevertap-android-sdk:4.6.6'
42
+ api 'com.clevertap.android:clevertap-android-sdk:4.7.2'
43
43
  implementation 'com.android.installreferrer:installreferrer:2.2'
44
44
  //compile 'com.android.support:appcompat-v7:28.0.0'
45
45
  implementation 'com.facebook.react:react-native:+'
@@ -4,5 +4,5 @@
4
4
  # Location of the SDK. This is only used by Gradle.
5
5
  # For customization when using a Version Control System, please read the
6
6
  # header note.
7
- #Wed Sep 07 13:41:26 IST 2022
8
- sdk.dir=/Users/ansh/Library/Android/sdk
7
+ #Mon Dec 26 16:37:20 IST 2022
8
+ sdk.dir=/Users/shivam.sharma/Library/Android/sdk
@@ -2,6 +2,7 @@ package com.clevertap.react;
2
2
 
3
3
  import static com.clevertap.react.CleverTapUtils.getWritableMapFromMap;
4
4
 
5
+ import android.annotation.SuppressLint;
5
6
  import android.location.Location;
6
7
  import android.net.Uri;
7
8
  import android.os.Build.VERSION;
@@ -19,12 +20,15 @@ import com.clevertap.android.sdk.InAppNotificationListener;
19
20
  import com.clevertap.android.sdk.InboxMessageButtonListener;
20
21
  import com.clevertap.android.sdk.InboxMessageListener;
21
22
  import com.clevertap.android.sdk.Logger;
23
+ import com.clevertap.android.sdk.PushPermissionResponseListener;
22
24
  import com.clevertap.android.sdk.SyncListener;
23
25
  import com.clevertap.android.sdk.UTMDetail;
24
26
  import com.clevertap.android.sdk.displayunits.DisplayUnitListener;
25
27
  import com.clevertap.android.sdk.displayunits.model.CleverTapDisplayUnit;
26
28
  import com.clevertap.android.sdk.events.EventDetail;
27
29
  import com.clevertap.android.sdk.featureFlags.CTFeatureFlagsController;
30
+ import com.clevertap.android.sdk.inapp.CTInAppNotification;
31
+ import com.clevertap.android.sdk.inapp.CTLocalInApp;
28
32
  import com.clevertap.android.sdk.inbox.CTInboxMessage;
29
33
  import com.clevertap.android.sdk.interfaces.OnInitCleverTapIDListener;
30
34
  import com.clevertap.android.sdk.product_config.CTProductConfigController;
@@ -60,7 +64,7 @@ public class CleverTapModule extends ReactContextBaseJavaModule implements SyncL
60
64
  InAppNotificationListener, CTInboxListener,
61
65
  InboxMessageButtonListener, InboxMessageListener,
62
66
  InAppNotificationButtonListener, DisplayUnitListener, CTProductConfigListener,
63
- CTFeatureFlagsListener, CTPushNotificationListener {
67
+ CTFeatureFlagsListener, CTPushNotificationListener, PushPermissionResponseListener {
64
68
 
65
69
  @SuppressWarnings("FieldCanBeLocal")
66
70
  private enum InBoxMessages {
@@ -104,6 +108,8 @@ public class CleverTapModule extends ReactContextBaseJavaModule implements SyncL
104
108
 
105
109
  private static final String CLEVERTAP_IN_APP_NOTIFICATION_DISMISSED = "CleverTapInAppNotificationDismissed";
106
110
 
111
+ private static final String CLEVERTAP_IN_APP_NOTIFICATION_SHOWED = "CleverTapInAppNotificationShowed";
112
+
107
113
  private static final String FCM = "FCM";
108
114
 
109
115
  private static final String XPS = "XPS";
@@ -133,6 +139,8 @@ public class CleverTapModule extends ReactContextBaseJavaModule implements SyncL
133
139
 
134
140
  private static final String CLEVERTAP_PUSH_NOTIFICATION_CLICKED = "CleverTapPushNotificationClicked";
135
141
 
142
+ private static final String CLEVERTAP_ON_PUSH_PERMISSION_RESPONSE = "CleverTapPushPermissionResponseReceived";
143
+
136
144
  private final ReactApplicationContext context;
137
145
 
138
146
  private CleverTapAPI mCleverTap;
@@ -161,6 +169,17 @@ public class CleverTapModule extends ReactContextBaseJavaModule implements SyncL
161
169
  return true;
162
170
  }
163
171
 
172
+ @SuppressLint("RestrictedApi")
173
+ @Override
174
+ public void onShow(CTInAppNotification inAppNotification) {
175
+ WritableMap params = Arguments.createMap();
176
+ JSONObject data = inAppNotification.getJsonDescription();
177
+ if (data != null) {
178
+ params.putString("data", data.toString());
179
+ }
180
+ sendEvent(CLEVERTAP_IN_APP_NOTIFICATION_SHOWED, params);
181
+ }
182
+
164
183
  //Custom Push Notification
165
184
  @ReactMethod
166
185
  public void createNotification(ReadableMap extras) {
@@ -282,6 +301,48 @@ public class CleverTapModule extends ReactContextBaseJavaModule implements SyncL
282
301
  Log.i(TAG, "Notification Channel Group Id " + groupId + " deleted");
283
302
  }
284
303
 
304
+ //Push permission methods
305
+ @ReactMethod
306
+ public void promptForPushPermission(boolean showFallbackSettings) {
307
+ CleverTapAPI cleverTap = getCleverTapAPI();
308
+ if (cleverTap != null) {
309
+ cleverTap.promptForPushPermission(showFallbackSettings);
310
+ } else {
311
+ Log.e(TAG, ErrorMessages.CLEVERTAP_NOT_INITIALIZED.getErrorMessage());
312
+ }
313
+ }
314
+
315
+ @ReactMethod
316
+ public void promptPushPrimer(ReadableMap localInAppConfig) {
317
+ CleverTapAPI cleverTap = getCleverTapAPI();
318
+ if (cleverTap != null) {
319
+ JSONObject jsonObject = localInAppConfigFromReadableMap(localInAppConfig);
320
+ cleverTap.promptPushPrimer(jsonObject);
321
+ } else {
322
+ Log.e(TAG, ErrorMessages.CLEVERTAP_NOT_INITIALIZED.getErrorMessage());
323
+ }
324
+ }
325
+
326
+ @ReactMethod
327
+ public void isPushPermissionGranted(final Callback callback) {
328
+ final CleverTapAPI clevertap = getCleverTapAPI();
329
+ if (clevertap != null) {
330
+ boolean isPushPermissionGranted = clevertap.isPushPermissionGranted();
331
+ callbackWithErrorAndResult(callback, null, isPushPermissionGranted);
332
+ } else {
333
+ String error = ErrorMessages.CLEVERTAP_NOT_INITIALIZED.getErrorMessage();
334
+ callbackWithErrorAndResult(callback, error, null);
335
+ }
336
+ }
337
+
338
+ @Override
339
+ public void onPushPermissionResponse(boolean accepted) {
340
+ Log.i(TAG, "onPushPermissionResponse result: " + accepted);
341
+ WritableMap params = Arguments.createMap();
342
+ params.putBoolean("accepted", accepted);
343
+ sendEvent(CLEVERTAP_ON_PUSH_PERMISSION_RESPONSE, params);
344
+ }
345
+
285
346
  @ReactMethod
286
347
  public void disablePersonalization() {
287
348
  CleverTapAPI clevertap = getCleverTapAPI();
@@ -456,6 +517,7 @@ public class CleverTapModule extends ReactContextBaseJavaModule implements SyncL
456
517
  constants.put(CLEVERTAP_PROFILE_DID_INITIALIZE, CLEVERTAP_PROFILE_DID_INITIALIZE);
457
518
  constants.put(CLEVERTAP_PROFILE_SYNC, CLEVERTAP_PROFILE_SYNC);
458
519
  constants.put(CLEVERTAP_IN_APP_NOTIFICATION_DISMISSED, CLEVERTAP_IN_APP_NOTIFICATION_DISMISSED);
520
+ constants.put(CLEVERTAP_IN_APP_NOTIFICATION_SHOWED, CLEVERTAP_IN_APP_NOTIFICATION_SHOWED);
459
521
  constants.put(FCM, FCM);
460
522
  constants.put(XPS, XPS);
461
523
  constants.put(BPS, BPS);
@@ -471,6 +533,7 @@ public class CleverTapModule extends ReactContextBaseJavaModule implements SyncL
471
533
  constants.put(CLEVERTAP_PRODUCT_CONFIG_DID_FETCH, CLEVERTAP_PRODUCT_CONFIG_DID_FETCH);
472
534
  constants.put(CLEVERTAP_PRODUCT_CONFIG_DID_ACTIVATE, CLEVERTAP_PRODUCT_CONFIG_DID_ACTIVATE);
473
535
  constants.put(CLEVERTAP_PUSH_NOTIFICATION_CLICKED, CLEVERTAP_PUSH_NOTIFICATION_CLICKED);
536
+ constants.put(CLEVERTAP_ON_PUSH_PERMISSION_RESPONSE, CLEVERTAP_ON_PUSH_PERMISSION_RESPONSE);
474
537
  return constants;
475
538
  }
476
539
 
@@ -1373,21 +1436,26 @@ public class CleverTapModule extends ReactContextBaseJavaModule implements SyncL
1373
1436
  return props;
1374
1437
  }
1375
1438
 
1439
+ private void registerListeners(CleverTapAPI clevertap) {
1440
+ clevertap.registerPushPermissionNotificationResponseListener(this);
1441
+ clevertap.setCTPushNotificationListener(this);
1442
+ clevertap.setInAppNotificationListener(this);
1443
+ clevertap.setSyncListener(this);
1444
+ clevertap.setCTNotificationInboxListener(this);
1445
+ clevertap.setInboxMessageButtonListener(this);
1446
+ clevertap.setCTInboxMessageListener(this);
1447
+ clevertap.setInAppNotificationButtonListener(this);
1448
+ clevertap.setDisplayUnitListener(this);
1449
+ clevertap.setCTProductConfigListener(this);
1450
+ clevertap.setCTFeatureFlagsListener(this);
1451
+ clevertap.setLibrary("React-Native");
1452
+ }
1453
+
1376
1454
  private CleverTapAPI getCleverTapAPI() {
1377
1455
  if (mCleverTap == null) {
1378
1456
  CleverTapAPI clevertap = CleverTapAPI.getDefaultInstance(this.context);
1379
1457
  if (clevertap != null) {
1380
- clevertap.setCTPushNotificationListener(this);
1381
- clevertap.setInAppNotificationListener(this);
1382
- clevertap.setSyncListener(this);
1383
- clevertap.setCTNotificationInboxListener(this);
1384
- clevertap.setInboxMessageButtonListener(this);
1385
- clevertap.setCTInboxMessageListener(this);
1386
- clevertap.setInAppNotificationButtonListener(this);
1387
- clevertap.setDisplayUnitListener(this);
1388
- clevertap.setCTProductConfigListener(this);
1389
- clevertap.setCTFeatureFlagsListener(this);
1390
- clevertap.setLibrary("React-Native");
1458
+ registerListeners(clevertap);
1391
1459
  }
1392
1460
  mCleverTap = clevertap;
1393
1461
  }
@@ -1395,6 +1463,18 @@ public class CleverTapModule extends ReactContextBaseJavaModule implements SyncL
1395
1463
  return mCleverTap;
1396
1464
  }
1397
1465
 
1466
+ @ReactMethod
1467
+ public void setInstanceWithAccountId(String accountId) {
1468
+ if (mCleverTap == null || !accountId.equals(mCleverTap.getAccountId())) {
1469
+ CleverTapAPI cleverTap = CleverTapAPI.getGlobalInstance(this.context, accountId);
1470
+ if (cleverTap != null) {
1471
+ registerListeners(cleverTap);
1472
+ mCleverTap = cleverTap;
1473
+ Log.i(TAG, "CleverTap instance changed for accountId " + accountId);
1474
+ }
1475
+ }
1476
+ }
1477
+
1398
1478
  private CTProductConfigController getCtProductConfigController() {
1399
1479
  CleverTapAPI clevertap = getCleverTapAPI();
1400
1480
  if (clevertap == null) {
@@ -1504,6 +1584,154 @@ public class CleverTapModule extends ReactContextBaseJavaModule implements SyncL
1504
1584
  }
1505
1585
  }
1506
1586
 
1587
+ /**
1588
+ * retrieves the localInAppConfig from the given ReadableMap.
1589
+ * @param readableMap - the map config, received from the host application
1590
+ * @return the Json of the localInAppConfig
1591
+ */
1592
+ private JSONObject localInAppConfigFromReadableMap(ReadableMap readableMap) {
1593
+ if (readableMap == null) {
1594
+ return null;
1595
+ }
1596
+ CTLocalInApp.InAppType inAppType = null;
1597
+ String titleText = null, messageText = null, positiveBtnText = null, negativeBtnText = null,
1598
+ backgroundColor = null, btnBorderColor = null, titleTextColor = null, messageTextColor = null,
1599
+ btnTextColor = null, imageUrl = null, btnBackgroundColor = null, btnBorderRadius = null;
1600
+ boolean fallbackToSettings = false, followDeviceOrientation = false;
1601
+
1602
+ ReadableMapKeySetIterator iterator = readableMap.keySetIterator();
1603
+ while (iterator.hasNextKey()) {
1604
+ try {
1605
+ String configKey = iterator.nextKey();
1606
+ ReadableType readableType = readableMap.getType(configKey);
1607
+ if ("inAppType".equals(configKey) && readableType == ReadableType.String) {
1608
+ inAppType = inAppTypeFromString(readableMap.getString(configKey));
1609
+ }
1610
+ if ("titleText".equals(configKey) && readableType == ReadableType.String) {
1611
+ titleText = readableMap.getString(configKey);
1612
+ }
1613
+ if ("messageText".equals(configKey) && readableType == ReadableType.String) {
1614
+ messageText = readableMap.getString(configKey);
1615
+ }
1616
+ if ("followDeviceOrientation".equals(configKey) && readableType == ReadableType.Boolean) {
1617
+ followDeviceOrientation = readableMap.getBoolean(configKey);
1618
+ }
1619
+ if ("positiveBtnText".equals(configKey) && readableType == ReadableType.String) {
1620
+ positiveBtnText = readableMap.getString(configKey);
1621
+ }
1622
+ if ("negativeBtnText".equals(configKey) && readableType == ReadableType.String) {
1623
+ negativeBtnText = readableMap.getString(configKey);
1624
+ }
1625
+ if ("fallbackToSettings".equals(configKey) && readableType == ReadableType.Boolean) {
1626
+ fallbackToSettings = readableMap.getBoolean(configKey);
1627
+ }
1628
+ if ("backgroundColor".equals(configKey) && readableType == ReadableType.String) {
1629
+ backgroundColor = readableMap.getString(configKey);
1630
+ }
1631
+ if ("btnBorderColor".equals(configKey) && readableType == ReadableType.String) {
1632
+ btnBorderColor = readableMap.getString(configKey);
1633
+ }
1634
+ if ("titleTextColor".equals(configKey) && readableType == ReadableType.String) {
1635
+ titleTextColor = readableMap.getString(configKey);
1636
+ }
1637
+ if ("messageTextColor".equals(configKey) && readableType == ReadableType.String) {
1638
+ messageTextColor = readableMap.getString(configKey);
1639
+ }
1640
+ if ("btnTextColor".equals(configKey) && readableType == ReadableType.String) {
1641
+ btnTextColor = readableMap.getString(configKey);
1642
+ }
1643
+ if ("imageUrl".equals(configKey) && readableType == ReadableType.String) {
1644
+ imageUrl = readableMap.getString(configKey);
1645
+ }
1646
+ if ("btnBackgroundColor".equals(configKey) && readableType == ReadableType.String) {
1647
+ btnBackgroundColor = readableMap.getString(configKey);
1648
+ }
1649
+ if ("btnBorderRadius".equals(configKey) && readableType == ReadableType.String) {
1650
+ btnBorderRadius = readableMap.getString(configKey);
1651
+ }
1652
+ } catch (Throwable t) {
1653
+ Log.e(TAG, "invalid parameters in push primer config" + t.getLocalizedMessage());
1654
+ return null;
1655
+ }
1656
+ }
1657
+
1658
+ //creates the builder instance of localInApp with all the required parameters
1659
+ CTLocalInApp.Builder.Builder6 builderWithRequiredParams = getLocalInAppBuilderWithRequiredParam(
1660
+ inAppType, titleText, messageText, followDeviceOrientation, positiveBtnText, negativeBtnText
1661
+ );
1662
+
1663
+ //adds the optional parameters to the builder instance
1664
+ if(backgroundColor != null) {
1665
+ builderWithRequiredParams.setBackgroundColor(backgroundColor);
1666
+ }
1667
+ if(btnBorderColor != null) {
1668
+ builderWithRequiredParams.setBtnBorderColor(btnBorderColor);
1669
+ }
1670
+ if(titleTextColor != null) {
1671
+ builderWithRequiredParams.setTitleTextColor(titleTextColor);
1672
+ }
1673
+ if(messageTextColor != null) {
1674
+ builderWithRequiredParams.setMessageTextColor(messageTextColor);
1675
+ }
1676
+ if(btnTextColor != null) {
1677
+ builderWithRequiredParams.setBtnTextColor(btnTextColor);
1678
+ }
1679
+ if(imageUrl != null) {
1680
+ builderWithRequiredParams.setImageUrl(imageUrl);
1681
+ }
1682
+ if(btnBackgroundColor != null) {
1683
+ builderWithRequiredParams.setBtnBackgroundColor(btnBackgroundColor);
1684
+ }
1685
+ if(btnBorderRadius != null) {
1686
+ builderWithRequiredParams.setBtnBorderRadius(btnBorderRadius);
1687
+ }
1688
+ builderWithRequiredParams.setFallbackToSettings(fallbackToSettings);
1689
+
1690
+ JSONObject localInAppConfig = builderWithRequiredParams.build();
1691
+ Log.i(TAG, "LocalInAppConfig for push primer prompt: " + localInAppConfig);
1692
+ return localInAppConfig;
1693
+ }
1694
+
1695
+ /**
1696
+ * Creates an instance of the {@link CTLocalInApp.Builder.Builder6} with the required parameters.
1697
+ * @return the {@link CTLocalInApp.Builder.Builder6} instance
1698
+ */
1699
+ private CTLocalInApp.Builder.Builder6 getLocalInAppBuilderWithRequiredParam(CTLocalInApp.InAppType inAppType,
1700
+ String titleText,
1701
+ String messageText,
1702
+ boolean followDeviceOrientation,
1703
+ String positiveBtnText,
1704
+ String negativeBtnText) {
1705
+ //throws exception if any of the required parameter is missing
1706
+ if (inAppType == null || titleText == null || messageText == null || positiveBtnText == null
1707
+ || negativeBtnText == null) {
1708
+ throw new IllegalArgumentException("mandatory parameters are missing in push primer config");
1709
+ }
1710
+
1711
+ CTLocalInApp.Builder builder = CTLocalInApp.builder();
1712
+ return builder.setInAppType(inAppType)
1713
+ .setTitleText(titleText)
1714
+ .setMessageText(messageText)
1715
+ .followDeviceOrientation(followDeviceOrientation)
1716
+ .setPositiveBtnText(positiveBtnText)
1717
+ .setNegativeBtnText(negativeBtnText);
1718
+ }
1719
+
1720
+ //returns InAppType type from the given string
1721
+ private CTLocalInApp.InAppType inAppTypeFromString(String inAppType) {
1722
+ if(inAppType == null) {
1723
+ return null;
1724
+ }
1725
+ switch (inAppType) {
1726
+ case "half-interstitial":
1727
+ return CTLocalInApp.InAppType.HALF_INTERSTITIAL;
1728
+ case "alert":
1729
+ return CTLocalInApp.InAppType.ALERT;
1730
+ default:
1731
+ return null;
1732
+ }
1733
+ }
1734
+
1507
1735
  private CTInboxStyleConfig styleConfigFromReadableMap(ReadableMap styleConfig) {
1508
1736
  if (styleConfig == null) {
1509
1737
  return new CTInboxStyleConfig();
@@ -18,6 +18,6 @@ Pod::Spec.new do |s|
18
18
  s.preserve_paths = 'LICENSE.md', 'README.md', 'package.json', 'index.js'
19
19
  s.source_files = 'ios/CleverTapReact/*.{h,m}'
20
20
 
21
- s.dependency 'CleverTap-iOS-SDK', '4.1.2'
21
+ s.dependency 'CleverTap-iOS-SDK', '4.2.0'
22
22
  s.dependency 'React-Core'
23
23
  end