@snowplow/react-native-tracker 1.4.0 → 2.1.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 (240) hide show
  1. package/.editorconfig +15 -0
  2. package/.eslintignore +6 -0
  3. package/.gitattributes +3 -0
  4. package/.github/ISSUE_TEMPLATE/bug_report.md +29 -0
  5. package/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
  6. package/.github/actions/setup/action.yml +28 -0
  7. package/.github/workflows/build.yml +155 -0
  8. package/.github/workflows/deploy.yml +97 -0
  9. package/.github/workflows/e2e-android.yml +121 -0
  10. package/.github/workflows/e2e-ios.yml +95 -0
  11. package/.github/workflows/snyk.yml +21 -0
  12. package/.gitignore +70 -0
  13. package/.npmignore +60 -0
  14. package/.nvmrc +1 -0
  15. package/.watchmanconfig +1 -0
  16. package/.yarnrc +3 -0
  17. package/CHANGELOG +176 -0
  18. package/CONTRIBUTING.md +80 -0
  19. package/LICENSE +1 -1
  20. package/README.md +24 -111
  21. package/android/build.gradle +93 -37
  22. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  23. package/android/gradle/wrapper/gradle-wrapper.properties +1 -2
  24. package/android/gradle.properties +5 -2
  25. package/android/gradlew +172 -110
  26. package/android/gradlew.bat +24 -19
  27. package/android/src/main/AndroidManifest.xml +1 -3
  28. package/android/src/main/AndroidManifestNew.xml +2 -0
  29. package/android/src/main/java/com/snowplow/reactnativetracker/ReactNativeTrackerModule.kt +744 -0
  30. package/android/src/main/java/com/snowplow/reactnativetracker/ReactNativeTrackerPackage.kt +17 -0
  31. package/android/src/main/java/com/snowplow/reactnativetracker/util/ConfigUtil.kt +274 -0
  32. package/android/src/main/java/com/snowplow/reactnativetracker/util/EventUtil.kt +233 -0
  33. package/android/src/main/java/com/snowplow/reactnativetracker/util/TrackerVersion.kt +5 -0
  34. package/babel.config.js +3 -0
  35. package/example/.watchmanconfig +1 -0
  36. package/example/Gemfile +6 -0
  37. package/example/android/app/build.gradle +129 -0
  38. package/example/android/app/debug.keystore +0 -0
  39. package/example/android/app/proguard-rules.pro +10 -0
  40. package/example/android/app/src/androidTest/java/com/reactnativetrackerexample/DetoxTest.java +36 -0
  41. package/example/android/app/src/androidTest/java/com/reactnativetrackerexample/DetoxTestAppJUnitRunner.java +21 -0
  42. package/example/android/app/src/debug/AndroidManifest.xml +13 -0
  43. package/example/android/app/src/debug/java/com/reactnativetrackerexample/ReactNativeFlipper.java +75 -0
  44. package/example/android/app/src/main/AndroidManifest.xml +26 -0
  45. package/example/android/app/src/main/java/com/reactnativetrackerexample/MainActivity.java +32 -0
  46. package/example/android/app/src/main/java/com/reactnativetrackerexample/MainApplication.java +62 -0
  47. package/example/android/app/src/main/res/drawable/rn_edit_text_material.xml +36 -0
  48. package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  49. package/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  50. package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  51. package/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  52. package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  53. package/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  54. package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  55. package/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  56. package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  57. package/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  58. package/example/android/app/src/main/res/values/strings.xml +3 -0
  59. package/example/android/app/src/main/res/values/styles.xml +9 -0
  60. package/example/android/app/src/release/java/com/reactnativetrackerexample/ReactNativeFlipper.java +20 -0
  61. package/example/android/build.gradle +31 -0
  62. package/example/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  63. package/example/android/gradle/wrapper/gradle-wrapper.properties +6 -0
  64. package/example/android/gradle.properties +44 -0
  65. package/example/android/gradlew +244 -0
  66. package/example/android/gradlew.bat +92 -0
  67. package/example/android/settings.gradle +4 -0
  68. package/example/app.json +4 -0
  69. package/example/babel.config.js +17 -0
  70. package/example/detox.config.js +92 -0
  71. package/example/e2e/config.json +10 -0
  72. package/example/e2e/emitEvents.e2e.detox.js +95 -0
  73. package/example/e2e/environment.js +23 -0
  74. package/example/e2e/helpers/microCommands.js +140 -0
  75. package/example/e2e/helpers/microHelpers.js +333 -0
  76. package/example/e2e/helpers/microHelpers.test.js +295 -0
  77. package/example/e2e/helpers/schemas.js +49 -0
  78. package/example/e2e/jest.config.js +16 -0
  79. package/example/e2e/setup.js +4 -0
  80. package/example/e2e/testEvents.micro.test.js +287 -0
  81. package/example/index.js +5 -0
  82. package/example/ios/.xcode.env +11 -0
  83. package/example/ios/Podfile +62 -0
  84. package/example/ios/Podfile.lock +730 -0
  85. package/example/ios/ReactNativeTrackerExample/AppDelegate.h +6 -0
  86. package/example/ios/ReactNativeTrackerExample/AppDelegate.mm +26 -0
  87. package/example/ios/ReactNativeTrackerExample/Images.xcassets/AppIcon.appiconset/Contents.json +53 -0
  88. package/example/ios/ReactNativeTrackerExample/Images.xcassets/Contents.json +6 -0
  89. package/example/ios/ReactNativeTrackerExample/Info.plist +55 -0
  90. package/example/ios/ReactNativeTrackerExample/LaunchScreen.storyboard +47 -0
  91. package/example/ios/ReactNativeTrackerExample/main.m +10 -0
  92. package/example/ios/ReactNativeTrackerExample-Bridging-Header.h +3 -0
  93. package/example/ios/ReactNativeTrackerExample.xcodeproj/project.pbxproj +722 -0
  94. package/{ios/RNSnowplowTracker.xcodeproj/xcshareddata/xcschemes/RNSnowplowTracker.xcscheme → example/ios/ReactNativeTrackerExample.xcodeproj/xcshareddata/xcschemes/ReactNativeTrackerExample.xcscheme} +29 -21
  95. package/example/ios/ReactNativeTrackerExample.xcworkspace/contents.xcworkspacedata +10 -0
  96. package/example/ios/ReactNativeTrackerExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  97. package/example/ios/ReactNativeTrackerExampleTests/Info.plist +24 -0
  98. package/example/ios/ReactNativeTrackerExampleTests/ReactNativeTrackerExampleTests.m +66 -0
  99. package/example/metro.config.js +45 -0
  100. package/example/package.json +54 -0
  101. package/example/react-native.config.js +10 -0
  102. package/example/src/App.js +566 -0
  103. package/example/tsconfig.json +5 -0
  104. package/example/yarn.lock +7379 -0
  105. package/ios/ReactNativeTracker-Bridging-Header.h +2 -0
  106. package/ios/ReactNativeTracker.mm +175 -0
  107. package/ios/ReactNativeTracker.swift +822 -0
  108. package/ios/{RNSnowplowTracker.xcodeproj → ReactNativeTracker.xcodeproj}/project.pbxproj +55 -79
  109. package/ios/Util/ConfigUtils.swift +209 -0
  110. package/ios/Util/TrackerVersion.swift +3 -0
  111. package/ios/Util/Utilities.swift +37 -0
  112. package/lefthook.yml +11 -0
  113. package/lib/commonjs/api.js +490 -0
  114. package/lib/commonjs/api.js.map +1 -0
  115. package/lib/commonjs/configurations.js +196 -0
  116. package/lib/commonjs/configurations.js.map +1 -0
  117. package/lib/commonjs/constants.js +77 -0
  118. package/lib/commonjs/constants.js.map +1 -0
  119. package/lib/commonjs/events.js +277 -0
  120. package/lib/commonjs/events.js.map +1 -0
  121. package/lib/commonjs/index.js +132 -0
  122. package/lib/commonjs/index.js.map +1 -0
  123. package/lib/commonjs/jsCore.js +427 -0
  124. package/lib/commonjs/jsCore.js.map +1 -0
  125. package/lib/commonjs/native.js +16 -0
  126. package/lib/commonjs/native.js.map +1 -0
  127. package/lib/commonjs/subject.js +235 -0
  128. package/lib/commonjs/subject.js.map +1 -0
  129. package/lib/commonjs/tracker.js +248 -0
  130. package/lib/commonjs/tracker.js.map +1 -0
  131. package/lib/commonjs/types.js +2 -0
  132. package/lib/commonjs/types.js.map +1 -0
  133. package/lib/commonjs/utils.js +72 -0
  134. package/lib/commonjs/utils.js.map +1 -0
  135. package/lib/commonjs/webViewInterface.js +66 -0
  136. package/lib/commonjs/webViewInterface.js.map +1 -0
  137. package/lib/module/api.js +452 -0
  138. package/lib/module/api.js.map +1 -0
  139. package/lib/module/configurations.js +184 -0
  140. package/lib/module/configurations.js.map +1 -0
  141. package/lib/module/constants.js +72 -0
  142. package/lib/module/constants.js.map +1 -0
  143. package/lib/module/events.js +259 -0
  144. package/lib/module/events.js.map +1 -0
  145. package/lib/module/index.js +120 -0
  146. package/lib/module/index.js.map +1 -0
  147. package/lib/module/jsCore.js +424 -0
  148. package/lib/module/jsCore.js.map +1 -0
  149. package/lib/module/native.js +12 -0
  150. package/lib/module/native.js.map +1 -0
  151. package/lib/module/subject.js +222 -0
  152. package/lib/module/subject.js.map +1 -0
  153. package/lib/module/tracker.js +234 -0
  154. package/lib/module/tracker.js.map +1 -0
  155. package/lib/module/types.js +2 -0
  156. package/lib/module/types.js.map +1 -0
  157. package/lib/module/utils.js +66 -0
  158. package/lib/module/utils.js.map +1 -0
  159. package/lib/module/webViewInterface.js +62 -0
  160. package/lib/module/webViewInterface.js.map +1 -0
  161. package/lib/typescript/__tests__/api.test.d.ts +2 -0
  162. package/lib/typescript/__tests__/api.test.d.ts.map +1 -0
  163. package/lib/typescript/__tests__/configurations.test.d.ts +2 -0
  164. package/lib/typescript/__tests__/configurations.test.d.ts.map +1 -0
  165. package/lib/typescript/__tests__/events.test.d.ts +2 -0
  166. package/lib/typescript/__tests__/events.test.d.ts.map +1 -0
  167. package/lib/typescript/__tests__/index.test.d.ts +2 -0
  168. package/lib/typescript/__tests__/index.test.d.ts.map +1 -0
  169. package/lib/typescript/__tests__/jsCore.test.d.ts +2 -0
  170. package/lib/typescript/__tests__/jsCore.test.d.ts.map +1 -0
  171. package/lib/typescript/__tests__/utils.test.d.ts +2 -0
  172. package/lib/typescript/__tests__/utils.test.d.ts.map +1 -0
  173. package/lib/typescript/api.d.ts +240 -0
  174. package/lib/typescript/api.d.ts.map +1 -0
  175. package/lib/typescript/configurations.d.ts +73 -0
  176. package/lib/typescript/configurations.d.ts.map +1 -0
  177. package/lib/typescript/constants.d.ts +64 -0
  178. package/lib/typescript/constants.d.ts.map +1 -0
  179. package/lib/typescript/events.d.ts +115 -0
  180. package/lib/typescript/events.d.ts.map +1 -0
  181. package/lib/typescript/index.d.ts +27 -0
  182. package/lib/typescript/index.d.ts.map +1 -0
  183. package/lib/typescript/jsCore.d.ts +152 -0
  184. package/lib/typescript/jsCore.d.ts.map +1 -0
  185. package/lib/typescript/native.d.ts +4 -0
  186. package/lib/typescript/native.d.ts.map +1 -0
  187. package/lib/typescript/subject.d.ts +91 -0
  188. package/lib/typescript/subject.d.ts.map +1 -0
  189. package/lib/typescript/tracker.d.ts +111 -0
  190. package/lib/typescript/tracker.d.ts.map +1 -0
  191. package/{dist/index.d.ts → lib/typescript/types.d.ts} +264 -73
  192. package/lib/typescript/types.d.ts.map +1 -0
  193. package/lib/typescript/utils.d.ts +35 -0
  194. package/lib/typescript/utils.d.ts.map +1 -0
  195. package/lib/typescript/webViewInterface.d.ts +15 -0
  196. package/lib/typescript/webViewInterface.d.ts.map +1 -0
  197. package/package.json +135 -53
  198. package/scripts/bootstrap.js +29 -0
  199. package/snowplow-react-native-tracker.podspec +42 -0
  200. package/src/__mocks__/react-native.js +7 -0
  201. package/src/__tests__/api.test.ts +21 -0
  202. package/src/__tests__/configurations.test.ts +608 -0
  203. package/src/__tests__/events.test.ts +736 -0
  204. package/src/__tests__/index.test.ts +14 -0
  205. package/src/__tests__/jsCore.test.ts +199 -0
  206. package/src/__tests__/utils.test.ts +10 -0
  207. package/src/api.ts +556 -0
  208. package/src/configurations.ts +325 -0
  209. package/src/constants.ts +97 -0
  210. package/src/events.ts +355 -0
  211. package/src/index.ts +184 -0
  212. package/src/jsCore.ts +603 -0
  213. package/src/native.ts +21 -0
  214. package/src/subject.ts +302 -0
  215. package/src/tracker.ts +377 -0
  216. package/src/types.ts +1162 -0
  217. package/src/utils.ts +65 -0
  218. package/src/webViewInterface.ts +92 -0
  219. package/tsconfig.build.json +5 -0
  220. package/tsconfig.json +28 -0
  221. package/turbo.json +34 -0
  222. package/yarn.lock +9333 -0
  223. package/RNSnowplowTracker.podspec +0 -24
  224. package/android/src/main/java/com/snowplowanalytics/react/tracker/RNSnowplowTrackerModule.java +0 -750
  225. package/android/src/main/java/com/snowplowanalytics/react/tracker/RNSnowplowTrackerPackage.java +0 -29
  226. package/android/src/main/java/com/snowplowanalytics/react/util/ConfigUtil.java +0 -351
  227. package/android/src/main/java/com/snowplowanalytics/react/util/EventUtil.java +0 -339
  228. package/android/src/main/java/com/snowplowanalytics/react/util/TrackerVersion.java +0 -7
  229. package/dist/index.js +0 -2026
  230. package/dist/index.js.map +0 -1
  231. package/ios/RNSnowplowTracker.h +0 -34
  232. package/ios/RNSnowplowTracker.m +0 -911
  233. package/ios/Util/NSDictionary+RNSP_TypeMethods.h +0 -33
  234. package/ios/Util/NSDictionary+RNSP_TypeMethods.m +0 -40
  235. package/ios/Util/RNConfigUtils.h +0 -44
  236. package/ios/Util/RNConfigUtils.m +0 -209
  237. package/ios/Util/RNTrackerVersion.h +0 -27
  238. package/ios/Util/RNTrackerVersion.m +0 -27
  239. package/ios/Util/RNUtilities.h +0 -32
  240. package/ios/Util/RNUtilities.m +0 -68
