react-native-ux-cam 5.4.16 → 6.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 (33) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/RNUxcam.podspec +21 -2
  3. package/android/build.gradle +38 -4
  4. package/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  5. package/android/gradle/wrapper/gradle-wrapper.properties +5 -0
  6. package/android/gradlew +240 -0
  7. package/android/gradlew.bat +91 -0
  8. package/android/src/main/java/com/uxcam/RNUxViewFinder.java +7 -0
  9. package/android/src/main/java/com/uxcam/RNUxcamModuleImpl.java +446 -0
  10. package/android/src/main/java/com/uxcam/RNUxcamPackage.java +33 -18
  11. package/android/src/newarch/java/com/uxcam/RNUxcamModule.java +208 -0
  12. package/android/src/oldarch/java/com/uxcam/RNUxcamModule.java +205 -0
  13. package/ios/RNUxcam/RNUxcam.h +16 -0
  14. package/ios/RNUxcam/RNUxcam.mm +526 -0
  15. package/package.json +36 -32
  16. package/src/NativeRNUxcam.ts +60 -0
  17. package/src/UXCam.js +343 -0
  18. package/src/UXCamOcclusion.tsx +29 -0
  19. package/{index.d.ts → src/index.d.ts} +9 -130
  20. package/src/index.js +3 -0
  21. package/src/types.ts +19 -0
  22. package/UXCam.js +0 -570
  23. package/UXCamOcclusion.tsx +0 -36
  24. package/android/.classpath +0 -6
  25. package/android/src/main/java/com/uxcam/RNUxcamModule.java +0 -559
  26. package/index.js +0 -3
  27. package/ios/RNUxcam.h +0 -19
  28. package/ios/RNUxcam.m +0 -670
  29. package/ios/RNUxcam.xcodeproj/project.pbxproj +0 -266
  30. package/ios/RNUxcam.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
  31. package/ios/RNUxcam.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +0 -8
  32. /package/{jest.config.js → src/jest.config.js} +0 -0
  33. /package/{tsconfig.json → src/tsconfig.json} +0 -0
