@luciq/react-native 19.3.0 → 19.4.0-44237-SNAPSHOT

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 (110) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +118 -0
  3. package/RNLuciq.podspec +6 -2
  4. package/android/build.gradle +25 -0
  5. package/android/native.gradle +1 -1
  6. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqAPMModule.java +3 -3
  7. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqBugReportingModule.java +28 -24
  8. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqCrashReportingModule.java +18 -7
  9. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqFeatureRequestsModule.java +1 -2
  10. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqNetworkLoggerModule.java +24 -29
  11. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqReactnativeModule.java +112 -16
  12. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqReactnativePackage.java +2 -0
  13. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqRepliesModule.java +4 -16
  14. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqSessionReplayModule.java +5 -16
  15. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqSurveysModule.java +7 -15
  16. package/android/src/main/java/ai/luciq/reactlibrary/utils/ReportUtil.java +0 -7
  17. package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqAPMBaseSpec.java +9 -0
  18. package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqBaseSpec.java +33 -0
  19. package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqBugReportingBaseSpec.java +33 -0
  20. package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqCrashReportingBaseSpec.java +9 -0
  21. package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqFeatureRequestsBaseSpec.java +9 -0
  22. package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqNetworkLoggerBaseSpec.java +33 -0
  23. package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqRepliesBaseSpec.java +33 -0
  24. package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqSessionReplayBaseSpec.java +33 -0
  25. package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqSurveysBaseSpec.java +33 -0
  26. package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqAPMBaseSpec.java +11 -0
  27. package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqBaseSpec.java +22 -0
  28. package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqBugReportingBaseSpec.java +22 -0
  29. package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqCrashReportingBaseSpec.java +10 -0
  30. package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqFeatureRequestsBaseSpec.java +10 -0
  31. package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqNetworkLoggerBaseSpec.java +22 -0
  32. package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqRepliesBaseSpec.java +22 -0
  33. package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqSessionReplayBaseSpec.java +22 -0
  34. package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqSurveysBaseSpec.java +22 -0
  35. package/dist/modules/BugReporting.js +3 -3
  36. package/dist/modules/Luciq.d.ts +15 -0
  37. package/dist/modules/Luciq.js +22 -1
  38. package/dist/modules/Replies.js +1 -1
  39. package/dist/modules/Surveys.js +2 -2
  40. package/dist/native/NativeBugReporting.d.ts +4 -4
  41. package/dist/native/NativeCrashReporting.d.ts +2 -2
  42. package/dist/native/NativeLuciq.d.ts +5 -3
  43. package/dist/native/NativePackage.js +25 -2
  44. package/dist/native/NativeReplies.d.ts +1 -1
  45. package/dist/native/NativeSurveys.d.ts +2 -2
  46. package/dist/native/specs/NativeAPM.d.ts +21 -0
  47. package/dist/native/specs/NativeAPM.js +2 -0
  48. package/dist/native/specs/NativeBugReporting.d.ts +29 -0
  49. package/dist/native/specs/NativeBugReporting.js +2 -0
  50. package/dist/native/specs/NativeCrashReporting.d.ts +12 -0
  51. package/dist/native/specs/NativeCrashReporting.js +2 -0
  52. package/dist/native/specs/NativeFeatureRequests.d.ts +8 -0
  53. package/dist/native/specs/NativeFeatureRequests.js +2 -0
  54. package/dist/native/specs/NativeLuciq.d.ts +80 -0
  55. package/dist/native/specs/NativeLuciq.js +2 -0
  56. package/dist/native/specs/NativeNetworkLogger.d.ts +16 -0
  57. package/dist/native/specs/NativeNetworkLogger.js +2 -0
  58. package/dist/native/specs/NativeReplies.d.ts +21 -0
  59. package/dist/native/specs/NativeReplies.js +2 -0
  60. package/dist/native/specs/NativeSessionReplay.d.ts +17 -0
  61. package/dist/native/specs/NativeSessionReplay.js +2 -0
  62. package/dist/native/specs/NativeSurveys.d.ts +18 -0
  63. package/dist/native/specs/NativeSurveys.js +2 -0
  64. package/dist/utils/Enums.js +3 -1
  65. package/dist/utils/LuciqUtils.d.ts +1 -1
  66. package/dist/utils/LuciqUtils.js +0 -3
  67. package/ios/RNLuciq/LuciqAPMBridge.h +5 -5
  68. package/ios/RNLuciq/{LuciqAPMBridge.m → LuciqAPMBridge.mm} +48 -39
  69. package/ios/RNLuciq/LuciqBugReportingBridge.h +6 -6
  70. package/ios/RNLuciq/LuciqBugReportingBridge.mm +234 -0
  71. package/ios/RNLuciq/LuciqCrashReportingBridge.h +16 -5
  72. package/ios/RNLuciq/LuciqCrashReportingBridge.mm +91 -0
  73. package/ios/RNLuciq/LuciqFeatureRequestsBridge.h +1 -1
  74. package/ios/RNLuciq/{LuciqFeatureRequestsBridge.m → LuciqFeatureRequestsBridge.mm} +21 -16
  75. package/ios/RNLuciq/LuciqNetworkLoggerBridge.h +1 -30
  76. package/ios/RNLuciq/{LuciqNetworkLoggerBridge.m → LuciqNetworkLoggerBridge.mm} +46 -77
  77. package/ios/RNLuciq/LuciqReactBridge.h +13 -13
  78. package/ios/RNLuciq/{LuciqReactBridge.m → LuciqReactBridge.mm} +95 -34
  79. package/ios/RNLuciq/LuciqRepliesBridge.h +3 -3
  80. package/ios/RNLuciq/LuciqRepliesBridge.mm +86 -0
  81. package/ios/RNLuciq/LuciqSessionReplayBridge.h +5 -5
  82. package/ios/RNLuciq/{LuciqSessionReplayBridge.m → LuciqSessionReplayBridge.mm} +35 -25
  83. package/ios/RNLuciq/LuciqSurveysBridge.h +5 -5
  84. package/ios/RNLuciq/{LuciqSurveysBridge.m → LuciqSurveysBridge.mm} +34 -35
  85. package/ios/native.rb +1 -1
  86. package/package.json +9 -2
  87. package/src/modules/BugReporting.ts +3 -3
  88. package/src/modules/Luciq.ts +25 -1
  89. package/src/modules/Replies.ts +1 -1
  90. package/src/modules/Surveys.ts +2 -2
  91. package/src/native/NativeBugReporting.ts +3 -6
  92. package/src/native/NativeCrashReporting.ts +2 -2
  93. package/src/native/NativeLuciq.ts +7 -3
  94. package/src/native/NativePackage.ts +52 -2
  95. package/src/native/NativeReplies.ts +1 -1
  96. package/src/native/NativeSurveys.ts +2 -2
  97. package/src/native/specs/NativeAPM.ts +47 -0
  98. package/src/native/specs/NativeBugReporting.ts +53 -0
  99. package/src/native/specs/NativeCrashReporting.ts +23 -0
  100. package/src/native/specs/NativeFeatureRequests.ts +10 -0
  101. package/src/native/specs/NativeLuciq.ts +137 -0
  102. package/src/native/specs/NativeNetworkLogger.ts +31 -0
  103. package/src/native/specs/NativeReplies.ts +27 -0
  104. package/src/native/specs/NativeSessionReplay.ts +20 -0
  105. package/src/native/specs/NativeSurveys.ts +23 -0
  106. package/src/utils/Enums.ts +4 -1
  107. package/src/utils/LuciqUtils.ts +1 -6
  108. package/ios/RNLuciq/LuciqBugReportingBridge.m +0 -249
  109. package/ios/RNLuciq/LuciqCrashReportingBridge.m +0 -68
  110. package/ios/RNLuciq/LuciqRepliesBridge.m +0 -80