@@ -1,750 +0,0 @@
1
- package com.snowplowanalytics.react.tracker;
2
-
3
- import com.facebook.react.bridge.ReactApplicationContext;
4
- import com.facebook.react.bridge.ReactContextBaseJavaModule;
5
- import com.facebook.react.bridge.ReactMethod;
6
- import com.facebook.react.bridge.Promise;
7
-
8
- import com.facebook.react.bridge.ReadableArray;
9
- import com.facebook.react.bridge.ReadableMap;
10
-
11
- import com.facebook.react.bridge.ReadableMapKeySetIterator;
12
- import com.snowplowanalytics.snowplow.Snowplow;
13
- import com.snowplowanalytics.snowplow.configuration.Configuration;
14
- import com.snowplowanalytics.snowplow.configuration.EmitterConfiguration;
15
- import com.snowplowanalytics.snowplow.configuration.GdprConfiguration;
16
- import com.snowplowanalytics.snowplow.configuration.NetworkConfiguration;
17
- import com.snowplowanalytics.snowplow.configuration.SessionConfiguration;
18
- import com.snowplowanalytics.snowplow.configuration.TrackerConfiguration;
19
- import com.snowplowanalytics.snowplow.configuration.SubjectConfiguration;
20
- import com.snowplowanalytics.snowplow.configuration.GlobalContextsConfiguration;
21
- import com.snowplowanalytics.snowplow.event.DeepLinkReceived;
22
- import com.snowplowanalytics.snowplow.event.MessageNotification;
23
- import com.snowplowanalytics.snowplow.globalcontexts.GlobalContext;
24
- import com.snowplowanalytics.snowplow.controller.TrackerController;
25
- import com.snowplowanalytics.snowplow.network.CollectorCookieJar;
26
- import com.snowplowanalytics.snowplow.payload.SelfDescribingJson;
27
- import com.snowplowanalytics.snowplow.event.SelfDescribing;
28
- import com.snowplowanalytics.snowplow.event.ScreenView;
29
- import com.snowplowanalytics.snowplow.event.Structured;
30
- import com.snowplowanalytics.snowplow.event.PageView;
31
- import com.snowplowanalytics.snowplow.event.Timing;
32
- import com.snowplowanalytics.snowplow.event.ConsentGranted;
33
- import com.snowplowanalytics.snowplow.event.ConsentWithdrawn;
34
- import com.snowplowanalytics.snowplow.event.EcommerceTransaction;
35
- import com.snowplowanalytics.snowplow.network.HttpMethod;
36
- import com.snowplowanalytics.snowplow.util.Size;
37
-
38
- import java.util.List;
39
- import java.util.ArrayList;
40
- import java.util.concurrent.TimeUnit;
41
-
42
- import com.snowplowanalytics.react.util.EventUtil;
43
- import com.snowplowanalytics.react.util.ConfigUtil;
44
-
45
- import okhttp3.OkHttpClient;
46
- import okhttp3.Request;
47
-
48
- public class RNSnowplowTrackerModule extends ReactContextBaseJavaModule {
49
-
50
- private final ReactApplicationContext reactContext;
51
-
52
- public RNSnowplowTrackerModule(ReactApplicationContext reactContext) {
53
- super(reactContext);
54
- this.reactContext = reactContext;
55
- }
56
-
57
- @Override
58
- public String getName() {
59
- return "RNSnowplowTracker";
60
- }
61
-
62
- @ReactMethod
63
- public void createTracker(ReadableMap argmap,
64
- Promise promise) {
65
- try {
66
- String trackerNs = argmap.getString("namespace");
67
- ReadableMap networkConfig = argmap.getMap("networkConfig");
68
-
69
- // NetworkConfiguration
70
- NetworkConfiguration networkConfiguration;
71
- if (networkConfig.hasKey("method") && !networkConfig.isNull("method")) {
72
- String method = networkConfig.getString("method");
73
- networkConfiguration = new NetworkConfiguration(
74
- networkConfig.getString("endpoint"),
75
- ("get".equalsIgnoreCase(method) ? HttpMethod.GET : HttpMethod.POST));
76
- } else {
77
- networkConfiguration = new NetworkConfiguration(networkConfig.getString("endpoint"));
78
- }
79
- if (networkConfig.hasKey("customPostPath") && !networkConfig.isNull("customPostPath")) {
80
- String customPostPath = networkConfig.getString("customPostPath");
81
- networkConfiguration.customPostPath = customPostPath;
82
- }
83
- if (networkConfig.hasKey("requestHeaders") && !networkConfig.isNull("requestHeaders")) {
84
- ReadableMap requestHeaders = networkConfig.getMap("requestHeaders");
85
- if (requestHeaders != null) {
86
- OkHttpClient client = new OkHttpClient.Builder()
87
- .connectTimeout(15, TimeUnit.SECONDS)
88
- .readTimeout(15, TimeUnit.SECONDS)
89
- .cookieJar(new CollectorCookieJar(reactContext))
90
- .addInterceptor(chain -> {
91
- Request.Builder requestBuilder = chain.request().newBuilder();
92
- ReadableMapKeySetIterator it = requestHeaders.keySetIterator();
93
- while (it.hasNextKey()) {
94
- String key = it.nextKey();
95
- String value = requestHeaders.getString(key);
96
- if (value != null) { requestBuilder.header(key, value); }
97
- }
98
- return chain.proceed(requestBuilder.build());
99
- }).build();
100
- networkConfiguration.okHttpClient(client);
101
- }
102
- }
103
-
104
- // Configurations
105
- List<Configuration> controllers = new ArrayList<Configuration>();
106
-
107
- // TrackerConfiguration
108
- if (argmap.hasKey("trackerConfig")) {
109
- ReadableMap trackerConfig = argmap.getMap("trackerConfig");
110
- TrackerConfiguration trackerConfiguration = ConfigUtil.mkTrackerConfiguration(trackerConfig, this.reactContext);
111
- controllers.add(trackerConfiguration);
112
- }
113
-
114
- // SessionConfiguration
115
- if (argmap.hasKey("sessionConfig")) {
116
- ReadableMap sessionConfig = argmap.getMap("sessionConfig");
117
- SessionConfiguration sessionConfiguration = ConfigUtil.mkSessionConfiguration(sessionConfig);
118
- controllers.add(sessionConfiguration);
119
- }
120
-
121
- // EmitterConfiguration
122
- if (argmap.hasKey("emitterConfig")) {
123
- ReadableMap emitterConfig = argmap.getMap("emitterConfig");
124
- EmitterConfiguration emitterConfiguration = ConfigUtil.mkEmitterConfiguration(emitterConfig);
125
- controllers.add(emitterConfiguration);
126
- }
127
-
128
- // SubjectConfiguration
129
- if (argmap.hasKey("subjectConfig")) {
130
- ReadableMap subjectConfig = argmap.getMap("subjectConfig");
131
- SubjectConfiguration subjectConfiguration = ConfigUtil.mkSubjectConfiguration(subjectConfig);
132
- controllers.add(subjectConfiguration);
133
- }
134
-
135
- // GdprConfiguration
136
- if (argmap.hasKey("gdprConfig")) {
137
- ReadableMap gdprConfig = argmap.getMap("gdprConfig");
138
- GdprConfiguration gdprConfiguration = ConfigUtil.mkGdprConfiguration(gdprConfig);
139
- controllers.add(gdprConfiguration);
140
- }
141
-
142
- // GCConfiguration
143
- if (argmap.hasKey("gcConfig")) {
144
- ReadableArray gcConfig = argmap.getArray("gcConfig");
145
- GlobalContextsConfiguration gcConfiguration = ConfigUtil.mkGCConfiguration(gcConfig);
146
- controllers.add(gcConfiguration);
147
- }
148
-
149
- // create the tracker
150
- Snowplow.createTracker(this.reactContext,
151
- trackerNs,
152
- networkConfiguration,
153
- controllers.toArray(new Configuration[controllers.size()]));
154
-
155
- promise.resolve(true);
156
-
157
- } catch(Throwable t) {
158
- promise.reject("ERROR", t.getMessage());
159
- }
160
- }
161
-
162
- @ReactMethod
163
- public void removeTracker(ReadableMap details,
164
- Promise promise) {
165
- try {
166
- String namespace = details.getString("tracker");
167
- TrackerController trackerController = getTracker(namespace);
168
-
169
- promise.resolve(Snowplow.removeTracker(trackerController));
170
-
171
- } catch(Throwable t) {
172
- promise.reject("ERROR", t.getMessage());
173
- }
174
- }
175
-
176
- @ReactMethod
177
- public void removeAllTrackers(Promise promise) {
178
- try {
179
- Snowplow.removeAllTrackers();
180
- promise.resolve(true);
181
-
182
- } catch(Throwable t) {
183
- promise.reject("ERROR", t.getMessage());
184
- }
185
- }
186
-
187
- @ReactMethod
188
- public void trackSelfDescribingEvent(ReadableMap details,
189
- Promise promise) {
190
- try {
191
- String namespace = details.getString("tracker");
192
- ReadableMap argmap = details.getMap("eventData");
193
- ReadableArray contexts = details.getArray("contexts");
194
-
195
- TrackerController trackerController = getTracker(namespace);
196
-
197
- SelfDescribingJson sdj = EventUtil.createSelfDescribingJson(argmap);
198
- SelfDescribing event = new SelfDescribing(sdj);
199
-
200
- List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
201
- event.customContexts.addAll(evCtxts);
202
-
203
- trackerController.track(event);
204
- promise.resolve(true);
205
-
206
- } catch(Throwable t) {
207
- promise.reject("ERROR", t.getMessage());
208
- }
209
- }
210
-
211
- @ReactMethod
212
- public void trackStructuredEvent(ReadableMap details,
213
- Promise promise) {
214
- try {
215
- String namespace = details.getString("tracker");
216
- ReadableMap argmap = details.getMap("eventData");
217
- ReadableArray contexts = details.getArray("contexts");
218
-
219
- TrackerController trackerController = getTracker(namespace);
220
-
221
- Structured event = EventUtil.createStructuredEvent(argmap);
222
-
223
- List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
224
- event.customContexts.addAll(evCtxts);
225
-
226
- trackerController.track(event);
227
- promise.resolve(true);
228
-
229
- } catch(Throwable t) {
230
- promise.reject("ERROR", t.getMessage());
231
- }
232
- }
233
-
234
- @ReactMethod
235
- public void trackScreenViewEvent(ReadableMap details,
236
- Promise promise) {
237
- try {
238
- String namespace = details.getString("tracker");
239
- ReadableMap argmap = details.getMap("eventData");
240
- ReadableArray contexts = details.getArray("contexts");
241
-
242
- TrackerController trackerController = getTracker(namespace);
243
-
244
- ScreenView event = EventUtil.createScreenViewEvent(argmap);
245
-
246
- List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
247
- event.customContexts.addAll(evCtxts);
248
-
249
- trackerController.track(event);
250
- promise.resolve(true);
251
-
252
- } catch(Throwable t) {
253
- promise.reject("ERROR", t.getMessage());
254
- }
255
- }
256
-
257
- @ReactMethod
258
- public void trackPageViewEvent(ReadableMap details,
259
- Promise promise) {
260
- try {
261
- String namespace = details.getString("tracker");
262
- ReadableMap argmap = details.getMap("eventData");
263
- ReadableArray contexts = details.getArray("contexts");
264
-
265
- TrackerController trackerController = getTracker(namespace);
266
-
267
- PageView event = EventUtil.createPageViewEvent(argmap);
268
-
269
- List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
270
- event.customContexts.addAll(evCtxts);
271
-
272
- trackerController.track(event);
273
- promise.resolve(true);
274
-
275
- } catch(Throwable t) {
276
- promise.reject("ERROR", t.getMessage());
277
- }
278
- }
279
-
280
- @ReactMethod
281
- public void trackTimingEvent(ReadableMap details,
282
- Promise promise) {
283
- try {
284
- String namespace = details.getString("tracker");
285
- ReadableMap argmap = details.getMap("eventData");
286
- ReadableArray contexts = details.getArray("contexts");
287
-
288
- TrackerController trackerController = getTracker(namespace);
289
-
290
- Timing event = EventUtil.createTimingEvent(argmap);
291
-
292
- List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
293
- event.customContexts.addAll(evCtxts);
294
-
295
- trackerController.track(event);
296
- promise.resolve(true);
297
-
298
- } catch(Throwable t) {
299
- promise.reject("ERROR", t.getMessage());
300
- }
301
- }
302
-
303
- @ReactMethod
304
- public void trackConsentGrantedEvent(ReadableMap details,
305
- Promise promise) {
306
- try {
307
- String namespace = details.getString("tracker");
308
- ReadableMap argmap = details.getMap("eventData");
309
- ReadableArray contexts = details.getArray("contexts");
310
-
311
- TrackerController trackerController = getTracker(namespace);
312
-
313
- ConsentGranted event = EventUtil.createConsentGrantedEvent(argmap);
314
-
315
- List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
316
- event.customContexts.addAll(evCtxts);
317
-
318
- trackerController.track(event);
319
- promise.resolve(true);
320
-
321
- } catch(Throwable t) {
322
- promise.reject("ERROR", t.getMessage());
323
- }
324
- }
325
-
326
- @ReactMethod
327
- public void trackConsentWithdrawnEvent(ReadableMap details,
328
- Promise promise) {
329
- try {
330
- String namespace = details.getString("tracker");
331
- ReadableMap argmap = details.getMap("eventData");
332
- ReadableArray contexts = details.getArray("contexts");
333
-
334
- TrackerController trackerController = getTracker(namespace);
335
-
336
- ConsentWithdrawn event = EventUtil.createConsentWithdrawnEvent(argmap);
337
-
338
- List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
339
- event.customContexts.addAll(evCtxts);
340
-
341
- trackerController.track(event);
342
- promise.resolve(true);
343
-
344
- } catch(Throwable t) {
345
- promise.reject("ERROR", t.getMessage());
346
- }
347
- }
348
-
349
- @ReactMethod
350
- public void trackEcommerceTransactionEvent(ReadableMap details,
351
- Promise promise) {
352
- try {
353
- String namespace = details.getString("tracker");
354
- ReadableMap argmap = details.getMap("eventData");
355
- ReadableArray contexts = details.getArray("contexts");
356
-
357
- TrackerController trackerController = getTracker(namespace);
358
-
359
- EcommerceTransaction event = EventUtil.createEcommerceTransactionEvent(argmap);
360
-
361
- List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
362
- event.customContexts.addAll(evCtxts);
363
-
364
- trackerController.track(event);
365
- promise.resolve(true);
366
-
367
- } catch(Throwable t) {
368
- promise.reject("ERROR", t.getMessage());
369
- }
370
- }
371
-
372
- @ReactMethod
373
- public void trackDeepLinkReceivedEvent(ReadableMap details,
374
- Promise promise) {
375
- try {
376
- String namespace = details.getString("tracker");
377
- ReadableMap argmap = details.getMap("eventData");
378
- ReadableArray contexts = details.getArray("contexts");
379
-
380
- TrackerController trackerController = getTracker(namespace);
381
-
382
- DeepLinkReceived event = EventUtil.createDeepLinkReceivedEvent(argmap);
383
-
384
- List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
385
- event.customContexts.addAll(evCtxts);
386
-
387
- trackerController.track(event);
388
- promise.resolve(true);
389
-
390
- } catch(Throwable t) {
391
- promise.reject("ERROR", t.getMessage());
392
- }
393
- }
394
-
395
- @ReactMethod
396
- public void trackMessageNotificationEvent(ReadableMap details,
397
- Promise promise) {
398
- try {
399
- String namespace = details.getString("tracker");
400
- ReadableMap argmap = details.getMap("eventData");
401
- ReadableArray contexts = details.getArray("contexts");
402
-
403
- TrackerController trackerController = getTracker(namespace);
404
-
405
- MessageNotification event = EventUtil.createMessageNotificationEvent(argmap);
406
-
407
- List<SelfDescribingJson> evCtxts = EventUtil.createContexts(contexts);
408
- event.customContexts.addAll(evCtxts);
409
-
410
- trackerController.track(event);
411
- promise.resolve(true);
412
-
413
- } catch(Throwable t) {
414
- promise.reject("ERROR", t.getMessage());
415
- }
416
- }
417
-
418
- @ReactMethod
419
- public void removeGlobalContexts(ReadableMap details,
420
- Promise promise) {
421
- try {
422
- String namespace = details.getString("tracker");
423
- String tag = details.getString("removeTag");
424
-
425
- TrackerController trackerController = getTracker(namespace);
426
-
427
- trackerController.getGlobalContexts().remove(tag);
428
- promise.resolve(true);
429
-
430
- } catch(Throwable t) {
431
- promise.reject("ERROR", t.getMessage());
432
- }
433
- }
434
-
435
- @ReactMethod
436
- public void addGlobalContexts(ReadableMap details,
437
- Promise promise) {
438
- try {
439
- String namespace = details.getString("tracker");
440
- ReadableMap gcArg = details.getMap("addGlobalContext");
441
-
442
- String tag = gcArg.getString("tag");
443
- ReadableArray globalContexts = gcArg.getArray("globalContexts") ;
444
-
445
- List<SelfDescribingJson> staticContexts = new ArrayList<>();
446
- for (int i = 0; i < globalContexts.size(); i++) {
447
- SelfDescribingJson gContext = EventUtil.createSelfDescribingJson(globalContexts.getMap(i));
448
- staticContexts.add(gContext);
449
- }
450
- GlobalContext gcStatic = new GlobalContext(staticContexts);
451
-
452
- TrackerController trackerController = getTracker(namespace);
453
-
454
- trackerController.getGlobalContexts().add(tag, gcStatic);
455
- promise.resolve(true);
456
-
457
- } catch(Throwable t) {
458
- promise.reject("ERROR", t.getMessage());
459
- }
460
- }
461
-
462
- @ReactMethod
463
- public void setUserId(ReadableMap details,
464
- Promise promise) {
465
- try {
466
- String namespace = details.getString("tracker");
467
- TrackerController trackerController = getTracker(namespace);
468
-
469
- if (details.isNull("userId")) {
470
- trackerController.getSubject().setUserId(null);
471
- } else {
472
- trackerController.getSubject().setUserId(details.getString("userId"));
473
- }
474
- promise.resolve(true);
475
-
476
- } catch(Throwable t) {
477
- promise.reject("ERROR", t.getMessage());
478
- }
479
- }
480
-
481
- @ReactMethod
482
- public void setNetworkUserId(ReadableMap details,
483
- Promise promise) {
484
- try {
485
- String namespace = details.getString("tracker");
486
- TrackerController trackerController = getTracker(namespace);
487
-
488
- if (details.isNull("networkUserId")) {
489
- trackerController.getSubject().setNetworkUserId(null);
490
- } else {
491
- trackerController.getSubject().setNetworkUserId(details.getString("networkUserId"));
492
- }
493
- promise.resolve(true);
494
-
495
- } catch(Throwable t) {
496
- promise.reject("ERROR", t.getMessage());
497
- }
498
- }
499
-
500
- @ReactMethod
501
- public void setDomainUserId(ReadableMap details,
502
- Promise promise) {
503
- try {
504
- String namespace = details.getString("tracker");
505
- TrackerController trackerController = getTracker(namespace);
506
-
507
- if (details.isNull("domainUserId")) {
508
- trackerController.getSubject().setDomainUserId(null);
509
- } else {
510
- trackerController.getSubject().setDomainUserId(details.getString("domainUserId"));
511
- }
512
- promise.resolve(true);
513
-
514
- } catch(Throwable t) {
515
- promise.reject("ERROR", t.getMessage());
516
- }
517
- }
518
-
519
- @ReactMethod
520
- public void setIpAddress(ReadableMap details,
521
- Promise promise) {
522
- try {
523
- String namespace = details.getString("tracker");
524
- TrackerController trackerController = getTracker(namespace);
525
-
526
- if (details.isNull("ipAddress")) {
527
- trackerController.getSubject().setIpAddress(null);
528
- } else {
529
- trackerController.getSubject().setIpAddress(details.getString("ipAddress"));
530
- }
531
- promise.resolve(true);
532
-
533
- } catch(Throwable t) {
534
- promise.reject("ERROR", t.getMessage());
535
- }
536
- }
537
-
538
- @ReactMethod
539
- public void setUseragent(ReadableMap details,
540
- Promise promise) {
541
- try {
542
- String namespace = details.getString("tracker");
543
- TrackerController trackerController = getTracker(namespace);
544
-
545
- if (details.isNull("useragent")) {
546
- trackerController.getSubject().setUseragent(null);
547
- } else {
548
- trackerController.getSubject().setUseragent(details.getString("useragent"));
549
- }
550
- promise.resolve(true);
551
-
552
- } catch(Throwable t) {
553
- promise.reject("ERROR", t.getMessage());
554
- }
555
- }
556
-
557
- @ReactMethod
558
- public void setTimezone(ReadableMap details,
559
- Promise promise) {
560
- try {
561
- String namespace = details.getString("tracker");
562
- TrackerController trackerController = getTracker(namespace);
563
-
564
- if (details.isNull("timezone")) {
565
- trackerController.getSubject().setTimezone(null);
566
- } else {
567
- trackerController.getSubject().setTimezone(details.getString("timezone"));
568
- }
569
- promise.resolve(true);
570
-
571
- } catch(Throwable t) {
572
- promise.reject("ERROR", t.getMessage());
573
- }
574
- }
575
-
576
- @ReactMethod
577
- public void setLanguage(ReadableMap details,
578
- Promise promise) {
579
- try {
580
- String namespace = details.getString("tracker");
581
- TrackerController trackerController = getTracker(namespace);
582
-
583
- if (details.isNull("language")) {
584
- trackerController.getSubject().setLanguage(null);
585
- } else {
586
- trackerController.getSubject().setLanguage(details.getString("language"));
587
- }
588
- promise.resolve(true);
589
-
590
- } catch(Throwable t) {
591
- promise.reject("ERROR", t.getMessage());
592
- }
593
- }
594
-
595
- @ReactMethod
596
- public void setScreenResolution(ReadableMap details,
597
- Promise promise) {
598
- try {
599
- String namespace = details.getString("tracker");
600
- TrackerController trackerController = getTracker(namespace);
601
-
602
- if (details.isNull("screenResolution")) {
603
- trackerController.getSubject().setScreenResolution(null);
604
- } else {
605
- ReadableArray screenRes = details.getArray("screenResolution");
606
- int width = screenRes.getInt(0);
607
- int height = screenRes.getInt(1);
608
- Size screenR = new Size(width, height);
609
-
610
- trackerController.getSubject().setScreenResolution(screenR);
611
- }
612
- promise.resolve(true);
613
-
614
- } catch(Throwable t) {
615
- promise.reject("ERROR", t.getMessage());
616
- }
617
- }
618
-
619
- @ReactMethod
620
- public void setScreenViewport(ReadableMap details,
621
- Promise promise) {
622
- try {
623
- String namespace = details.getString("tracker");
624
- TrackerController trackerController = getTracker(namespace);
625
-
626
- if (details.isNull("screenViewport")) {
627
- trackerController.getSubject().setScreenViewPort(null);
628
- } else {
629
- ReadableArray screenView = details.getArray("screenViewport");
630
- int width = screenView.getInt(0);
631
- int height = screenView.getInt(1);
632
- Size screenVP = new Size(width, height);
633
-
634
- trackerController.getSubject().setScreenViewPort(screenVP);
635
- }
636
- promise.resolve(true);
637
-
638
- } catch(Throwable t) {
639
- promise.reject("ERROR", t.getMessage());
640
- }
641
- }
642
-
643
- @ReactMethod
644
- public void setColorDepth(ReadableMap details,
645
- Promise promise) {
646
- try {
647
- String namespace = details.getString("tracker");
648
- TrackerController trackerController = getTracker(namespace);
649
-
650
- if (details.isNull("colorDepth")) {
651
- trackerController.getSubject().setColorDepth(null);
652
- } else {
653
- trackerController.getSubject().setColorDepth(details.getInt("colorDepth"));
654
- }
655
- promise.resolve(true);
656
-
657
- } catch(Throwable t) {
658
- promise.reject("ERROR", t.getMessage());
659
- }
660
- }
661
-
662
- @ReactMethod
663
- public void getSessionUserId(ReadableMap details,
664
- Promise promise) {
665
- try {
666
- String namespace = details.getString("tracker");
667
- TrackerController trackerController = getTracker(namespace);
668
-
669
- String suid = trackerController.getSession().getUserId();
670
- promise.resolve(suid);
671
- } catch(Throwable t) {
672
- promise.reject("ERROR", t.getMessage());
673
- }
674
- }
675
-
676
- @ReactMethod
677
- public void getSessionId(ReadableMap details,
678
- Promise promise) {
679
- try {
680
- String namespace = details.getString("tracker");
681
- TrackerController trackerController = getTracker(namespace);
682
-
683
- String sid = trackerController.getSession().getSessionId();
684
- promise.resolve(sid);
685
- } catch(Throwable t) {
686
- promise.reject("ERROR", t.getMessage());
687
- }
688
- }
689
-
690
- @ReactMethod
691
- public void getSessionIndex(ReadableMap details,
692
- Promise promise) {
693
- try {
694
- String namespace = details.getString("tracker");
695
- TrackerController trackerController = getTracker(namespace);
696
-
697
- int sidx = trackerController.getSession().getSessionIndex();
698
- promise.resolve(sidx);
699
- } catch(Throwable t) {
700
- promise.reject("ERROR", t.getMessage());
701
- }
702
- }
703
-
704
- @ReactMethod
705
- public void getIsInBackground(ReadableMap details,
706
- Promise promise) {
707
- try {
708
- String namespace = details.getString("tracker");
709
- TrackerController trackerController = getTracker(namespace);
710
-
711
- boolean isInBg = trackerController.getSession().isInBackground();
712
- promise.resolve(isInBg);
713
- } catch(Throwable t) {
714
- promise.reject("ERROR", t.getMessage());
715
- }
716
- }
717
-
718
- @ReactMethod
719
- public void getBackgroundIndex(ReadableMap details,
720
- Promise promise) {
721
- try {
722
- String namespace = details.getString("tracker");
723
- TrackerController trackerController = getTracker(namespace);
724
-
725
- int bgIdx = trackerController.getSession().getBackgroundIndex();
726
- promise.resolve(bgIdx);
727
- } catch(Throwable t) {
728
- promise.reject("ERROR", t.getMessage());
729
- }
730
- }
731
-
732
- @ReactMethod
733
- public void getForegroundIndex(ReadableMap details,
734
- Promise promise) {
735
- try {
736
- String namespace = details.getString("tracker");
737
- TrackerController trackerController = getTracker(namespace);
738
-
739
- int fgIdx = trackerController.getSession().getForegroundIndex();
740
- promise.resolve(fgIdx);
741
- } catch(Throwable t) {
742
- promise.reject("ERROR", t.getMessage());
743
- }
744
- }
745
-
746
- private TrackerController getTracker(String namespace) {
747
- return namespace == null ? Snowplow.getDefaultTracker() : Snowplow.getTracker(namespace);
748
- }
749
-
750
- }