package/src/UXCam.js ADDED
@@ -0,0 +1,343 @@
1
+ import { Platform, NativeModules, findNodeHandle, NativeEventEmitter } from 'react-native'
2
+
3
+ const isTurboModuleEnabled = global.__turboModuleProxy != null;
4
+ const UXCamBridge = isTurboModuleEnabled ? require("./NativeRNUxcam").default : NativeModules.RNUxcam;
5
+
6
+ const RNUxcam_VerifyEvent_Name = 'UXCam_Verification_Event';
7
+
8
+ // Capture the platform we are running on
9
+ const platform = Platform.OS;
10
+ const platformIOS = platform === "ios" ? true : false;
11
+ const platformAndroid = platform === "android" ? true : false;
12
+
13
+ export default class UXCam {
14
+
15
+ static startWithConfiguration(configuration) {
16
+ UXCamBridge.startWithConfiguration(configuration);
17
+ }
18
+
19
+ static startWithKey(userAppKey) {
20
+ const configuration = { "userAppKey": userAppKey };
21
+ UXCam.startWithConfiguration(configuration);
22
+ }
23
+
24
+ static applyOcclusion(occlusion) {
25
+ UXCamBridge.applyOcclusion(occlusion);
26
+ }
27
+
28
+ static removeOcclusion(occlusion) {
29
+ UXCamBridge.removeOcclusion(occlusion);
30
+ }
31
+
32
+ static addVerificationListener(status) {
33
+ const emitter = new NativeEventEmitter(UXCamBridge);
34
+ return emitter.addListener(RNUxcam_VerifyEvent_Name, status)
35
+ }
36
+
37
+ /**
38
+ * This will opt this device into session recordings
39
+ * - any current session will be stopped and a new session will be started with the last settings passed to `startWithKey`
40
+ */
41
+ static optInOverall() {
42
+ UXCamBridge.optInOverall();
43
+ }
44
+
45
+ /**
46
+ * This will cancel any current session recording and opt this device out of future session recordings until `optInOverall` is called
47
+ * @note The default is to opt-in to session recordings, but not to screen recordings, and the defaults will be reset if the user un-installs and re-installs the app
48
+ */
49
+ static optOutOverall() {
50
+ UXCamBridge.optOutOverall();
51
+ }
52
+
53
+ /**
54
+ * This will opt this device back into session recordings
55
+ */
56
+ static optIntoSchematicRecordings() {
57
+ if (platformIOS) {
58
+ UXCamBridge.optIntoSchematicRecordings();
59
+ }
60
+ }
61
+
62
+ /**
63
+ * This will opt this device out of schematic recordings for future sessions
64
+ * - any current session will be stopped and restarted with the last settings passed to `startWithKey`
65
+ */
66
+ static optOutOfSchematicRecordings() {
67
+ if (platformIOS) {
68
+ UXCamBridge.optOutOfSchematicRecordings();
69
+ }
70
+ }
71
+
72
+ /**
73
+ * Returns the opt-in status of this device
74
+ * @return `true` if the device is opted in to session recordings, `false` otherwise. The default is `false`.
75
+ */
76
+ static optInOverallStatus() {
77
+ return UXCamBridge.optInOverallStatus();
78
+ }
79
+
80
+ /** Returns the opt-in status of this device for schematic recordings
81
+ * @returns `true` if the device is opted in to schematic recordings, `false` otherwise. The default is `false`.
82
+ * @note Use in conjunction with optInOverallStatus to control the overall recording status for the device
83
+ */
84
+ static optInSchematicRecordingStatus() {
85
+ if (platformIOS) {
86
+ return UXCamBridge.optInSchematicRecordingStatus();
87
+ } else {
88
+ // Just return the general status for Android which doesn't currently split status between session data and video
89
+ return UXCamBridge.optInOverallStatus();
90
+ }
91
+ }
92
+
93
+ /**
94
+ * @brief Android only.
95
+ * This will opt this device into video recording for future sessions.
96
+ */
97
+ static optIntoVideoRecording() {
98
+ if (platformAndroid) {
99
+ UXCamBridge.optIntoVideoRecording();
100
+ } else if (platformIOS) {
101
+ UXCamBridge.optIntoSchematicRecordings();
102
+ }
103
+ }
104
+
105
+ /**
106
+ * @brief Android only.
107
+ * This will opt this device out of video recording for future sessions.
108
+ */
109
+ static optOutOfVideoRecording() {
110
+ if (platformAndroid) {
111
+ UXCamBridge.optOutOfVideoRecording();
112
+ } else if (platformIOS) {
113
+ UXCamBridge.optOutOfSchematicRecordings();
114
+ }
115
+ }
116
+
117
+ /**
118
+ * @brief Android only.
119
+ * Returns the opt-in video status of this device
120
+ * @return `true` if the device is opted in for video recordings, `false` otherwise.
121
+ */
122
+ static optInVideoRecordingStatus() {
123
+ if (platformAndroid) {
124
+ return UXCamBridge.optInVideoRecordingStatus();
125
+ } else if (platformIOS) {
126
+ return UXCamBridge.optInSchematicRecordingStatus();
127
+ }
128
+ return false;
129
+ }
130
+
131
+ /**
132
+ * Starts a new session after the {@link #stopSessionAndUploadData()} method has been called.
133
+ * This happens automatically when the app returns from background.
134
+ */
135
+ static startNewSession() {
136
+ UXCamBridge.startNewSession();
137
+ }
138
+
139
+ /**
140
+ * Stop current uxcam session and send captured data to server.<br>
141
+ * Use this to start sending the data on UXCam server without the app going into the background.<br>
142
+ * This starts an asynchronous process and returns immediately.
143
+ */
144
+ static stopSessionAndUploadData() {
145
+ UXCamBridge.stopSessionAndUploadData();
146
+ }
147
+
148
+ /**
149
+ * Cancels the recording of the current session and discards the data
150
+ *
151
+ * @note A new session will start as normal when the app nexts come out of the background (depending on the state of the MultiSessionRecord flag), or if you call `startNewSession`
152
+ */
153
+ static cancelCurrentSession() {
154
+ UXCamBridge.cancelCurrentSession();
155
+ }
156
+
157
+ /**
158
+ * Returns a URL path that shows the current session when it compeletes
159
+ *
160
+ * @note This can be used for tying in the current session with other analytics systems
161
+ *
162
+ * @return url path for current session or nil if no verified session is active
163
+ */
164
+ static async urlForCurrentSession() {
165
+ return UXCamBridge.urlForCurrentSession();
166
+ }
167
+
168
+ /**
169
+ * Returns a URL path for showing all the current users sessions
170
+ *
171
+ * @note This can be used for tying in the current user with other analytics systems
172
+ *
173
+ * @return url path for user session or nil if no verified session is active
174
+ */
175
+ static async urlForCurrentUser() {
176
+ return UXCamBridge.urlForCurrentUser();
177
+ }
178
+
179
+ /**
180
+ * @brief IOS only. Uploads sessions that were pending to be uploaded
181
+ *
182
+ * Sessions can be in the Pending state if UXCam was unable to upload them at the end of the last session. Normally they will be sent at the end of the next session.
183
+ */
184
+ static uploadPendingSession() {
185
+ return UXCamBridge.uploadPendingSession();
186
+ }
187
+
188
+ /**
189
+ * @brief Returns how many sessions are waiting to be uploaded
190
+ *
191
+ * Sessions can be in the Pending state if UXCam was unable to upload them at the end of the last session. Normally they will be sent at the end of the next session.
192
+ */
193
+ static pendingSessionCount() {
194
+ return UXCamBridge.pendingSessionCount();
195
+ }
196
+
197
+ /**
198
+ * @brief Deletes any sessions that are awaiting upload
199
+ * @note Advanced use only. This is not needed for most developers. This can't be called until UXCam startWithKey: has completed
200
+ */
201
+ static deletePendingUploads() {
202
+ UXCamBridge.deletePendingUploads();
203
+ }
204
+
205
+ /**
206
+ * By default UXCam will end a session immediately when your app goes into the background. But if you are switching over to another app for authorisation, or some other short action, and want the session to continue when the user comes back to your app then call this method with a value of `true` before switching away to the other app.
207
+ * UXCam will pause the current session as your app goes into the background and then continue the session when your app resumes. If your app doesn't resume within a couple of minutes the original session will be closed as normal and a new session will start when your app eventually is resumed.
208
+ * @param duration Set time to wait in `milliseconds` before finishing the session.
209
+ */
210
+ static allowShortBreakForAnotherApp(duration) {
211
+ if (typeof duration == 'boolean') {
212
+ UXCamBridge.allowShortBreakForAnotherApp(duration);
213
+ } else if (typeof duration == 'number') {
214
+ UXCamBridge.allowShortBreakForAnotherAppInMillis(duration);
215
+ }
216
+
217
+ }
218
+
219
+ /**
220
+ * @brief Resume after short break. Only used in android, does nothing on iOS
221
+ */
222
+ static resumeShortBreakForAnotherApp() {
223
+ UXCamBridge.resumeShortBreakForAnotherApp();
224
+ }
225
+
226
+ /**
227
+ * Returns the current recording status
228
+ *
229
+ * @return `true` if the session is being recorded
230
+ */
231
+ static isRecording() {
232
+ return UXCamBridge.isRecording();
233
+ }
234
+
235
+ /**
236
+ * Pause the screen recording
237
+ */
238
+ static pauseScreenRecording() {
239
+ UXCamBridge.pauseScreenRecording();
240
+ }
241
+
242
+ /**
243
+ * Resumes a paused session - will cancel any remaining pause time and resume screen recording
244
+ */
245
+ static resumeScreenRecording() {
246
+ UXCamBridge.resumeScreenRecording();
247
+ }
248
+
249
+ /**
250
+ UXCam normally captures the view controller name automatically but in cases where it this is not sufficient (such as in OpenGL applications)
251
+ or where you would like to set a different unique name, use this function to set the name.
252
+
253
+ @parameter screenName Name to apply to the current screen in the session video
254
+ */
255
+ static tagScreenName(screenName) {
256
+ UXCamBridge.tagScreenName(screenName);
257
+ }
258
+
259
+ /**
260
+ Insert a general event, with associated properties, into the timeline - stores the event with the timestamp when it was added.
261
+
262
+ @parameter eventName Name of the event to attach to the session recording at the current time
263
+ @parameter properties An Object of properties to associate with this event
264
+
265
+ @note Only number and string property types are supported to a maximum count of 100 and maximum size per entry of 1KiB
266
+ */
267
+ static logEvent(eventName, properties) {
268
+ UXCamBridge.logEvent(eventName, properties);
269
+ }
270
+
271
+ /**
272
+ UXCam uses a unique number to tag a device.
273
+ You can set a user identity for a device allowing you to more easily search for it on the dashboard and review their sessions further.
274
+
275
+ @parameters userIdentity String to apply to this user (device) in this recording session
276
+ */
277
+ static setUserIdentity(userIdentity) {
278
+ UXCamBridge.setUserIdentity(userIdentity);
279
+ }
280
+
281
+ /**
282
+ Add a key/value property for this user
283
+
284
+ @parameter propertyName Name of the property to attach to the user
285
+ @parameter value A value to associate with this property
286
+
287
+ @note Only number and string value types are supported to a maximum size per entry of 1KiB
288
+ */
289
+ static setUserProperty(propertyName, value) {
290
+ if (typeof value == 'number') {
291
+ UXCamBridge.setUserProperty(propertyName, value.toString());
292
+ } else if (typeof value == 'string') {
293
+ UXCamBridge.setUserProperty(propertyName, value);
294
+ }
295
+ }
296
+
297
+ /**
298
+ Add a single key/value property to this session
299
+
300
+ @parameter propertyName Name of the property to attach to the session recording
301
+ @parameter value A value to associate with this property
302
+
303
+ @note Only number and string value types are supported to a maximum size per entry of 1KiB
304
+ */
305
+ static setSessionProperty(propertyName, value) {
306
+ if (typeof value == 'number') {
307
+ UXCamBridge.setSessionProperty(propertyName, value.toString());
308
+ } else if (typeof value == 'string') {
309
+ UXCamBridge.setSessionProperty(propertyName, value);
310
+ }
311
+ }
312
+
313
+ static occludeAllTextFields(occludeAll) {
314
+ UXCamBridge.occludeAllTextFields(occludeAll);
315
+ }
316
+
317
+ static occludeSensitiveScreen(hideScreen, hideGestures) {
318
+ if (typeof hideGestures !== "undefined") {
319
+ UXCamBridge.occludeSensitiveScreen(hideScreen, hideGestures);
320
+ } else {
321
+ UXCamBridge.occludeSensitiveScreen(hideScreen, true);
322
+ }
323
+ }
324
+
325
+ static occludeSensitiveView(sensitiveView) {
326
+ if (sensitiveView) {
327
+ UXCamBridge.occludeSensitiveView(findNodeHandle(sensitiveView), false);
328
+ }
329
+ }
330
+
331
+ static occludeSensitiveViewWithoutGesture(sensitiveView) {
332
+ if (sensitiveView) {
333
+ UXCamBridge.occludeSensitiveView(findNodeHandle(sensitiveView), true);
334
+ }
335
+ }
336
+
337
+ static unOccludeSensitiveView(view) {
338
+ if (view) {
339
+ UXCamBridge.unOccludeSensitiveView(findNodeHandle(view));
340
+ }
341
+ }
342
+
343
+ }
@@ -0,0 +1,29 @@
1
+
2
+ import { Occlusion, OcclusionType } from "./types";
3
+
4
+ export class UXBlur implements Occlusion {
5
+ readonly type: OcclusionType;
6
+ constructor() {
7
+ this.type = OcclusionType.Blur;
8
+ }
9
+
10
+ blurRadius?: number;
11
+ hideGestures?: boolean;
12
+ }
13
+
14
+ export class UXOverlay implements Occlusion {
15
+ readonly type: OcclusionType;
16
+ constructor() {
17
+ this.type = OcclusionType.Overlay;
18
+ }
19
+
20
+ color?: number;
21
+ hideGestures?: boolean;
22
+ }
23
+
24
+ export class UXOcclueAllTextFields implements Occlusion {
25
+ readonly type: OcclusionType;
26
+ constructor() {
27
+ this.type = OcclusionType.OccludeAllTextFields;
28
+ }
29
+ }
@@ -1,5 +1,7 @@
1
1
  import { EmitterSubscription } from "react-native";
