@luciq/react-native 19.3.0-40271-SNAPSHOT → 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 -12
- 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 +29 -56
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqReactnativeModule.java +121 -47
- 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/EventEmitterModule.java +0 -7
- 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 +23 -3
- package/dist/modules/NetworkLogger.d.ts +5 -0
- package/dist/modules/NetworkLogger.js +1 -9
- 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/FeatureFlags.d.ts +0 -6
- package/dist/utils/FeatureFlags.js +0 -35
- package/dist/utils/LuciqUtils.d.ts +1 -1
- package/dist/utils/LuciqUtils.js +0 -9
- package/dist/utils/XhrNetworkInterceptor.js +53 -85
- 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 -1
- package/src/modules/BugReporting.ts +3 -3
- package/src/modules/Luciq.ts +26 -4
- package/src/modules/NetworkLogger.ts +1 -26
- 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/FeatureFlags.ts +0 -44
- package/src/utils/LuciqUtils.ts +1 -21
- package/src/utils/XhrNetworkInterceptor.ts +55 -128
- package/ios/RNLuciq/LuciqBugReportingBridge.m +0 -249
- package/ios/RNLuciq/LuciqCrashReportingBridge.m +0 -68
- package/ios/RNLuciq/LuciqRepliesBridge.m +0 -80
|
@@ -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`,
|
|
@@ -1,40 +1,5 @@
|
|
|
1
1
|
import { NativeLuciq } from '../native/NativeLuciq';
|
|
2
2
|
import { _registerFeatureFlagsChangeListener } from '../modules/Luciq';
|
|
3
|
-
import { Logger } from './logger';
|
|
4
|
-
|
|
5
|
-
const TAG = 'LCQ-RN-NET:';
|
|
6
|
-
|
|
7
|
-
let cachedW3cFlags = {
|
|
8
|
-
isW3cExternalTraceIDEnabled: false,
|
|
9
|
-
isW3cExternalGeneratedHeaderEnabled: false,
|
|
10
|
-
isW3cCaughtHeaderEnabled: false,
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
export async function initFeatureFlagsCache() {
|
|
14
|
-
Logger.debug(TAG, '[FeatureFlags] Initializing W3C feature flags cache from native bridge...');
|
|
15
|
-
try {
|
|
16
|
-
const [traceID, generatedHeader, caughtHeader] = await Promise.all([
|
|
17
|
-
NativeLuciq.isW3ExternalTraceIDEnabled(),
|
|
18
|
-
NativeLuciq.isW3ExternalGeneratedHeaderEnabled(),
|
|
19
|
-
NativeLuciq.isW3CaughtHeaderEnabled(),
|
|
20
|
-
]);
|
|
21
|
-
cachedW3cFlags = {
|
|
22
|
-
isW3cExternalTraceIDEnabled: traceID,
|
|
23
|
-
isW3cExternalGeneratedHeaderEnabled: generatedHeader,
|
|
24
|
-
isW3cCaughtHeaderEnabled: caughtHeader,
|
|
25
|
-
};
|
|
26
|
-
Logger.debug(
|
|
27
|
-
TAG,
|
|
28
|
-
`[FeatureFlags] Cache initialized: traceID=${traceID}, generatedHeader=${generatedHeader}, caughtHeader=${caughtHeader}`,
|
|
29
|
-
);
|
|
30
|
-
} catch (e) {
|
|
31
|
-
Logger.debug(TAG, '[FeatureFlags] Failed to initialize cache, using defaults (all false):', e);
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export function getCachedW3cFlags() {
|
|
36
|
-
return cachedW3cFlags;
|
|
37
|
-
}
|
|
38
3
|
|
|
39
4
|
export const FeatureFlags = {
|
|
40
5
|
isW3ExternalTraceID: () => NativeLuciq.isW3ExternalTraceIDEnabled(),
|
|
@@ -51,15 +16,6 @@ export const registerFeatureFlagsListener = () => {
|
|
|
51
16
|
isW3CaughtHeaderEnabled: boolean;
|
|
52
17
|
networkBodyLimit: number;
|
|
53
18
|
}) => {
|
|
54
|
-
Logger.debug(
|
|
55
|
-
TAG,
|
|
56
|
-
`[FeatureFlags] Flags updated from native listener: traceID=${res.isW3ExternalTraceIDEnabled}, generatedHeader=${res.isW3ExternalGeneratedHeaderEnabled}, caughtHeader=${res.isW3CaughtHeaderEnabled}, bodyLimit=${res.networkBodyLimit}`,
|
|
57
|
-
);
|
|
58
|
-
cachedW3cFlags = {
|
|
59
|
-
isW3cExternalTraceIDEnabled: res.isW3ExternalTraceIDEnabled,
|
|
60
|
-
isW3cExternalGeneratedHeaderEnabled: res.isW3ExternalGeneratedHeaderEnabled,
|
|
61
|
-
isW3cCaughtHeaderEnabled: res.isW3CaughtHeaderEnabled,
|
|
62
|
-
};
|
|
63
19
|
FeatureFlags.isW3ExternalTraceID = async () => {
|
|
64
20
|
return res.isW3ExternalTraceIDEnabled;
|
|
65
21
|
};
|
package/src/utils/LuciqUtils.ts
CHANGED
|
@@ -12,7 +12,6 @@ import { NativeCrashReporting } from '../native/NativeCrashReporting';
|
|
|
12
12
|
import type { NetworkData } from './XhrNetworkInterceptor';
|
|
13
13
|
import { NativeLuciq } from '../native/NativeLuciq';
|
|
14
14
|
import { NativeAPM } from '../native/NativeAPM';
|
|
15
|
-
import { Logger } from './logger';
|
|
16
15
|
import * as NetworkLogger from '../modules/NetworkLogger';
|
|
17
16
|
import {
|
|
18
17
|
NativeNetworkLogger,
|
|
@@ -165,14 +164,9 @@ export const stringifyIfNotString = (input: unknown) => {
|
|
|
165
164
|
*/
|
|
166
165
|
export async function sendCrashReport(
|
|
167
166
|
error: ExtendedError,
|
|
168
|
-
remoteSenderCallback: (json: CrashData
|
|
167
|
+
remoteSenderCallback: (json: CrashData) => Promise<void>,
|
|
169
168
|
) {
|
|
170
169
|
const jsonObject = getCrashDataFromError(error);
|
|
171
|
-
|
|
172
|
-
if (Platform.OS === 'android') {
|
|
173
|
-
return remoteSenderCallback(JSON.stringify(jsonObject));
|
|
174
|
-
}
|
|
175
|
-
|
|
176
170
|
return remoteSenderCallback(jsonObject);
|
|
177
171
|
}
|
|
178
172
|
/**
|
|
@@ -232,11 +226,6 @@ export const reportNetworkLog = (network: NetworkData) => {
|
|
|
232
226
|
const requestHeaders = JSON.stringify(network.requestHeaders);
|
|
233
227
|
const responseHeaders = JSON.stringify(network.responseHeaders);
|
|
234
228
|
|
|
235
|
-
Logger.debug(
|
|
236
|
-
'LCQ-RN-NET:',
|
|
237
|
-
`[reportNetworkLog] Sending to NativeLuciq.networkLogAndroid: ${network.method} ${network.url}, status=${network.responseCode}, duration=${network.duration}ms, error=${network.errorDomain || 'none'}`,
|
|
238
|
-
);
|
|
239
|
-
|
|
240
229
|
NativeLuciq.networkLogAndroid(
|
|
241
230
|
network.url,
|
|
242
231
|
network.requestBody,
|
|
@@ -252,10 +241,6 @@ export const reportNetworkLog = (network: NetworkData) => {
|
|
|
252
241
|
!apmFlags.hasAPMNetworkPlugin ||
|
|
253
242
|
!apmFlags.shouldEnableNativeInterception
|
|
254
243
|
) {
|
|
255
|
-
Logger.debug(
|
|
256
|
-
'LCQ-RN-NET:',
|
|
257
|
-
`[reportNetworkLog] Also sending to NativeAPM.networkLogAndroid (native interception disabled): ${network.method} ${network.url}`,
|
|
258
|
-
);
|
|
259
244
|
NativeAPM.networkLogAndroid(
|
|
260
245
|
network.startTime,
|
|
261
246
|
network.duration,
|
|
@@ -281,11 +266,6 @@ export const reportNetworkLog = (network: NetworkData) => {
|
|
|
281
266
|
network.gqlQueryName,
|
|
282
267
|
network.serverErrorMessage,
|
|
283
268
|
);
|
|
284
|
-
} else {
|
|
285
|
-
Logger.debug(
|
|
286
|
-
'LCQ-RN-NET:',
|
|
287
|
-
`[reportNetworkLog] Skipping NativeAPM.networkLogAndroid (native interception enabled): nativeFeature=${apmFlags.isNativeInterceptionFeatureEnabled}, hasPlugin=${apmFlags.hasAPMNetworkPlugin}, shouldEnable=${apmFlags.shouldEnableNativeInterception}`,
|
|
288
|
-
);
|
|
289
269
|
}
|
|
290
270
|
} else {
|
|
291
271
|
NativeLuciq.networkLogIOS(
|