@luciq/react-native 19.6.0 → 19.7.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.
@@ -4,7 +4,7 @@ package ai.luciq.reactlibrary;
4
4
  import static ai.luciq.apm.configuration.cp.APMFeature.APM_NETWORK_PLUGIN_INSTALLED;
5
5
  import static ai.luciq.apm.configuration.cp.APMFeature.CP_NATIVE_INTERCEPTION_ENABLED;
6
6
 
7
- import android.util.Log;
7
+ import static ai.luciq.reactlibrary.Constants.NET_TAG;
8
8
 
9
9
  import androidx.annotation.NonNull;
10
10
 
@@ -20,6 +20,7 @@ import ai.luciq.apm.InternalAPM;
20
20
  import ai.luciq.apm.sanitization.OnCompleteCallback;
21
21
  import ai.luciq.library.logging.listeners.networklogs.NetworkLogSnapshot;
22
22
  import ai.luciq.reactlibrary.utils.EventEmitterModule;
23
+ import ai.luciq.reactlibrary.utils.LuciqRNLogger;
23
24
  import ai.luciq.reactlibrary.utils.MainThreadHandler;
24
25
 
25
26
  import org.json.JSONException;
@@ -57,7 +58,9 @@ public class RNLuciqNetworkLoggerModule extends EventEmitterModule {
57
58
  }
58
59
 
59
60
  private boolean getFlagValue(String key) {
60
- return InternalAPM._isFeatureEnabledCP(key, "");
61
+ boolean value = InternalAPM._isFeatureEnabledCP(key, "");
62
+ LuciqRNLogger.d(NET_TAG, "[getFlagValue] key=" + key + ", value=" + value);
63
+ return value;
61
64
  }
62
65
 
