@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.
Files changed (239) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/FONTS_SETUP_GUIDE.md +521 -0
  3. package/Gemfile +1 -0
  4. package/Gemfile.lock +11 -0
  5. package/LICENSE +21 -0
  6. package/README.md +148 -0
  7. package/RNLuciq.podspec +21 -0
  8. package/android/build.gradle +88 -0
  9. package/android/gradle.properties +4 -0
  10. package/android/jacoco.gradle +52 -0
  11. package/android/native.gradle +7 -0
  12. package/android/proguard-rules.txt +1 -0
  13. package/android/sourcemaps.gradle +255 -0
  14. package/android/src/main/AndroidManifest.xml +4 -0
  15. package/android/src/main/java/ai/luciq/reactlibrary/ArgsRegistry.java +278 -0
  16. package/android/src/main/java/ai/luciq/reactlibrary/Constants.java +20 -0
  17. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciq.java +328 -0
  18. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqAPMModule.java +392 -0
  19. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqBugReportingModule.java +444 -0
  20. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqCrashReportingModule.java +169 -0
  21. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqFeatureRequestsModule.java +98 -0
  22. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqNetworkLoggerModule.java +195 -0
  23. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqReactnativeModule.java +1611 -0
  24. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqReactnativePackage.java +41 -0
  25. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqRepliesModule.java +298 -0
  26. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqSessionReplayModule.java +213 -0
  27. package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqSurveysModule.java +237 -0
  28. package/android/src/main/java/ai/luciq/reactlibrary/utils/ArrayUtil.java +167 -0
  29. package/android/src/main/java/ai/luciq/reactlibrary/utils/EventEmitterModule.java +35 -0
  30. package/android/src/main/java/ai/luciq/reactlibrary/utils/LuciqUtil.java +58 -0
  31. package/android/src/main/java/ai/luciq/reactlibrary/utils/MainThreadHandler.java +13 -0
  32. package/android/src/main/java/ai/luciq/reactlibrary/utils/MapUtil.java +171 -0
  33. package/android/src/main/java/ai/luciq/reactlibrary/utils/RNTouchedViewExtractor.java +167 -0
  34. package/android/src/main/java/ai/luciq/reactlibrary/utils/ReportUtil.java +67 -0
  35. package/app.plugin.js +1 -0
  36. package/babel.config.js +3 -0
  37. package/bin/commands/MigrateCommand.d.ts +6 -0
  38. package/bin/commands/UploadEasUpdatesSourcemaps.d.ts +2 -0
  39. package/bin/commands/UploadSoFiles.d.ts +6 -0
  40. package/bin/commands/UploadSourcemaps.d.ts +2 -0
  41. package/bin/config/migration-config.json +125 -0
  42. package/bin/index.d.ts +2 -0
  43. package/bin/index.js +19179 -0
  44. package/bin/upload/index.d.ts +4 -0
  45. package/bin/upload/migrate.d.ts +14 -0
  46. package/bin/upload/uploadEasUpdatesSourcemaps.d.ts +21 -0
  47. package/bin/upload/uploadSoFiles.d.ts +21 -0
  48. package/bin/upload/uploadSourcemaps.d.ts +21 -0
  49. package/cli/commands/MigrateCommand.ts +32 -0
  50. package/cli/commands/UploadEasUpdatesSourcemaps.ts +34 -0
  51. package/cli/commands/UploadSoFiles.ts +38 -0
  52. package/cli/commands/UploadSourcemaps.ts +40 -0
  53. package/cli/config/migration-config.json +125 -0
  54. package/cli/index.ts +21 -0
  55. package/cli/upload/index.ts +4 -0
  56. package/cli/upload/migrate.ts +271 -0
  57. package/cli/upload/uploadEasUpdatesSourcemaps.ts +74 -0
  58. package/cli/upload/uploadSoFiles.ts +112 -0
  59. package/cli/upload/uploadSourcemaps.ts +73 -0
  60. package/dangerfile.ts +44 -0
  61. package/dist/index.d.ts +19 -0
  62. package/dist/index.js +14 -0
  63. package/dist/models/FeatureFlag.d.ts +11 -0
  64. package/dist/models/FeatureFlag.js +1 -0
  65. package/dist/models/LuciqConfig.d.ts +42 -0
  66. package/dist/models/LuciqConfig.js +1 -0
  67. package/dist/models/NonFatalOptions.d.ts +15 -0
  68. package/dist/models/NonFatalOptions.js +1 -0
  69. package/dist/models/OverAirUpdate.d.ts +12 -0
  70. package/dist/models/OverAirUpdate.js +1 -0
  71. package/dist/models/Report.d.ts +70 -0
  72. package/dist/models/Report.js +109 -0
  73. package/dist/models/ReproConfig.d.ts +27 -0
  74. package/dist/models/ReproConfig.js +1 -0
  75. package/dist/models/SessionMetadata.d.ts +55 -0
  76. package/dist/models/SessionMetadata.js +1 -0
  77. package/dist/models/ThemeConfig.d.ts +27 -0
  78. package/dist/models/ThemeConfig.js +1 -0
  79. package/dist/models/W3cExternalTraceAttributes.d.ts +22 -0
  80. package/dist/models/W3cExternalTraceAttributes.js +1 -0
  81. package/dist/modules/APM.d.ts +77 -0
  82. package/dist/modules/APM.js +104 -0
  83. package/dist/modules/BugReporting.d.ts +138 -0
  84. package/dist/modules/BugReporting.js +202 -0
  85. package/dist/modules/CrashReporting.d.ts +19 -0
  86. package/dist/modules/CrashReporting.js +40 -0
  87. package/dist/modules/FeatureRequests.d.ts +20 -0
  88. package/dist/modules/FeatureRequests.js +28 -0
  89. package/dist/modules/Luciq.d.ts +362 -0
  90. package/dist/modules/Luciq.js +797 -0
  91. package/dist/modules/NetworkLogger.d.ts +52 -0
  92. package/dist/modules/NetworkLogger.js +208 -0
  93. package/dist/modules/Replies.d.ts +78 -0
  94. package/dist/modules/Replies.js +121 -0
  95. package/dist/modules/SessionReplay.d.ts +78 -0
  96. package/dist/modules/SessionReplay.js +98 -0
  97. package/dist/modules/Surveys.d.ts +75 -0
  98. package/dist/modules/Surveys.js +101 -0
  99. package/dist/native/NativeAPM.d.ts +18 -0
  100. package/dist/native/NativeAPM.js +4 -0
  101. package/dist/native/NativeBugReporting.d.ts +32 -0
  102. package/dist/native/NativeBugReporting.js +10 -0
  103. package/dist/native/NativeConstants.d.ts +182 -0
  104. package/dist/native/NativeConstants.js +1 -0
  105. package/dist/native/NativeCrashReporting.d.ts +18 -0
  106. package/dist/native/NativeCrashReporting.js +2 -0
  107. package/dist/native/NativeFeatureRequests.d.ts +8 -0
  108. package/dist/native/NativeFeatureRequests.js +2 -0
  109. package/dist/native/NativeLuciq.d.ts +86 -0
  110. package/dist/native/NativeLuciq.js +10 -0
  111. package/dist/native/NativeNetworkLogger.d.ts +21 -0
  112. package/dist/native/NativeNetworkLogger.js +14 -0
  113. package/dist/native/NativePackage.d.ts +21 -0
  114. package/dist/native/NativePackage.js +2 -0
  115. package/dist/native/NativeReplies.d.ts +21 -0
  116. package/dist/native/NativeReplies.js +8 -0
  117. package/dist/native/NativeSessionReplay.d.ts +16 -0
  118. package/dist/native/NativeSessionReplay.js +8 -0
  119. package/dist/native/NativeSurveys.d.ts +22 -0
  120. package/dist/native/NativeSurveys.js +9 -0
  121. package/dist/utils/AppStatesHandler.d.ts +3 -0
  122. package/dist/utils/AppStatesHandler.js +16 -0
  123. package/dist/utils/Enums.d.ts +244 -0
  124. package/dist/utils/Enums.js +266 -0
  125. package/dist/utils/FeatureFlags.d.ts +7 -0
  126. package/dist/utils/FeatureFlags.js +24 -0
  127. package/dist/utils/LuciqConstants.d.ts +14 -0
  128. package/dist/utils/LuciqConstants.js +15 -0
  129. package/dist/utils/LuciqUtils.d.ts +97 -0
  130. package/dist/utils/LuciqUtils.js +301 -0
  131. package/dist/utils/UnhandledRejectionTracking.d.ts +9 -0
  132. package/dist/utils/UnhandledRejectionTracking.js +99 -0
  133. package/dist/utils/XhrNetworkInterceptor.d.ts +39 -0
  134. package/dist/utils/XhrNetworkInterceptor.js +253 -0
  135. package/dist/utils/config.d.ts +5 -0
  136. package/dist/utils/config.js +6 -0
  137. package/dist/utils/logger.d.ts +10 -0
  138. package/dist/utils/logger.js +39 -0
  139. package/expo.d.ts +1 -0
  140. package/expo.js +1 -0
  141. package/ios/RNLuciq/ArgsRegistry.h +32 -0
  142. package/ios/RNLuciq/ArgsRegistry.m +276 -0
  143. package/ios/RNLuciq/LuciqAPMBridge.h +26 -0
  144. package/ios/RNLuciq/LuciqAPMBridge.m +99 -0
  145. package/ios/RNLuciq/LuciqBugReportingBridge.h +60 -0
  146. package/ios/RNLuciq/LuciqBugReportingBridge.m +241 -0
  147. package/ios/RNLuciq/LuciqCrashReportingBridge.h +18 -0
  148. package/ios/RNLuciq/LuciqCrashReportingBridge.m +68 -0
  149. package/ios/RNLuciq/LuciqFeatureRequestsBridge.h +30 -0
  150. package/ios/RNLuciq/LuciqFeatureRequestsBridge.m +61 -0
  151. package/ios/RNLuciq/LuciqNetworkLoggerBridge.h +44 -0
  152. package/ios/RNLuciq/LuciqNetworkLoggerBridge.m +206 -0
  153. package/ios/RNLuciq/LuciqReactBridge.h +151 -0
  154. package/ios/RNLuciq/LuciqReactBridge.m +548 -0
  155. package/ios/RNLuciq/LuciqRepliesBridge.h +40 -0
  156. package/ios/RNLuciq/LuciqRepliesBridge.m +80 -0
  157. package/ios/RNLuciq/LuciqSessionReplayBridge.h +32 -0
  158. package/ios/RNLuciq/LuciqSessionReplayBridge.m +107 -0
  159. package/ios/RNLuciq/LuciqSurveysBridge.h +46 -0
  160. package/ios/RNLuciq/LuciqSurveysBridge.m +107 -0
  161. package/ios/RNLuciq/RCTConvert+LuciqEnums.h +18 -0
  162. package/ios/RNLuciq/RCTConvert+LuciqEnums.m +127 -0
  163. package/ios/RNLuciq/RNLuciq.h +35 -0
  164. package/ios/RNLuciq/RNLuciq.m +107 -0
  165. package/ios/RNLuciq/Util/LCQAPM+PrivateAPIs.h +15 -0
  166. package/ios/RNLuciq/Util/LCQCrashReporting+CP.h +13 -0
  167. package/ios/RNLuciq/Util/LCQNetworkLogger+CP.h +68 -0
  168. package/ios/RNLuciq/Util/Luciq+CP.h +12 -0
  169. package/ios/RNLuciq.xcodeproj/project.pbxproj +352 -0
  170. package/ios/native.rb +12 -0
  171. package/ios/sourcemaps.sh +120 -0
  172. package/migrate.js +569 -0
  173. package/package.json +92 -0
  174. package/plugin/build/index.js +42078 -0
  175. package/plugin/src/index.ts +5 -0
  176. package/plugin/src/pluginProps.ts +6 -0
  177. package/plugin/src/withLuciq.ts +51 -0
  178. package/plugin/src/withLuciqAndroid.ts +99 -0
  179. package/plugin/src/withLuciqIOS.ts +109 -0
  180. package/plugin/tsconfig.json +7 -0
  181. package/react-native.config.js +16 -0
  182. package/scripts/customize-ios-endpoints.sh +28 -0
  183. package/scripts/dream-11-delete-unused-features.sh +62 -0
  184. package/scripts/find-token.js +58 -0
  185. package/scripts/find-token.sh +70 -0
  186. package/scripts/notify-github.sh +15 -0
  187. package/scripts/replace.js +58 -0
  188. package/scripts/snapshot-comment.md +15 -0
  189. package/scripts/snapshot-version.sh +11 -0
  190. package/src/index.ts +40 -0
  191. package/src/models/FeatureFlag.ts +12 -0
  192. package/src/models/LuciqConfig.ts +48 -0
  193. package/src/models/NonFatalOptions.ts +16 -0
  194. package/src/models/OverAirUpdate.ts +14 -0
  195. package/src/models/Report.ts +124 -0
  196. package/src/models/ReproConfig.ts +31 -0
  197. package/src/models/SessionMetadata.ts +57 -0
  198. package/src/models/ThemeConfig.ts +34 -0
  199. package/src/models/W3cExternalTraceAttributes.ts +22 -0
  200. package/src/modules/APM.ts +117 -0
  201. package/src/modules/BugReporting.ts +254 -0
  202. package/src/modules/CrashReporting.ts +54 -0
  203. package/src/modules/FeatureRequests.ts +32 -0
  204. package/src/modules/Luciq.ts +934 -0
  205. package/src/modules/NetworkLogger.ts +270 -0
  206. package/src/modules/Replies.ts +137 -0
  207. package/src/modules/SessionReplay.ts +111 -0
  208. package/src/modules/Surveys.ts +118 -0
  209. package/src/native/NativeAPM.ts +51 -0
  210. package/src/native/NativeBugReporting.ts +70 -0
  211. package/src/native/NativeConstants.ts +215 -0
  212. package/src/native/NativeCrashReporting.ts +29 -0
  213. package/src/native/NativeFeatureRequests.ts +12 -0
  214. package/src/native/NativeLuciq.ts +179 -0
  215. package/src/native/NativeNetworkLogger.ts +42 -0
  216. package/src/native/NativePackage.ts +25 -0
  217. package/src/native/NativeReplies.ts +34 -0
  218. package/src/native/NativeSessionReplay.ts +21 -0
  219. package/src/native/NativeSurveys.ts +34 -0
  220. package/src/promise.d.ts +11 -0
  221. package/src/utils/AppStatesHandler.ts +19 -0
  222. package/src/utils/Enums.ts +266 -0
  223. package/src/utils/FeatureFlags.ts +33 -0
  224. package/src/utils/LuciqConstants.ts +24 -0
  225. package/src/utils/LuciqUtils.ts +417 -0
  226. package/src/utils/UnhandledRejectionTracking.ts +118 -0
  227. package/src/utils/XhrNetworkInterceptor.ts +333 -0
  228. package/src/utils/config.ts +7 -0
  229. package/src/utils/logger.ts +54 -0
  230. package/tsconfig.json +32 -0
  231. package/tsconfig.test.json +4 -0
  232. package/tsconfig.upload.json +10 -0
  233. package/upload/index.d.ts +4 -0
  234. package/upload/index.js +17314 -0
  235. package/upload/migrate.d.ts +14 -0
  236. package/upload/package.json +5 -0
  237. package/upload/uploadEasUpdatesSourcemaps.d.ts +21 -0
  238. package/upload/uploadSoFiles.d.ts +21 -0
  239. 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
+ }