@@ -0,0 +1,47 @@
1
+ import type { TurboModule } from 'react-native';
2
+ import type { UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
3
+ import { TurboModuleRegistry } from 'react-native';
4
+
5
+ export interface Spec extends TurboModule {
6
+ setEnabled(isEnabled: boolean): void;
7
+
8
+ networkLogAndroid(
9
+ requestStartTime: number,
10
+ requestDuration: number,
11
+ requestHeaders: string,
12
+ requestBody: string,
13
+ requestBodySize: number,
14
+ requestMethod: string,
15
+ requestUrl: string,
16
+ requestContentType: string,
17
+ responseHeaders: string,
18
+ responseBody: string | null,
19
+ responseBodySize: number,
20
+ statusCode: number,
21
+ responseContentType: string,
22
+ errorDomain: string,
23
+ w3cExternalTraceAttributes: UnsafeObject,
24
+ gqlQueryName: string | null,
25
+ serverErrorMessage: string | null,
26
+ ): void;
27
+
28
+ setAppLaunchEnabled(isEnabled: boolean): void;
29
+ endAppLaunch(): void;
30
+
31
+ startFlow(name: string): void;
32
+ endFlow(name: string): void;
33
+ setFlowAttribute(name: string, key: string, value: string | null): void;
34
+
35
+ setAutoUITraceEnabled(isEnabled: boolean): void;
36
+ startUITrace(name: string): void;
37
+ endUITrace(): void;
38
+ lcqSleep(): void;
39
+
40
+ setScreenRenderingEnabled(isEnabled: boolean): void;
41
+
42
+ syncCustomSpan(name: string, startTimestamp: number, endTimestamp: number): Promise<void>;
43
+ isCustomSpanEnabled(): Promise<boolean>;
44
+ isAPMEnabled(): Promise<boolean>;
45
+ }
46
+
47
+ export default TurboModuleRegistry.getEnforcing<Spec>('LCQAPM');
@@ -0,0 +1,53 @@
1
+ import type { TurboModule } from 'react-native';
2
+ import { TurboModuleRegistry } from 'react-native';
3
+
4
+ export interface Spec extends TurboModule {
5
+ setEnabled(isEnabled: boolean): void;
6
+ show(type: string, options: string[]): void;
7
+
8
+ setInvocationEvents(events: string[]): void;
9
+ setOptions(options: string[]): void;
10
+ setExtendedBugReportMode(mode: string): void;
11
+ setReportTypes(types: string[]): void;
12
+ setDisclaimerText(text: string): void;
13
+ setCommentMinimumCharacterCount(limit: number, reportTypes: string[]): void;
14
+ setFloatingButtonEdge(edge: string, offset: number): void;
15
+ setVideoRecordingFloatingButtonPosition(buttonPosition: string): void;
16
+ setEnabledAttachmentTypes(
17
+ screenshot: boolean,
18
+ extraScreenshot: boolean,
19
+ galleryImage: boolean,
20
+ screenRecording: boolean,
21
+ ): void;
22
+
23
+ setAutoScreenRecordingEnabled(isEnabled: boolean): void;
24
+ setAutoScreenRecordingDuration(maxDuration: number): void;
25
+ setViewHierarchyEnabled(isEnabled: boolean): void;
26
+
27
+ setShakingThresholdForiPhone(threshold: number): void;
28
+ setShakingThresholdForiPad(threshold: number): void;
29
+ setShakingThresholdForAndroid(threshold: number): void;
30
+
31
+ setOnInvokeHandler(): void;
32
+ setDidSelectPromptOptionHandler(): void;
33
+ setOnSDKDismissedHandler(): void;
34
+
35
+ addUserConsent(
36
+ key: string,
37
+ description: string,
38
+ mandatory: boolean,
39
+ checked: boolean,
40
+ actionType: string | null,
41
+ ): void;
42
+
43
+ setProactiveReportingConfigurations(
44
+ enabled: boolean,
45
+ gapBetweenModals: number,
46
+ modalDelayAfterDetection: number,
47
+ ): void;
48
+
49
+ addListener(eventName: string): void;
50
+ removeListeners(count: number): void;
51
+ }
52
+
53
+ export default TurboModuleRegistry.getEnforcing<Spec>('LCQBugReporting');
@@ -0,0 +1,23 @@
1
+ import type { TurboModule } from 'react-native';
2
+ import type { UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
3
+ import { TurboModuleRegistry } from 'react-native';
4
+
5
+ export interface Spec extends TurboModule {
6
+ setEnabled(isEnabled: boolean): void;
7
+
8
+ sendJSCrash(data: UnsafeObject): Promise<void>;
9
+
10
+ sendHandledJSCrash(
11
+ data: UnsafeObject,
12
+ userAttributes: UnsafeObject | null,
13
+ fingerprint: string | null,
14
+ nonFatalExceptionLevel: string | null,
15
+ ): Promise<void>;
16
+
17
+ setNDKCrashesEnabled(isEnabled: boolean): Promise<void>;
18
+
19
+ addListener(eventName: string): void;
20
+ removeListeners(count: number): void;
21
+ }
22
+
23
+ export default TurboModuleRegistry.getEnforcing<Spec>('LCQCrashReporting');
@@ -0,0 +1,10 @@
1
+ import type { TurboModule } from 'react-native';
2
+ import { TurboModuleRegistry } from 'react-native';
3
+
4
+ export interface Spec extends TurboModule {
5
+ setEnabled(isEnabled: boolean): void;
6
+ show(): void;
7
+ setEmailFieldRequiredForFeatureRequests(isEmailFieldRequired: boolean, types: string[]): void;
8
+ }
9
+
10
+ export default TurboModuleRegistry.getEnforcing<Spec>('LCQFeatureRequests');
@@ -0,0 +1,137 @@
1
+ import type { TurboModule } from 'react-native';
2
+ import type { UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
3
+ import { TurboModuleRegistry } from 'react-native';
4
+
5
+ export interface Spec extends TurboModule {
6
+ getAllConstants(): UnsafeObject;
7
+ setEnabled(isEnabled: boolean): void;
8
+ isBuilt(): Promise<boolean>;
9
+ init(
10
+ token: string,
11
+ invocationEvents: string[],
12
+ debugLogsLevel: string,
13
+ useNativeNetworkInterception: boolean,
14
+ codePushVersion: string | null,
15
+ appVariant: string | null,
16
+ options: UnsafeObject | null,
17
+ overAirVersion: UnsafeObject | null,
18
+ ): void;
19
+ show(): void;
20
+
21
+ setCodePushVersion(version: string): void;
22
+ setOverAirVersion(OTAserviceVersion: UnsafeObject): void;
23
+ setAppVariant(appVariant: string): void;
24
+ setLCQLogPrintsToConsole(printsToConsole: boolean): void;
25
+ setSessionProfilerEnabled(isEnabled: boolean): void;
26
+
27
+ setLocale(sdkLocale: string): void;
28
+ setColorTheme(sdkTheme: string): void;
29
+ setPrimaryColor(color: number | null): void;
30
+ setString(string: string, key: string): void;
31
+
32
+ networkLogAndroid(
33
+ url: string,
34
+ requestBody: string,
35
+ responseBody: string | null,
36
+ method: string,
37
+ responseCode: number,
38
+ requestHeaders: string,
39
+ responseHeaders: string,
40
+ duration: number,
41
+ ): void;
42
+
43
+ networkLogIOS(
44
+ url: string,
45
+ method: string,
46
+ requestBody: string | null,
47
+ requestBodySize: number,
48
+ responseBody: string | null,
49
+ responseBodySize: number,
50
+ responseCode: number,
51
+ requestHeaders: UnsafeObject,
52
+ responseHeaders: UnsafeObject,
53
+ contentType: string,
54
+ errorDomain: string,
55
+ errorCode: number,
56
+ startTime: number,
57
+ duration: number,
58
+ gqlQueryName: string | null,
59
+ serverErrorMessage: string | null,
60
+ w3cExternalTraceAttributes: UnsafeObject,
61
+ ): void;
62
+
63
+ setNetworkLoggingEnabled(isEnabled: boolean): void;
64
+ setNetworkLogBodyEnabled(isEnabled: boolean): void;
65
+
66
+ setReproStepsConfig(bugMode: string, crashMode: string, sessionReplay: string): void;
67
+ setTrackUserSteps(isEnabled: boolean): void;
68
+ reportScreenChange(firstScreen: string): void;
69
+ reportCurrentViewChange(screenName: string): void;
70
+ addPrivateView(nativeTag: number | null): void;
71
+ removePrivateView(nativeTag: number | null): void;
72
+
73
+ logVerbose(message: string): void;
74
+ logInfo(message: string): void;
75
+ logDebug(message: string): void;
76
+ logError(message: string): void;
77
+ logWarn(message: string): void;
78
+ clearLogs(): void;
79
+
80
+ identifyUser(email: string, name: string, id: string | null): void;
81
+ logOut(): void;
82
+ logUserEvent(name: string): void;
83
+ setUserData(data: string): void;
84
+
85
+ setUserAttribute(key: string, value: string): void;
86
+ getUserAttribute(key: string): Promise<string>;
87
+ removeUserAttribute(key: string): void;
88
+ getAllUserAttributes(): Promise<UnsafeObject>;
89
+ clearAllUserAttributes(): void;
90
+
91
+ showWelcomeMessageWithMode(mode: string): void;
92
+ setWelcomeMessageMode(mode: string): void;
93
+
94
+ appendTags(tags: string[]): void;
95
+ resetTags(): void;
96
+ getTags(): Promise<string[]>;
97
+
98
+ addFeatureFlags(featureFlags: UnsafeObject): void;
99
+ removeFeatureFlags(featureFlags: string[]): void;
100
+ removeAllFeatureFlags(): void;
101
+
102
+ setFileAttachment(filePath: string, fileName: string | null): void;
103
+
104
+ setPreSendingHandler(): void;
105
+ appendTagToReport(tag: string): void;
106
+ appendConsoleLogToReport(consoleLog: string): void;
107
+ setUserAttributeToReport(key: string, value: string): void;
108
+ logDebugToReport(log: string): void;
109
+ logVerboseToReport(log: string): void;
110
+ logWarnToReport(log: string): void;
111
+ logErrorToReport(log: string): void;
112
+ logInfoToReport(log: string): void;
113
+ addFileAttachmentWithURLToReport(url: string, filename: string | null): void;
114
+ addFileAttachmentWithDataToReport(data: string, filename: string | null): void;
115
+ willRedirectToStore(): void;
116
+
117
+ isW3ExternalTraceIDEnabled(): Promise<boolean>;
118
+ isW3ExternalGeneratedHeaderEnabled(): Promise<boolean>;
119
+ isW3CaughtHeaderEnabled(): Promise<boolean>;
120
+
121
+ registerFeatureFlagsChangeListener(): void;
122
+ setOnFeaturesUpdatedListener(): void;
123
+ enableAutoMasking(autoMaskingTypes: string[]): void;
124
+ getNetworkBodyMaxSize(): Promise<number>;
125
+
126
+ setTheme(theme: UnsafeObject): void;
127
+ setFullscreen(isEnabled: boolean): void;
128
+
129
+ setWebViewMonitoringEnabled(isEnabled: boolean): void;
130
+ setWebViewNetworkTrackingEnabled(isEnabled: boolean): void;
131
+ setWebViewUserInteractionsTrackingEnabled(isEnabled: boolean): void;
132
+
133
+ addListener(eventName: string): void;
134
+ removeListeners(count: number): void;
135
+ }
136
+
137
+ export default TurboModuleRegistry.getEnforcing<Spec>('Luciq');
@@ -0,0 +1,31 @@
1
+ import type { TurboModule } from 'react-native';
2
+ import type { UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
3
+ import { TurboModuleRegistry } from 'react-native';
4
+
5
+ export interface Spec extends TurboModule {
6
+ isNativeInterceptionEnabled(): boolean;
7
+
8
+ registerNetworkLogsListener(type: string | null): void;
9
+
10
+ updateNetworkLogSnapshot(
11
+ url: string,
12
+ callbackID: string,
13
+ requestBody: string | null,
14
+ responseBody: string | null,
15
+ responseCode: number,
16
+ requestHeaders: UnsafeObject,
17
+ responseHeaders: UnsafeObject,
18
+ ): void;
19
+
20
+ hasAPMNetworkPlugin(): Promise<boolean>;
21
+ resetNetworkLogsListener(): void;
22
+
23
+ setNetworkLoggingRequestFilterPredicateIOS(id: string, value: boolean): void;
24
+ forceStartNetworkLoggingIOS(): void;
25
+ forceStopNetworkLoggingIOS(): void;
26
+
27
+ addListener(eventName: string): void;
28
+ removeListeners(count: number): void;
29
+ }
30
+
31
+ export default TurboModuleRegistry.getEnforcing<Spec>('LCQNetworkLogger');
@@ -0,0 +1,27 @@
1
+ import type { TurboModule } from 'react-native';
2
+ import type { UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
3
+ import { TurboModuleRegistry } from 'react-native';
4
+
5
+ export interface Spec extends TurboModule {
6
+ setEnabled(isEnabled: boolean): void;
7
+ show(): void;
8
+ hasChats(): Promise<boolean>;
9
+ getUnreadRepliesCount(): Promise<number>;
10
+
11
+ setOnNewReplyReceivedHandler(): void;
12
+
13
+ setPushNotificationsEnabled(isEnabled: boolean): void;
14
+ setInAppNotificationEnabled(isEnabled: boolean): void;
15
+
16
+ setInAppNotificationSound(isEnabled: boolean): void;
17
+ setPushNotificationRegistrationToken(token: string): void;
18
+ showNotification(data: UnsafeObject): void;
19
+ setNotificationIcon(resourceId: number): void;
20
+ setPushNotificationChannelId(id: string): void;
21
+ setSystemReplyNotificationSoundEnabled(isEnabled: boolean): void;
22
+
23
+ addListener(eventName: string): void;
24
+ removeListeners(count: number): void;
25
+ }
26
+
27
+ export default TurboModuleRegistry.getEnforcing<Spec>('LCQReplies');
@@ -0,0 +1,20 @@
1
+ import type { TurboModule } from 'react-native';
2
+ import { TurboModuleRegistry } from 'react-native';
3
+
4
+ export interface Spec extends TurboModule {
5
+ setEnabled(isEnabled: boolean): void;
6
+ setNetworkLogsEnabled(isEnabled: boolean): void;
7
+ setLuciqLogsEnabled(isEnabled: boolean): void;
8
+ setUserStepsEnabled(isEnabled: boolean): void;
9
+ getSessionReplayLink(): Promise<string>;
10
+ setSyncCallback(): Promise<void>;
11
+ evaluateSync(shouldSync: boolean): void;
12
+ setCapturingMode(mode: string): void;
13
+ setScreenshotQuality(quality: string): void;
14
+ setScreenshotCaptureInterval(intervalMs: number): void;
15
+
16
+ addListener(eventName: string): void;
17
+ removeListeners(count: number): void;
18
+ }
19
+
20
+ export default TurboModuleRegistry.getEnforcing<Spec>('LCQSessionReplay');
@@ -0,0 +1,23 @@
1
+ import type { TurboModule } from 'react-native';
2
+ import type { UnsafeObject } from 'react-native/Libraries/Types/CodegenTypes';
3
+ import { TurboModuleRegistry } from 'react-native';
4
+
5
+ export interface Spec extends TurboModule {
6
+ setEnabled(isEnabled: boolean): void;
7
+ setAutoShowingEnabled(autoShowingSurveysEnabled: boolean): void;
8
+ showSurvey(surveyToken: string): void;
9
+ showSurveysIfAvailable(): void;
10
+ getAvailableSurveys(): Promise<UnsafeObject[]>;
11
+ hasRespondedToSurvey(surveyToken: string): Promise<boolean>;
12
+
13
+ setShouldShowWelcomeScreen(shouldShowWelcomeScreen: boolean): void;
14
+ setAppStoreURL(appStoreURL: string): void;
15
+
16
+ setOnShowHandler(): void;
17
+ setOnDismissHandler(): void;
18
+
19
+ addListener(eventName: string): void;
20
+ removeListeners(count: number): void;
21
+ }
22
+
23
+ export default TurboModuleRegistry.getEnforcing<Spec>('LCQSurveys');
@@ -1,6 +1,9 @@
1
1
  import { NativeLuciq } from '../native/NativeLuciq';
2
2
 
3
- const constants = NativeLuciq.getConstants();
3
+ const constants =
4
+ typeof NativeLuciq.getConstants === 'function'
5
+ ? NativeLuciq.getConstants()
6
+ : (NativeLuciq as any).getAllConstants();
4
7
 
5
8
  /**
6
9
  * Verbosity level of the SDK debug logs. This has nothing to do with `Luciq.log`,
@@ -164,14 +164,9 @@ export const stringifyIfNotString = (input: unknown) => {
164
164
  */
165
165
  export async function sendCrashReport(
166
166
  error: ExtendedError,
167
- remoteSenderCallback: (json: CrashData | string) => Promise<void>,
167
+ remoteSenderCallback: (json: CrashData) => Promise<void>,
168
168
  ) {
169
169
  const jsonObject = getCrashDataFromError(error);
170
-
171
- if (Platform.OS === 'android') {
172
- return remoteSenderCallback(JSON.stringify(jsonObject));
173
- }
174
-
175
170
  return remoteSenderCallback(jsonObject);
176
171
  }
177
172
  /**
@@ -1,249 +0,0 @@
1
- //
2
- // LuciqBugReportingBridge.m
3
- // RNLuciq
4
- //
5
- // Created by Salma Ali on 7/30/19.
6
- // Copyright © 2019 luciq. All rights reserved.
7
- //
8
-
9
- #import "LuciqBugReportingBridge.h"
10
- #import <LuciqSDK/LCQBugReporting.h>
11
- #import <asl.h>
12
- #import <React/RCTLog.h>
13
- #import <os/log.h>
14
- #import <React/RCTUIManager.h>
15
-
16
- @implementation LuciqBugReportingBridge
17
-
18
- - (dispatch_queue_t)methodQueue {
19
- return dispatch_get_main_queue();
20
- }
21
-
22
- + (BOOL)requiresMainQueueSetup
23
- {
24
- return NO;
25
- }
26
-
27
- - (NSArray<NSString *> *)supportedEvents {
28
- return @[
29
- @"LCQpreInvocationHandler",
30
- @"LCQpostInvocationHandler",
31
- @"LCQDidSelectPromptOptionHandler",
32
- ];
33
- }
34
-
35
- RCT_EXPORT_MODULE(LCQBugReporting)
36
-
37
- RCT_EXPORT_METHOD(setEnabled:(BOOL) isEnabled) {
38
- LCQBugReporting.enabled = isEnabled;
39
- }
40
-
41
- RCT_EXPORT_METHOD(setAutoScreenRecordingEnabled:(BOOL)enabled) {
42
- LCQBugReporting.autoScreenRecordingEnabled = enabled;
43
- }
44
-
45
- RCT_EXPORT_METHOD(setAutoScreenRecordingDuration:(CGFloat)duration) {
46
- LCQBugReporting.autoScreenRecordingDuration = duration;
47
- }
48
-
49
- RCT_EXPORT_METHOD(setOnInvokeHandler:(RCTResponseSenderBlock)callBack) {
50
- if (callBack != nil) {
51
- LCQBugReporting.willInvokeHandler = ^{
52
- [self sendEventWithName:@"LCQpreInvocationHandler" body:nil];
53
- };
54
- } else {
55
- LCQBugReporting.willInvokeHandler = nil;
56
- }
57
- }
58
-
59
- RCT_EXPORT_METHOD(setOnSDKDismissedHandler:(RCTResponseSenderBlock)callBack) {
60
- if (callBack != nil) {
61
- LCQBugReporting.didDismissHandler = ^(LCQDismissType dismissType, LCQReportCategory reportType) {
62
-
63
- //parse dismiss type enum
64
- NSString* dismissTypeString;
65
- if (dismissType == LCQDismissTypeCancel) {
66
- dismissTypeString = @"CANCEL";
67
- } else if (dismissType == LCQDismissTypeSubmit) {
68
- dismissTypeString = @"SUBMIT";
69
- } else if (dismissType == LCQDismissTypeAddAttachment) {
70
- dismissTypeString = @"ADD_ATTACHMENT";
71
- }
72
-
73
- //parse report type enum
74
- NSString* reportTypeString;
75
- if (reportType == LCQReportCategoryBug) {
76
- reportTypeString = @"bug";
77
- } else if (reportType == LCQReportCategoryFeedback) {
78
- reportTypeString = @"feedback";
79
- } else {
80
- reportTypeString = @"other";
81
- }
82
- NSDictionary *result = @{ @"dismissType": dismissTypeString,
83
- @"reportType": reportTypeString};
84
- [self sendEventWithName:@"LCQpostInvocationHandler" body: result];
85
- };
86
- } else {
87
- LCQBugReporting.didDismissHandler = nil;
88
- }
89
- }
90
-
91
- RCT_EXPORT_METHOD(setDidSelectPromptOptionHandler:(RCTResponseSenderBlock)callBack) {
92
- if (callBack != nil) {
93
-
94
- LCQBugReporting.didSelectPromptOptionHandler = ^(LCQPromptOption promptOption) {
95
-
96
- NSString *promptOptionString;
97
- if (promptOption == LCQPromptOptionBug) {
98
- promptOptionString = @"bug";
99
- } else if (promptOption == LCQBugReportingTypeFeedback) {
100
- promptOptionString = @"feedback";
101
- } else if (promptOption == LCQPromptOptionChat) {
102
- promptOptionString = @"chat";
103
- } else {
104
- promptOptionString = @"none";
105
- }
106
-
107
- [self sendEventWithName:@"LCQDidSelectPromptOptionHandler" body:@{
108
- @"promptOption": promptOptionString
109
- }];
110
- };
111
- } else {
112
- LCQBugReporting.didSelectPromptOptionHandler = nil;
113
- }
114
- }
115
-
116
- RCT_EXPORT_METHOD(setInvocationEvents:(NSArray*)invocationEventsArray) {
117
- LCQInvocationEvent invocationEvents = 0;
118
- for (NSNumber *boxedValue in invocationEventsArray) {
119
- invocationEvents |= [boxedValue intValue];
120
- }
121
- LCQBugReporting.invocationEvents = invocationEvents;
122
- }
123
-
124
- RCT_EXPORT_METHOD(setOptions:(NSArray*)invocationOptionsArray) {
125
- LCQBugReportingOption invocationOptions = 0;
126
-
127
- for (NSNumber *boxedValue in invocationOptionsArray) {
128
- invocationOptions |= [boxedValue intValue];
129
- }
130
-
131
- LCQBugReporting.bugReportingOptions = invocationOptions;
132
- }
133
-
134
- RCT_EXPORT_METHOD(setFloatingButtonEdge:(CGRectEdge)floatingButtonEdge withTopOffset:(double)floatingButtonOffsetFromTop) {
135
- LCQBugReporting.floatingButtonEdge = floatingButtonEdge;
136
- LCQBugReporting.floatingButtonTopOffset = floatingButtonOffsetFromTop;
137
- }
138
-
139
- RCT_EXPORT_METHOD(setExtendedBugReportMode:(LCQExtendedBugReportMode)extendedBugReportMode) {
140
- LCQBugReporting.extendedBugReportMode = extendedBugReportMode;
141
- }
142
-
143
- RCT_EXPORT_METHOD(setEnabledAttachmentTypes:(BOOL)screenShot
144
- extraScreenShot:(BOOL)extraScreenShot
145
- galleryImage:(BOOL)galleryImage
146
- screenRecording:(BOOL)screenRecording) {
147
- LCQAttachmentType attachmentTypes = 0;
148
- if(screenShot) {
149
- attachmentTypes = LCQAttachmentTypeScreenShot;
150
- }
151
- if(extraScreenShot) {
152
- attachmentTypes |= LCQAttachmentTypeExtraScreenShot;
153
- }
154
- if(galleryImage) {
155
- attachmentTypes |= LCQAttachmentTypeGalleryImage;
156
- }
157
- if(screenRecording) {
158
- attachmentTypes |= LCQAttachmentTypeScreenRecording;
159
- }
160
-
161
- LCQBugReporting.enabledAttachmentTypes = attachmentTypes;
162
- }
163
-
164
- RCT_EXPORT_METHOD(setViewHierarchyEnabled:(BOOL)viewHirearchyEnabled) {
165
- LCQBugReporting.shouldCaptureViewHierarchy = viewHirearchyEnabled;
166
- }
167
-
168
- RCT_EXPORT_METHOD(setVideoRecordingFloatingButtonPosition:(LCQPosition)position) {
169
- LCQBugReporting.videoRecordingFloatingButtonPosition = position;
170
- }
171
-
172
- RCT_EXPORT_METHOD(setReportTypes:(NSArray*) types ) {
173
- LCQBugReportingReportType reportTypes = 0;
174
- for (NSNumber *boxedValue in types) {
175
- reportTypes |= [boxedValue intValue];
176
- }
177
- [LCQBugReporting setPromptOptionsEnabledReportTypes: reportTypes];
178
- }
179
-
180
- RCT_EXPORT_METHOD(show:(LCQBugReportingReportType)type options:(NSArray*) options) {
181
- LCQBugReportingOption parsedOptions = 0;
182
- for (NSNumber *boxedValue in options) {
183
- parsedOptions |= [boxedValue intValue];
184
- }
185
- NSArray* args = @[@(type), @(parsedOptions)];
186
- [[NSRunLoop mainRunLoop] performSelector:@selector(showBugReportingWithReportTypeAndOptionsHelper:) target:self argument:args order:0 modes:@[NSDefaultRunLoopMode]];
187
- }
188
-
189
- - (void) showBugReportingWithReportTypeAndOptionsHelper:(NSArray*)args {
190
- LCQBugReportingReportType parsedreportType = [args[0] intValue];
191
- LCQBugReportingOption parsedOptions = [args[1] intValue];
192
- [LCQBugReporting showWithReportType:parsedreportType options:parsedOptions];
193
- }
194
-
195
- RCT_EXPORT_METHOD(setShakingThresholdForiPhone:(double)iPhoneShakingThreshold) {
196
- LCQBugReporting.shakingThresholdForiPhone = iPhoneShakingThreshold;
197
- }
198
-
199
- RCT_EXPORT_METHOD(setShakingThresholdForiPad:(double)iPadShakingThreshold) {
200
- LCQBugReporting.shakingThresholdForiPad = iPadShakingThreshold;
201
- }
202
-
203
- RCT_EXPORT_METHOD(setDisclaimerText:(NSString*)text) {
204
- [LCQBugReporting setDisclaimerText:text];
205
- }
206
-
207
- RCT_EXPORT_METHOD(setCommentMinimumCharacterCount:(nonnull NSNumber *)limit reportTypes:(NSArray *)reportTypes) {
208
- LCQBugReportingType parsedReportTypes = 0;
209
- if (![reportTypes count]) {
210
- parsedReportTypes = @(LCQBugReportingTypeBug).integerValue | @(LCQBugReportingTypeFeedback).integerValue | @(LCQBugReportingTypeQuestion).integerValue;
211
- }
212
- else {
213
- for (NSNumber *reportType in reportTypes) {
214
- parsedReportTypes |= [reportType intValue];
215
- }
216
- }
217
- [LCQBugReporting setCommentMinimumCharacterCount:[limit integerValue] forBugReportType:parsedReportTypes];
218
- }
219
-
220
- RCT_EXPORT_METHOD(addUserConsent:(NSString *)key
221
- description:(NSString *)description
222
- mandatory:(BOOL)mandatory
223
- checked:(BOOL)checked
224
- actionType:(id)actionType) {
225
- LCQConsentAction mappedActionType = (LCQConsentAction)[actionType integerValue];
226
-
227
- [LCQBugReporting addUserConsentWithKey:key
228
- description:description
229
- mandatory:mandatory
230
- checked:checked
231
- actionType:mappedActionType];
232
- }
233
-
234
- RCT_EXPORT_METHOD(setProactiveReportingConfigurations:(BOOL)enabled gap:(nonnull NSNumber* )gap model:(nonnull NSNumber* )modal) {
235
- LCQProactiveReportingConfigurations *configurations = [[LCQProactiveReportingConfigurations alloc] init];
236
- configurations.enabled = enabled; //Enable/disable
237
- configurations.gapBetweenModals = gap; // Time in seconds
238
- configurations.modalDelayAfterDetection = modal; // Time in seconds
239
- [LCQBugReporting setProactiveReportingConfigurations:configurations];
240
- }
241
-
242
-
243
- @synthesize description;
244
-
245
- @synthesize hash;
246
-
247
- @synthesize superclass;
248
-
249
- @end