63
66
  private WritableMap convertFromMapToWritableMap(Map<String, Object> map) {
@@ -86,14 +89,18 @@ public class RNLuciqNetworkLoggerModule extends EventEmitterModule {
86
89
  */
87
90
  @ReactMethod
88
91
  public void isNativeInterceptionEnabled(Promise promise) {
92
+ LuciqRNLogger.d(NET_TAG, "[isNativeInterceptionEnabled] Querying CP_NATIVE_INTERCEPTION_ENABLED flag");
89
93
  MainThreadHandler.runOnMainThread(new Runnable() {
90
94
  @Override
91
95
  public void run() {
92
96
  try {
93
- promise.resolve(getFlagValue(CP_NATIVE_INTERCEPTION_ENABLED));
97
+ boolean enabled = getFlagValue(CP_NATIVE_INTERCEPTION_ENABLED);
98
+ LuciqRNLogger.d(NET_TAG, "[isNativeInterceptionEnabled] Result=" + enabled);
99
+ promise.resolve(enabled);
94
100
  } catch (Exception e) {
101
+ LuciqRNLogger.e(NET_TAG, "[isNativeInterceptionEnabled] Error — falling back to false (JS interceptor)", e);
95
102
  e.printStackTrace();
96
- promise.resolve(false); // Will rollback to JS interceptor
103
+ promise.resolve(false);
97
104
  }
98
105
 
99
106
  }
@@ -107,14 +114,18 @@ public class RNLuciqNetworkLoggerModule extends EventEmitterModule {
107
114
  */
108
115
  @ReactMethod
109
116
  public void hasAPMNetworkPlugin(Promise promise) {
117
+ LuciqRNLogger.d(NET_TAG, "[hasAPMNetworkPlugin] Querying APM_NETWORK_PLUGIN_INSTALLED flag");
110
118
  MainThreadHandler.runOnMainThread(new Runnable() {
111
119
  @Override
112
120
  public void run() {
113
121
  try {
114
- promise.resolve(getFlagValue(APM_NETWORK_PLUGIN_INSTALLED));
122
+ boolean hasPlugin = getFlagValue(APM_NETWORK_PLUGIN_INSTALLED);
123
+ LuciqRNLogger.d(NET_TAG, "[hasAPMNetworkPlugin] Result=" + hasPlugin);
124
+ promise.resolve(hasPlugin);
115
125
  } catch (Exception e) {
126
+ LuciqRNLogger.e(NET_TAG, "[hasAPMNetworkPlugin] Error — falling back to false", e);
116
127
  e.printStackTrace();
117
- promise.resolve(false); // Will rollback to JS interceptor
128
+ promise.resolve(false);
118
129
  }
119
130
 
120
131
  }
@@ -124,12 +135,14 @@ public class RNLuciqNetworkLoggerModule extends EventEmitterModule {
124
135
 
125
136
  @ReactMethod
126
137
  public void registerNetworkLogsListener() {
138
+ LuciqRNLogger.d(NET_TAG, "[registerNetworkLogsListener] Registering network log sanitizer");
127
139
  MainThreadHandler.runOnMainThread(new Runnable() {
128
140
  @Override
129
141
  public void run() {
130
142
  InternalAPM._registerNetworkLogSanitizer((networkLogSnapshot, onCompleteCallback) -> {
131
143
  final String id = String.valueOf(onCompleteCallback.hashCode());
132
144
  callbackMap.put(id, onCompleteCallback);
145
+ LuciqRNLogger.d(NET_TAG, "[NetworkLogSanitizer] Received snapshot — id=" + id + ", url=" + networkLogSnapshot.getUrl() + ", responseCode=" + networkLogSnapshot.getResponseCode() + ", callbackMapSize=" + callbackMap.size());
133
146
 
134
147
  WritableMap networkSnapshotParams = Arguments.createMap();
135
148
  networkSnapshotParams.putString("id", id);
@@ -147,6 +160,7 @@ public class RNLuciqNetworkLoggerModule extends EventEmitterModule {
147
160
  }
148
161
 
149
162
  sendEvent(Constants.LCQ_NETWORK_LOGGER_HANDLER, networkSnapshotParams);
163
+ LuciqRNLogger.d(NET_TAG, "[NetworkLogSanitizer] Sent event to JS: " + Constants.LCQ_NETWORK_LOGGER_HANDLER + " for " + networkLogSnapshot.getUrl());
150
164
  });
151
165
  }
152
166
  });
@@ -154,10 +168,12 @@ public class RNLuciqNetworkLoggerModule extends EventEmitterModule {
154
168
 
155
169
  @ReactMethod
156
170
  public void resetNetworkLogsListener() {
171
+ LuciqRNLogger.d(NET_TAG, "[resetNetworkLogsListener] Clearing network log sanitizer, callbackMapSize=" + callbackMap.size());
157
172
  MainThreadHandler.runOnMainThread(new Runnable() {
158
173
  @Override
159
174
  public void run() {
160
175
  InternalAPM._registerNetworkLogSanitizer(null);
176
+ LuciqRNLogger.d(NET_TAG, "[resetNetworkLogsListener] Sanitizer cleared");
161
177
  }
162
178
  });
163
179
  }
@@ -172,24 +188,28 @@ public class RNLuciqNetworkLoggerModule extends EventEmitterModule {
172
188
  ReadableMap requestHeaders,
173
189
  ReadableMap responseHeaders
174
190
  ) {
191
+ LuciqRNLogger.d(NET_TAG, "[updateNetworkLogSnapshot] callbackID=" + callbackID + ", url=" + url + ", responseCode=" + responseCode + ", callbackMapSize=" + callbackMap.size());
175
192
  try {
176
- // Convert ReadableMap to a Java Map for easier handling
177
193
  Map<String, Object> requestHeadersMap = convertReadableMapToMap(requestHeaders);
178
194
  Map<String, Object> responseHeadersMap = convertReadableMapToMap(responseHeaders);
179
195
 
180
196
  NetworkLogSnapshot modifiedSnapshot = null;
181
197
  if (!url.isEmpty()) {
182
198
  modifiedSnapshot = new NetworkLogSnapshot(url, requestHeadersMap, requestBody, responseHeadersMap, responseBody, responseCode);
199
+ } else {
200
+ LuciqRNLogger.d(NET_TAG, "[updateNetworkLogSnapshot] Empty URL — snapshot will be null (request filtered/removed)");
183
201
  }
184
202
 
185
203
  final OnCompleteCallback<NetworkLogSnapshot> callback = callbackMap.get(callbackID);
186
204
  if (callback != null) {
187
205
  callback.onComplete(modifiedSnapshot);
188
206
  callbackMap.remove(callbackID);
207
+ LuciqRNLogger.d(NET_TAG, "[updateNetworkLogSnapshot] Callback invoked and removed for " + callbackID + ", remaining=" + callbackMap.size());
208
+ } else {
209
+ LuciqRNLogger.e(NET_TAG, "[updateNetworkLogSnapshot] No callback found for callbackID=" + callbackID + " — possible leak or duplicate call, mapKeys=" + callbackMap.keySet());
189
210
  }
190
211
  } 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.");
212
+ LuciqRNLogger.e(NET_TAG, "[updateNetworkLogSnapshot] Exception processing snapshot: " + e.getMessage() + " for callbackID=" + callbackID, e);
193
213
  }
194
214
  }
195
215
  }