@luciq/react-native 18.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -0
- package/FONTS_SETUP_GUIDE.md +521 -0
- package/Gemfile +1 -0
- package/Gemfile.lock +11 -0
- package/LICENSE +21 -0
- package/README.md +148 -0
- package/RNLuciq.podspec +21 -0
- package/android/build.gradle +88 -0
- package/android/gradle.properties +4 -0
- package/android/jacoco.gradle +52 -0
- package/android/native.gradle +7 -0
- package/android/proguard-rules.txt +1 -0
- package/android/sourcemaps.gradle +255 -0
- package/android/src/main/AndroidManifest.xml +4 -0
- package/android/src/main/java/ai/luciq/reactlibrary/ArgsRegistry.java +278 -0
- package/android/src/main/java/ai/luciq/reactlibrary/Constants.java +20 -0
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciq.java +328 -0
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqAPMModule.java +392 -0
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqBugReportingModule.java +444 -0
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqCrashReportingModule.java +169 -0
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqFeatureRequestsModule.java +98 -0
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqNetworkLoggerModule.java +195 -0
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqReactnativeModule.java +1611 -0
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqReactnativePackage.java +41 -0
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqRepliesModule.java +298 -0
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqSessionReplayModule.java +213 -0
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqSurveysModule.java +237 -0
- package/android/src/main/java/ai/luciq/reactlibrary/utils/ArrayUtil.java +167 -0
- package/android/src/main/java/ai/luciq/reactlibrary/utils/EventEmitterModule.java +35 -0
- package/android/src/main/java/ai/luciq/reactlibrary/utils/LuciqUtil.java +58 -0
- package/android/src/main/java/ai/luciq/reactlibrary/utils/MainThreadHandler.java +13 -0
- package/android/src/main/java/ai/luciq/reactlibrary/utils/MapUtil.java +171 -0
- package/android/src/main/java/ai/luciq/reactlibrary/utils/RNTouchedViewExtractor.java +167 -0
- package/android/src/main/java/ai/luciq/reactlibrary/utils/ReportUtil.java +67 -0
- package/app.plugin.js +1 -0
- package/babel.config.js +3 -0
- package/bin/commands/MigrateCommand.d.ts +6 -0
- package/bin/commands/UploadEasUpdatesSourcemaps.d.ts +2 -0
- package/bin/commands/UploadSoFiles.d.ts +6 -0
- package/bin/commands/UploadSourcemaps.d.ts +2 -0
- package/bin/config/migration-config.json +125 -0
- package/bin/index.d.ts +2 -0
- package/bin/index.js +19179 -0
- package/bin/upload/index.d.ts +4 -0
- package/bin/upload/migrate.d.ts +14 -0
- package/bin/upload/uploadEasUpdatesSourcemaps.d.ts +21 -0
- package/bin/upload/uploadSoFiles.d.ts +21 -0
- package/bin/upload/uploadSourcemaps.d.ts +21 -0
- package/cli/commands/MigrateCommand.ts +32 -0
- package/cli/commands/UploadEasUpdatesSourcemaps.ts +34 -0
- package/cli/commands/UploadSoFiles.ts +38 -0
- package/cli/commands/UploadSourcemaps.ts +40 -0
- package/cli/config/migration-config.json +125 -0
- package/cli/index.ts +21 -0
- package/cli/upload/index.ts +4 -0
- package/cli/upload/migrate.ts +271 -0
- package/cli/upload/uploadEasUpdatesSourcemaps.ts +74 -0
- package/cli/upload/uploadSoFiles.ts +112 -0
- package/cli/upload/uploadSourcemaps.ts +73 -0
- package/dangerfile.ts +44 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.js +14 -0
- package/dist/models/FeatureFlag.d.ts +11 -0
- package/dist/models/FeatureFlag.js +1 -0
- package/dist/models/LuciqConfig.d.ts +42 -0
- package/dist/models/LuciqConfig.js +1 -0
- package/dist/models/NonFatalOptions.d.ts +15 -0
- package/dist/models/NonFatalOptions.js +1 -0
- package/dist/models/OverAirUpdate.d.ts +12 -0
- package/dist/models/OverAirUpdate.js +1 -0
- package/dist/models/Report.d.ts +70 -0
- package/dist/models/Report.js +109 -0
- package/dist/models/ReproConfig.d.ts +27 -0
- package/dist/models/ReproConfig.js +1 -0
- package/dist/models/SessionMetadata.d.ts +55 -0
- package/dist/models/SessionMetadata.js +1 -0
- package/dist/models/ThemeConfig.d.ts +27 -0
- package/dist/models/ThemeConfig.js +1 -0
- package/dist/models/W3cExternalTraceAttributes.d.ts +22 -0
- package/dist/models/W3cExternalTraceAttributes.js +1 -0
- package/dist/modules/APM.d.ts +77 -0
- package/dist/modules/APM.js +104 -0
- package/dist/modules/BugReporting.d.ts +138 -0
- package/dist/modules/BugReporting.js +202 -0
- package/dist/modules/CrashReporting.d.ts +19 -0
- package/dist/modules/CrashReporting.js +40 -0
- package/dist/modules/FeatureRequests.d.ts +20 -0
- package/dist/modules/FeatureRequests.js +28 -0
- package/dist/modules/Luciq.d.ts +362 -0
- package/dist/modules/Luciq.js +797 -0
- package/dist/modules/NetworkLogger.d.ts +52 -0
- package/dist/modules/NetworkLogger.js +208 -0
- package/dist/modules/Replies.d.ts +78 -0
- package/dist/modules/Replies.js +121 -0
- package/dist/modules/SessionReplay.d.ts +78 -0
- package/dist/modules/SessionReplay.js +98 -0
- package/dist/modules/Surveys.d.ts +75 -0
- package/dist/modules/Surveys.js +101 -0
- package/dist/native/NativeAPM.d.ts +18 -0
- package/dist/native/NativeAPM.js +4 -0
- package/dist/native/NativeBugReporting.d.ts +32 -0
- package/dist/native/NativeBugReporting.js +10 -0
- package/dist/native/NativeConstants.d.ts +182 -0
- package/dist/native/NativeConstants.js +1 -0
- package/dist/native/NativeCrashReporting.d.ts +18 -0
- package/dist/native/NativeCrashReporting.js +2 -0
- package/dist/native/NativeFeatureRequests.d.ts +8 -0
- package/dist/native/NativeFeatureRequests.js +2 -0
- package/dist/native/NativeLuciq.d.ts +86 -0
- package/dist/native/NativeLuciq.js +10 -0
- package/dist/native/NativeNetworkLogger.d.ts +21 -0
- package/dist/native/NativeNetworkLogger.js +14 -0
- package/dist/native/NativePackage.d.ts +21 -0
- package/dist/native/NativePackage.js +2 -0
- package/dist/native/NativeReplies.d.ts +21 -0
- package/dist/native/NativeReplies.js +8 -0
- package/dist/native/NativeSessionReplay.d.ts +16 -0
- package/dist/native/NativeSessionReplay.js +8 -0
- package/dist/native/NativeSurveys.d.ts +22 -0
- package/dist/native/NativeSurveys.js +9 -0
- package/dist/utils/AppStatesHandler.d.ts +3 -0
- package/dist/utils/AppStatesHandler.js +16 -0
- package/dist/utils/Enums.d.ts +244 -0
- package/dist/utils/Enums.js +266 -0
- package/dist/utils/FeatureFlags.d.ts +7 -0
- package/dist/utils/FeatureFlags.js +24 -0
- package/dist/utils/LuciqConstants.d.ts +14 -0
- package/dist/utils/LuciqConstants.js +15 -0
- package/dist/utils/LuciqUtils.d.ts +97 -0
- package/dist/utils/LuciqUtils.js +301 -0
- package/dist/utils/UnhandledRejectionTracking.d.ts +9 -0
- package/dist/utils/UnhandledRejectionTracking.js +99 -0
- package/dist/utils/XhrNetworkInterceptor.d.ts +39 -0
- package/dist/utils/XhrNetworkInterceptor.js +253 -0
- package/dist/utils/config.d.ts +5 -0
- package/dist/utils/config.js +6 -0
- package/dist/utils/logger.d.ts +10 -0
- package/dist/utils/logger.js +39 -0
- package/expo.d.ts +1 -0
- package/expo.js +1 -0
- package/ios/RNLuciq/ArgsRegistry.h +32 -0
- package/ios/RNLuciq/ArgsRegistry.m +276 -0
- package/ios/RNLuciq/LuciqAPMBridge.h +26 -0
- package/ios/RNLuciq/LuciqAPMBridge.m +99 -0
- package/ios/RNLuciq/LuciqBugReportingBridge.h +60 -0
- package/ios/RNLuciq/LuciqBugReportingBridge.m +241 -0
- package/ios/RNLuciq/LuciqCrashReportingBridge.h +18 -0
- package/ios/RNLuciq/LuciqCrashReportingBridge.m +68 -0
- package/ios/RNLuciq/LuciqFeatureRequestsBridge.h +30 -0
- package/ios/RNLuciq/LuciqFeatureRequestsBridge.m +61 -0
- package/ios/RNLuciq/LuciqNetworkLoggerBridge.h +44 -0
- package/ios/RNLuciq/LuciqNetworkLoggerBridge.m +206 -0
- package/ios/RNLuciq/LuciqReactBridge.h +151 -0
- package/ios/RNLuciq/LuciqReactBridge.m +548 -0
- package/ios/RNLuciq/LuciqRepliesBridge.h +40 -0
- package/ios/RNLuciq/LuciqRepliesBridge.m +80 -0
- package/ios/RNLuciq/LuciqSessionReplayBridge.h +32 -0
- package/ios/RNLuciq/LuciqSessionReplayBridge.m +107 -0
- package/ios/RNLuciq/LuciqSurveysBridge.h +46 -0
- package/ios/RNLuciq/LuciqSurveysBridge.m +107 -0
- package/ios/RNLuciq/RCTConvert+LuciqEnums.h +18 -0
- package/ios/RNLuciq/RCTConvert+LuciqEnums.m +127 -0
- package/ios/RNLuciq/RNLuciq.h +35 -0
- package/ios/RNLuciq/RNLuciq.m +107 -0
- package/ios/RNLuciq/Util/LCQAPM+PrivateAPIs.h +15 -0
- package/ios/RNLuciq/Util/LCQCrashReporting+CP.h +13 -0
- package/ios/RNLuciq/Util/LCQNetworkLogger+CP.h +68 -0
- package/ios/RNLuciq/Util/Luciq+CP.h +12 -0
- package/ios/RNLuciq.xcodeproj/project.pbxproj +352 -0
- package/ios/native.rb +12 -0
- package/ios/sourcemaps.sh +120 -0
- package/migrate.js +569 -0
- package/package.json +92 -0
- package/plugin/build/index.js +42078 -0
- package/plugin/src/index.ts +5 -0
- package/plugin/src/pluginProps.ts +6 -0
- package/plugin/src/withLuciq.ts +51 -0
- package/plugin/src/withLuciqAndroid.ts +99 -0
- package/plugin/src/withLuciqIOS.ts +109 -0
- package/plugin/tsconfig.json +7 -0
- package/react-native.config.js +16 -0
- package/scripts/customize-ios-endpoints.sh +28 -0
- package/scripts/dream-11-delete-unused-features.sh +62 -0
- package/scripts/find-token.js +58 -0
- package/scripts/find-token.sh +70 -0
- package/scripts/notify-github.sh +15 -0
- package/scripts/replace.js +58 -0
- package/scripts/snapshot-comment.md +15 -0
- package/scripts/snapshot-version.sh +11 -0
- package/src/index.ts +40 -0
- package/src/models/FeatureFlag.ts +12 -0
- package/src/models/LuciqConfig.ts +48 -0
- package/src/models/NonFatalOptions.ts +16 -0
- package/src/models/OverAirUpdate.ts +14 -0
- package/src/models/Report.ts +124 -0
- package/src/models/ReproConfig.ts +31 -0
- package/src/models/SessionMetadata.ts +57 -0
- package/src/models/ThemeConfig.ts +34 -0
- package/src/models/W3cExternalTraceAttributes.ts +22 -0
- package/src/modules/APM.ts +117 -0
- package/src/modules/BugReporting.ts +254 -0
- package/src/modules/CrashReporting.ts +54 -0
- package/src/modules/FeatureRequests.ts +32 -0
- package/src/modules/Luciq.ts +934 -0
- package/src/modules/NetworkLogger.ts +270 -0
- package/src/modules/Replies.ts +137 -0
- package/src/modules/SessionReplay.ts +111 -0
- package/src/modules/Surveys.ts +118 -0
- package/src/native/NativeAPM.ts +51 -0
- package/src/native/NativeBugReporting.ts +70 -0
- package/src/native/NativeConstants.ts +215 -0
- package/src/native/NativeCrashReporting.ts +29 -0
- package/src/native/NativeFeatureRequests.ts +12 -0
- package/src/native/NativeLuciq.ts +179 -0
- package/src/native/NativeNetworkLogger.ts +42 -0
- package/src/native/NativePackage.ts +25 -0
- package/src/native/NativeReplies.ts +34 -0
- package/src/native/NativeSessionReplay.ts +21 -0
- package/src/native/NativeSurveys.ts +34 -0
- package/src/promise.d.ts +11 -0
- package/src/utils/AppStatesHandler.ts +19 -0
- package/src/utils/Enums.ts +266 -0
- package/src/utils/FeatureFlags.ts +33 -0
- package/src/utils/LuciqConstants.ts +24 -0
- package/src/utils/LuciqUtils.ts +417 -0
- package/src/utils/UnhandledRejectionTracking.ts +118 -0
- package/src/utils/XhrNetworkInterceptor.ts +333 -0
- package/src/utils/config.ts +7 -0
- package/src/utils/logger.ts +54 -0
- package/tsconfig.json +32 -0
- package/tsconfig.test.json +4 -0
- package/tsconfig.upload.json +10 -0
- package/upload/index.d.ts +4 -0
- package/upload/index.js +17314 -0
- package/upload/migrate.d.ts +14 -0
- package/upload/package.json +5 -0
- package/upload/uploadEasUpdatesSourcemaps.d.ts +21 -0
- package/upload/uploadSoFiles.d.ts +21 -0
- package/upload/uploadSourcemaps.d.ts +21 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
package ai.luciq.reactlibrary;
|
|
2
|
+
|
|
3
|
+
import android.annotation.SuppressLint;
|
|
4
|
+
|
|
5
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
6
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
7
|
+
import com.facebook.react.bridge.ReactMethod;
|
|
8
|
+
import com.facebook.react.bridge.ReadableArray;
|
|
9
|
+
import ai.luciq.featuresrequest.FeatureRequests;
|
|
10
|
+
import ai.luciq.library.Feature;
|
|
11
|
+
import ai.luciq.reactlibrary.utils.ArrayUtil;
|
|
12
|
+
import ai.luciq.reactlibrary.utils.MainThreadHandler;
|
|
13
|
+
|
|
14
|
+
import java.util.ArrayList;
|
|
15
|
+
|
|
16
|
+
import javax.annotation.Nonnull;
|
|
17
|
+
|
|
18
|
+
public class RNLuciqFeatureRequestsModule extends ReactContextBaseJavaModule {
|
|
19
|
+
|
|
20
|
+
public RNLuciqFeatureRequestsModule(ReactApplicationContext reactApplicationContext) {
|
|
21
|
+
super(reactApplicationContext);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@Nonnull
|
|
25
|
+
@Override
|
|
26
|
+
public String getName() {
|
|
27
|
+
return "LCQFeatureRequests";
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Sets whether email field is required or not when submitting
|
|
32
|
+
* new-feature-request/new-comment-on-feature
|
|
33
|
+
*
|
|
34
|
+
* @param isEmailRequired set true to make email field required
|
|
35
|
+
* @param actionTypes Bitwise-or of actions
|
|
36
|
+
*/
|
|
37
|
+
@ReactMethod
|
|
38
|
+
public void setEmailFieldRequiredForFeatureRequests(final boolean isEmailRequired, final ReadableArray actionTypes) {
|
|
39
|
+
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
40
|
+
@SuppressLint("WrongConstant")
|
|
41
|
+
@Override
|
|
42
|
+
public void run() {
|
|
43
|
+
try {
|
|
44
|
+
final ArrayList<String> keys = ArrayUtil.parseReadableArrayOfStrings(actionTypes);
|
|
45
|
+
final ArrayList<Integer> types = ArgsRegistry.actionTypes.getAll(keys);
|
|
46
|
+
|
|
47
|
+
final int[] typesInts = new int[types.size()];
|
|
48
|
+
for (int i = 0; i < types.size(); i++) {
|
|
49
|
+
typesInts[i] = types.get(i);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
FeatureRequests.setEmailFieldRequired(isEmailRequired, typesInts);
|
|
53
|
+
} catch (Exception e) {
|
|
54
|
+
e.printStackTrace();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Shows the UI for feature requests list
|
|
62
|
+
*/
|
|
63
|
+
@ReactMethod
|
|
64
|
+
public void show() {
|
|
65
|
+
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
66
|
+
@Override
|
|
67
|
+
public void run() {
|
|
68
|
+
try {
|
|
69
|
+
FeatureRequests.show();
|
|
70
|
+
} catch (Exception e) {
|
|
71
|
+
e.printStackTrace();
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Enables or disables feature requests.
|
|
79
|
+
* @param isEnabled boolean indicating enabled or disabled.
|
|
80
|
+
*/
|
|
81
|
+
@ReactMethod
|
|
82
|
+
public void setEnabled(final boolean isEnabled) {
|
|
83
|
+
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
84
|
+
@Override
|
|
85
|
+
public void run() {
|
|
86
|
+
try {
|
|
87
|
+
if (isEnabled) {
|
|
88
|
+
FeatureRequests.setState(Feature.State.ENABLED);
|
|
89
|
+
} else {
|
|
90
|
+
FeatureRequests.setState(Feature.State.DISABLED);
|
|
91
|
+
}
|
|
92
|
+
} catch (Exception e) {
|
|
93
|
+
e.printStackTrace();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
package ai.luciq.reactlibrary;
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
import static ai.luciq.apm.configuration.cp.APMFeature.APM_NETWORK_PLUGIN_INSTALLED;
|
|
5
|
+
import static ai.luciq.apm.configuration.cp.APMFeature.CP_NATIVE_INTERCEPTION_ENABLED;
|
|
6
|
+
|
|
7
|
+
import android.util.Log;
|
|
8
|
+
|
|
9
|
+
import androidx.annotation.NonNull;
|
|
10
|
+
|
|
11
|
+
import com.facebook.react.bridge.Arguments;
|
|
12
|
+
import com.facebook.react.bridge.Promise;
|
|
13
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
14
|
+
import com.facebook.react.bridge.ReactMethod;
|
|
15
|
+
import com.facebook.react.bridge.ReadableMap;
|
|
16
|
+
import com.facebook.react.bridge.ReadableMapKeySetIterator;
|
|
17
|
+
import com.facebook.react.bridge.WritableMap;
|
|
18
|
+
import com.facebook.react.bridge.WritableNativeMap;
|
|
19
|
+
import ai.luciq.apm.InternalAPM;
|
|
20
|
+
import ai.luciq.apm.sanitization.OnCompleteCallback;
|
|
21
|
+
import ai.luciq.library.logging.listeners.networklogs.NetworkLogSnapshot;
|
|
22
|
+
import ai.luciq.reactlibrary.utils.EventEmitterModule;
|
|
23
|
+
import ai.luciq.reactlibrary.utils.MainThreadHandler;
|
|
24
|
+
|
|
25
|
+
import org.json.JSONException;
|
|
26
|
+
import org.json.JSONObject;
|
|
27
|
+
|
|
28
|
+
import java.util.HashMap;
|
|
29
|
+
import java.util.Map;
|
|
30
|
+
import java.util.concurrent.ConcurrentHashMap;
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
public class RNLuciqNetworkLoggerModule extends EventEmitterModule {
|
|
34
|
+
|
|
35
|
+
public final ConcurrentHashMap<String, OnCompleteCallback<NetworkLogSnapshot>> callbackMap = new ConcurrentHashMap<String, OnCompleteCallback<NetworkLogSnapshot>>();
|
|
36
|
+
|
|
37
|
+
public RNLuciqNetworkLoggerModule(ReactApplicationContext reactContext) {
|
|
38
|
+
super(reactContext);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@NonNull
|
|
43
|
+
@Override
|
|
44
|
+
public String getName() {
|
|
45
|
+
return "LCQNetworkLogger";
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
@ReactMethod
|
|
50
|
+
public void addListener(String event) {
|
|
51
|
+
super.addListener(event);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
@ReactMethod
|
|
55
|
+
public void removeListeners(Integer count) {
|
|
56
|
+
super.removeListeners(count);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
private boolean getFlagValue(String key) {
|
|
60
|
+
return InternalAPM._isFeatureEnabledCP(key, "");
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
private WritableMap convertFromMapToWritableMap(Map<String, Object> map) {
|
|
64
|
+
WritableMap writableMap = new WritableNativeMap();
|
|
65
|
+
for (String key : map.keySet()) {
|
|
66
|
+
Object value = map.get(key);
|
|
67
|
+
writableMap.putString(key, (String) value);
|
|
68
|
+
}
|
|
69
|
+
return writableMap;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
private Map<String, Object> convertReadableMapToMap(ReadableMap readableMap) {
|
|
73
|
+
Map<String, Object> map = new HashMap<>();
|
|
74
|
+
if (readableMap != null) {
|
|
75
|
+
ReadableMapKeySetIterator iterator = readableMap.keySetIterator();
|
|
76
|
+
while (iterator.hasNextKey()) {
|
|
77
|
+
String key = iterator.nextKey();
|
|
78
|
+
map.put(key, readableMap.getString(key));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return map;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Get first time Value of [cp_native_interception_enabled] flag
|
|
86
|
+
*/
|
|
87
|
+
@ReactMethod
|
|
88
|
+
public void isNativeInterceptionEnabled(Promise promise) {
|
|
89
|
+
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
90
|
+
@Override
|
|
91
|
+
public void run() {
|
|
92
|
+
try {
|
|
93
|
+
promise.resolve(getFlagValue(CP_NATIVE_INTERCEPTION_ENABLED));
|
|
94
|
+
} catch (Exception e) {
|
|
95
|
+
e.printStackTrace();
|
|
96
|
+
promise.resolve(false); // Will rollback to JS interceptor
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Indicate if user added APM Network plugin or not
|
|
105
|
+
* [true] means user added the APM plugin
|
|
106
|
+
* [false] means not
|
|
107
|
+
*/
|
|
108
|
+
@ReactMethod
|
|
109
|
+
public void hasAPMNetworkPlugin(Promise promise) {
|
|
110
|
+
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
111
|
+
@Override
|
|
112
|
+
public void run() {
|
|
113
|
+
try {
|
|
114
|
+
promise.resolve(getFlagValue(APM_NETWORK_PLUGIN_INSTALLED));
|
|
115
|
+
} catch (Exception e) {
|
|
116
|
+
e.printStackTrace();
|
|
117
|
+
promise.resolve(false); // Will rollback to JS interceptor
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
@ReactMethod
|
|
126
|
+
public void registerNetworkLogsListener() {
|
|
127
|
+
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
128
|
+
@Override
|
|
129
|
+
public void run() {
|
|
130
|
+
InternalAPM._registerNetworkLogSanitizer((networkLogSnapshot, onCompleteCallback) -> {
|
|
131
|
+
final String id = String.valueOf(onCompleteCallback.hashCode());
|
|
132
|
+
callbackMap.put(id, onCompleteCallback);
|
|
133
|
+
|
|
134
|
+
WritableMap networkSnapshotParams = Arguments.createMap();
|
|
135
|
+
networkSnapshotParams.putString("id", id);
|
|
136
|
+
networkSnapshotParams.putString("url", networkLogSnapshot.getUrl());
|
|
137
|
+
networkSnapshotParams.putInt("responseCode", networkLogSnapshot.getResponseCode());
|
|
138
|
+
networkSnapshotParams.putString("requestBody", networkLogSnapshot.getRequestBody());
|
|
139
|
+
networkSnapshotParams.putString("response", networkLogSnapshot.getResponse());
|
|
140
|
+
final Map<String, Object> requestHeaders = networkLogSnapshot.getRequestHeaders();
|
|
141
|
+
if (requestHeaders != null) {
|
|
142
|
+
networkSnapshotParams.putMap("requestHeader", convertFromMapToWritableMap(requestHeaders));
|
|
143
|
+
}
|
|
144
|
+
final Map<String, Object> responseHeaders = networkLogSnapshot.getResponseHeaders();
|
|
145
|
+
if (responseHeaders != null) {
|
|
146
|
+
networkSnapshotParams.putMap("responseHeader", convertFromMapToWritableMap(responseHeaders));
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
sendEvent(Constants.LCQ_NETWORK_LOGGER_HANDLER, networkSnapshotParams);
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
@ReactMethod
|
|
156
|
+
public void resetNetworkLogsListener() {
|
|
157
|
+
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
158
|
+
@Override
|
|
159
|
+
public void run() {
|
|
160
|
+
InternalAPM._registerNetworkLogSanitizer(null);
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
@ReactMethod
|
|
166
|
+
public void updateNetworkLogSnapshot(
|
|
167
|
+
String url,
|
|
168
|
+
String callbackID,
|
|
169
|
+
String requestBody,
|
|
170
|
+
String responseBody,
|
|
171
|
+
int responseCode,
|
|
172
|
+
ReadableMap requestHeaders,
|
|
173
|
+
ReadableMap responseHeaders
|
|
174
|
+
) {
|
|
175
|
+
try {
|
|
176
|
+
// Convert ReadableMap to a Java Map for easier handling
|
|
177
|
+
Map<String, Object> requestHeadersMap = convertReadableMapToMap(requestHeaders);
|
|
178
|
+
Map<String, Object> responseHeadersMap = convertReadableMapToMap(responseHeaders);
|
|
179
|
+
|
|
180
|
+
NetworkLogSnapshot modifiedSnapshot = null;
|
|
181
|
+
if (!url.isEmpty()) {
|
|
182
|
+
modifiedSnapshot = new NetworkLogSnapshot(url, requestHeadersMap, requestBody, responseHeadersMap, responseBody, responseCode);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
final OnCompleteCallback<NetworkLogSnapshot> callback = callbackMap.get(callbackID);
|
|
186
|
+
if (callback != null) {
|
|
187
|
+
callback.onComplete(modifiedSnapshot);
|
|
188
|
+
callbackMap.remove(callbackID);
|
|
189
|
+
}
|
|
190
|
+
} catch (Exception e) {
|
|
191
|
+
// Reject the promise to indicate an error occurred
|
|
192
|
+
Log.e("IB-CP-Bridge", "LuciqNetworkLogger.updateNetworkLogSnapshot failed to parse the network snapshot object.");
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|