2
- import UXCamOcclusion from "./UXCamOcclusion";
2
+ import { Configuration, Occlusion } from "./types";
3
+
4
+ export * from './types';
3
5
 
4
6
  export default class UXCam {
5
7
  /**
@@ -8,7 +10,7 @@ export default class UXCam {
8
10
  * @brief Start the UXCam session
9
11
  * @parameter configuration The configuration to identify your UXCam app - find appKey in the UXCam dashboard for your account
10
12
  */
11
- static startWithConfiguration: (configuration: UXCamConfiguration) => void;
13
+ static startWithConfiguration: (configuration: Configuration) => void;
12
14
 
13
15
  /**
14
16
  * @deprecated Use {@link #startWithConfiguration(configuration)} instead to start new session
@@ -16,28 +18,18 @@ export default class UXCam {
16
18
  * @brief Start the UXCam session
17
19
  * @parameter userAppKey The key to identify your UXCam app - find it in the UXCam dashboard for your account
18
20
  */
19
- static startWithKey: (appKey: string) => void;
20
-
21
- /**
22
- * Returns configuration object for current session
23
- */
24
- static configurationForUXCam: () => Promise<UXCamConfiguration | undefined | null>;
25
-
26
- /**
27
- * Update current configuration with different values
28
- */
29
- static updateConfiguration: (configuration: UXCamConfiguration) => void;
21
+ static startWithKey: (userAppKey: string) => void;
30
22
 
31
23
  /**
32
24
  * Apply manual occlusion to screens in the app.
33
25
  * This will be applied to all the screens until it is not removed manually again using {@link #removeOcclusion(occlusion)} method
34
26
  */
35
- static applyOcclusion: (occlusion: UXCamOcclusion) => void;
27
+ static applyOcclusion: (occlusion: Occlusion) => void;
36
28
 
37
29
  /**
38
30
  * Remove manual occlusion from the app that was applied using {@link #applyOcclusion(occlusion)} method
39
31
  */
40
- static removeOcclusion: (occlusion: UXCamOcclusion) => void;
32
+ static removeOcclusion: (occlusion: Occlusion) => void;
41
33
  /**
42
34
  * Starts a new session after the {@link #stopSessionAndUploadData()} method has been called.
43
35
  * This happens automatically when the app returns from background.
@@ -78,16 +70,7 @@ export default class UXCam {
78
70
  @parameter hideScreen Set `true` to hide the screen from the recording, `false` to start recording the screen contents again
79
71
  @parameter hideGesture Set `true` to hide the gestures in the screen from the recording, `false` to start recording the gestures in the screen again
80
72
  */
81
- static occludeSensitiveScreen: (hideScreen: boolean, hideGesture?: boolean) => void;
82
-
83
- /**
84
- Hide / un-hide all UITextField views on the screen
85
-
86
- Call this when you want to hide the contents of all UITextFields from the screen capture. Default is `false`.
87
-
88
- @parameter occludeAll Set `true` to hide all UITextField views on the screen in the recording, `false` to stop occluding them from the screen recording.
89
- */
90
- static occludeAllTextView: () => void;
73
+ static occludeSensitiveScreen: (hideScreen: boolean, hideGestures?: boolean) => void;
91
74
 
92
75
  /**
93
76
  Hide / un-hide all UITextField views on the screen
@@ -134,7 +117,7 @@ export default class UXCam {
134
117
 
135
118
  @note Only number and string property types are supported to a maximum count of 100 and maximum size per entry of 1KiB
136
119
  */
137
- static logEvent: (eventName: string, properties?: any) => void;
120
+ static logEvent: (eventName: string, properties?: Object) => void;
138
121
 
139
122
  /**
140
123
  UXCam verification listener that returns success/failure status. TRUE status means the session was successfully verified and started.
@@ -142,14 +125,6 @@ export default class UXCam {
142
125
  */
143
126
  static addVerificationListener: (status: (status: { success: boolean })=>void) => EmitterSubscription;
144
127
 
145
- /**
146
- * @brief Call this before calling startWithKey to disable UXCam from capturing sessions that crash
147
- *
148
- * @param disable `true` to disable crash capture
149
- * @note By default crash handling is enabled.
150
- */
151
- static disableCrashHandling: (disable: boolean) => void;
152
-
153
128
  /**
154
129
  * Returns the current recording status
155
130
  *
@@ -260,19 +235,6 @@ export default class UXCam {
260
235
  */
261
236
  static resumeShortBreakForAnotherApp: () => void;
262
237
 
263
- /**
264
- * Get whether UXCam is set to automatically record a new session when the app resumes from the background
265
- */
266
- static getMultiSessionRecord: () => boolean;
267
-
268
- /**
269
- * Set whether to record multiple sessions or not
270
- *
271
- * @parameter multiSessionRecord `true` to record a new session automatically when the device comes out of the background. If `false` then a single session is recorded, when stopped (either programmatically with `stopApplicationAndUploadData` or by the app going to the background) then no more sessions are recorded until `startWithKey` is called again).
272
- * @note The default setting is to record a new session each time a device comes out of the background. This flag can be set to `false` to stop that. You can also set this with the appropriate startWithKey: variant. (This will be reset each time startWithKey is called)
273
- */
274
- static setMultiSessionRecord: (multiSessionRecord: boolean) => void;
275
-
276
238
  /**
277
239
  * @brief Deletes any sessions that are awaiting upload
278
240
  * @note Advanced use only. This is not needed for most developers. This can't be called until UXCam startWithKey: has completed
@@ -324,87 +286,4 @@ export default class UXCam {
324
286
  @parameter screenName Name to apply to the current screen in the session video
325
287
  */
326
288
  static tagScreenName: (screenName: string) => void;
327
-
328
- /**
329
- Enable / disable the automatic tagging of screen names
330
-
331
- @note By default UXCam will tag new screen names automatically. You can override this using the `tagScreenName` method or use this method to disable the automatic tagging.
332
-
333
- @parameters autoScreenTagging Set to `true` to enable automatic screen name tagging (the default) or `false` to disable it
334
- */
335
- static setAutomaticScreenNameTagging: (autoScreenTagging: boolean) => void;
336
-
337
- /**
338
- Add a name to the list of screens names that wont be added to the timeline in automatic screen name tagging mode
339
-
340
- This will not impact gesture or action recording - just that the timeline on the dashboard will not contain an entry for this screen name if it appears after this call.
341
- Use this if you have view controllers that are presented but which are not primary user interaction screens to make your dashboard timeline easier to understand.
342
-
343
- @param screenName A name to add to the list of screens to ignore
344
-
345
- @note This is a convenience method for `addScreenNamesToIgnore([nameToIgnore])`
346
- */
347
- static addScreenNameToIgnore: (screenName: string) => void;
348
-
349
- /**
350
- Add a list of names to the list of screens names that wont be added to the timeline in automatic screen name tagging mode
351
-
352
- This will not impact gesture or action recording - just that the timeline on the dashboard will not contain an entry for any of the screens in this list encountered after this call.
353
- Use this if you have view controllers that are presented but which are not primary user interaction screens to make your dashboard timeline easier to understand.
354
-
355
- @param screenNames A list of screen names to add to the ignore list
356
- */
357
- static addScreenNamesToIgnore: (screenNames: string[]) => void;
358
-
359
- /**
360
- Remove the a name from the list of screens to be ignored in automatic screen name tagging mode
361
-
362
- @param screenName The name to remove from the list of ignored screens
363
- @note This is a convenience method for `removeScreenNamesToIgnore([nameToRemove])`
364
- */
365
- static removeScreenNameToIgnore: (screenName: string) => void;
366
-
367
- /**
368
- Remove the a list of names from the list of screens to be ignored in automatic screen name tagging mode
369
-
370
- @param screenNames A list of names to remove from the ignore list
371
- */
372
- static removeScreenNamesToIgnore: (screenNames: string[]) => void;
373
-
374
- // Remove all entries from the list of screen names to be ignored in automatic screen name tagging mode
375
- static removeAllScreenNamesToIgnore: () => void;
376
-
377
- // Get the list of screen names that are being ignored in automatic screen name tagging mode
378
- static screenNamesBeingIgnored: () => string[];
379
-
380
- /**
381
- Set the token to be used to send push notifications to the app
382
- @param token Push notification token
383
- */
384
- static setPushNotificationToken: (token: string) => void;
385
-
386
- /**
387
- Send a report of a problem your app encountered to be displayed in the dashboard
388
- @param eventName Name of the problem event
389
- @param properties Properties object associated with the event
390
- @note Only number and string property types are supported to a maximum count of 100 and maximum size per entry of 1KiB
391
- */
392
- static reportBugEvent: (eventName: string, properties?: any) => void;
393
-
394
- /**
395
- Enable/Disable advanced gesture recognition like swipe and pinch gestures.
396
- @param enable Set `true` to enable or `false` to disable before `startWithKey`. Default is `true`.
397
- @note Disable this on iOS if you are having problems with swipes or other gestures being interrupted while recording sessions.
398
- */
399
- static enableAdvancedGestureRecognizers: (enable: boolean) => void;
400
- }
401
-
402
- export interface UXCamConfiguration {
403
- userAppKey: string;
404
- enableMultiSessionRecord?: boolean;
405
- enableCrashHandling?: boolean;
406
- enableAutomaticScreenNameTagging?: boolean;
407
- enableAdvancedGestureRecognition?: boolean;
408
- enableNetworkLogging?: boolean;
409
- occlusions?: UXCamOcclusion[];
410
289
  }
package/src/index.js ADDED
@@ -0,0 +1,3 @@
1
+
2
+ // @flow
3
+ export default require("./UXCam").default;
package/src/types.ts ADDED
@@ -0,0 +1,19 @@
1
+ export interface Configuration {
2
+ userAppKey: string;
3
+ enableMultiSessionRecord?: boolean;
4
+ enableCrashHandling?: boolean;
5
+ enableAutomaticScreenNameTagging?: boolean;
6
+ enableAdvancedGestureRecognition?: boolean;
7
+ enableNetworkLogging?: boolean;
8
+ occlusions?: Occlusion[];
9
+ }
10
+
11
+ export enum OcclusionType {
12
+ OccludeAllTextFields = 1,
13
+ Overlay = 2,
14
+ Blur = 3
15
+ }
16
+
17
+ export interface Occlusion {
18
+ readonly type: OcclusionType;
19
+ }