@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.
- package/CHANGELOG.md +15 -0
- package/README.md +118 -0
- package/RNLuciq.podspec +6 -2
- package/android/build.gradle +25 -0
- package/android/native.gradle +1 -1
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqAPMModule.java +3 -3
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqBugReportingModule.java +28 -24
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqCrashReportingModule.java +18 -7
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqFeatureRequestsModule.java +1 -2
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqNetworkLoggerModule.java +24 -29
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqReactnativeModule.java +112 -16
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqReactnativePackage.java +2 -0
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqRepliesModule.java +4 -16
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqSessionReplayModule.java +5 -16
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqSurveysModule.java +7 -15
- package/android/src/main/java/ai/luciq/reactlibrary/utils/ReportUtil.java +0 -7
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqAPMBaseSpec.java +9 -0
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqBaseSpec.java +33 -0
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqBugReportingBaseSpec.java +33 -0
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqCrashReportingBaseSpec.java +9 -0
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqFeatureRequestsBaseSpec.java +9 -0
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqNetworkLoggerBaseSpec.java +33 -0
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqRepliesBaseSpec.java +33 -0
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqSessionReplayBaseSpec.java +33 -0
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqSurveysBaseSpec.java +33 -0
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqAPMBaseSpec.java +11 -0
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqBaseSpec.java +22 -0
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqBugReportingBaseSpec.java +22 -0
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqCrashReportingBaseSpec.java +10 -0
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqFeatureRequestsBaseSpec.java +10 -0
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqNetworkLoggerBaseSpec.java +22 -0
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqRepliesBaseSpec.java +22 -0
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqSessionReplayBaseSpec.java +22 -0
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqSurveysBaseSpec.java +22 -0
- package/dist/modules/BugReporting.js +3 -3
- package/dist/modules/Luciq.d.ts +15 -0
- package/dist/modules/Luciq.js +22 -1
- package/dist/modules/Replies.js +1 -1
- package/dist/modules/Surveys.js +2 -2
- package/dist/native/NativeBugReporting.d.ts +4 -4
- package/dist/native/NativeCrashReporting.d.ts +2 -2
- package/dist/native/NativeLuciq.d.ts +5 -3
- package/dist/native/NativePackage.js +25 -2
- package/dist/native/NativeReplies.d.ts +1 -1
- package/dist/native/NativeSurveys.d.ts +2 -2
- package/dist/native/specs/NativeAPM.d.ts +21 -0
- package/dist/native/specs/NativeAPM.js +2 -0
- package/dist/native/specs/NativeBugReporting.d.ts +29 -0
- package/dist/native/specs/NativeBugReporting.js +2 -0
- package/dist/native/specs/NativeCrashReporting.d.ts +12 -0
- package/dist/native/specs/NativeCrashReporting.js +2 -0
- package/dist/native/specs/NativeFeatureRequests.d.ts +8 -0
- package/dist/native/specs/NativeFeatureRequests.js +2 -0
- package/dist/native/specs/NativeLuciq.d.ts +80 -0
- package/dist/native/specs/NativeLuciq.js +2 -0
- package/dist/native/specs/NativeNetworkLogger.d.ts +16 -0
- package/dist/native/specs/NativeNetworkLogger.js +2 -0
- package/dist/native/specs/NativeReplies.d.ts +21 -0
- package/dist/native/specs/NativeReplies.js +2 -0
- package/dist/native/specs/NativeSessionReplay.d.ts +17 -0
- package/dist/native/specs/NativeSessionReplay.js +2 -0
- package/dist/native/specs/NativeSurveys.d.ts +18 -0
- package/dist/native/specs/NativeSurveys.js +2 -0
- package/dist/utils/Enums.js +3 -1
- package/dist/utils/LuciqUtils.d.ts +1 -1
- package/dist/utils/LuciqUtils.js +0 -3
- package/ios/RNLuciq/LuciqAPMBridge.h +5 -5
- package/ios/RNLuciq/{LuciqAPMBridge.m → LuciqAPMBridge.mm} +48 -39
- package/ios/RNLuciq/LuciqBugReportingBridge.h +6 -6
- package/ios/RNLuciq/LuciqBugReportingBridge.mm +234 -0
- package/ios/RNLuciq/LuciqCrashReportingBridge.h +16 -5
- package/ios/RNLuciq/LuciqCrashReportingBridge.mm +91 -0
- package/ios/RNLuciq/LuciqFeatureRequestsBridge.h +1 -1
- package/ios/RNLuciq/{LuciqFeatureRequestsBridge.m → LuciqFeatureRequestsBridge.mm} +21 -16
- package/ios/RNLuciq/LuciqNetworkLoggerBridge.h +1 -30
- package/ios/RNLuciq/{LuciqNetworkLoggerBridge.m → LuciqNetworkLoggerBridge.mm} +46 -77
- package/ios/RNLuciq/LuciqReactBridge.h +13 -13
- package/ios/RNLuciq/{LuciqReactBridge.m → LuciqReactBridge.mm} +95 -34
- package/ios/RNLuciq/LuciqRepliesBridge.h +3 -3
- package/ios/RNLuciq/LuciqRepliesBridge.mm +86 -0
- package/ios/RNLuciq/LuciqSessionReplayBridge.h +5 -5
- package/ios/RNLuciq/{LuciqSessionReplayBridge.m → LuciqSessionReplayBridge.mm} +35 -25
- package/ios/RNLuciq/LuciqSurveysBridge.h +5 -5
- package/ios/RNLuciq/{LuciqSurveysBridge.m → LuciqSurveysBridge.mm} +34 -35
- package/ios/native.rb +1 -1
- package/package.json +9 -2
- package/src/modules/BugReporting.ts +3 -3
- package/src/modules/Luciq.ts +25 -1
- package/src/modules/Replies.ts +1 -1
- package/src/modules/Surveys.ts +2 -2
- package/src/native/NativeBugReporting.ts +3 -6
- package/src/native/NativeCrashReporting.ts +2 -2
- package/src/native/NativeLuciq.ts +7 -3
- package/src/native/NativePackage.ts +52 -2
- package/src/native/NativeReplies.ts +1 -1
- package/src/native/NativeSurveys.ts +2 -2
- package/src/native/specs/NativeAPM.ts +47 -0
- package/src/native/specs/NativeBugReporting.ts +53 -0
- package/src/native/specs/NativeCrashReporting.ts +23 -0
- package/src/native/specs/NativeFeatureRequests.ts +10 -0
- package/src/native/specs/NativeLuciq.ts +137 -0
- package/src/native/specs/NativeNetworkLogger.ts +31 -0
- package/src/native/specs/NativeReplies.ts +27 -0
- package/src/native/specs/NativeSessionReplay.ts +20 -0
- package/src/native/specs/NativeSurveys.ts +23 -0
- package/src/utils/Enums.ts +4 -1
- package/src/utils/LuciqUtils.ts +1 -6
- package/ios/RNLuciq/LuciqBugReportingBridge.m +0 -249
- package/ios/RNLuciq/LuciqCrashReportingBridge.m +0 -68
- 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');
|
package/src/utils/Enums.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { NativeLuciq } from '../native/NativeLuciq';
|
|
2
2
|
|
|
3
|
-
const constants =
|
|
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`,
|
package/src/utils/LuciqUtils.ts
CHANGED
|
@@ -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
|
|
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
|