@luciq/react-native 19.4.0-44237-SNAPSHOT → 19.4.0-47504-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/README.md +0 -118
- package/RNLuciq.podspec +2 -6
- package/android/build.gradle +0 -25
- package/android/proguard-rules.txt +1 -1
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqAPMModule.java +12 -3
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqBugReportingModule.java +24 -28
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqCrashReportingModule.java +7 -18
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqFeatureRequestsModule.java +2 -1
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqNetworkLoggerModule.java +56 -29
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqReactnativeModule.java +47 -78
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqRepliesModule.java +16 -4
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqSessionReplayModule.java +16 -5
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqSurveysModule.java +15 -7
- package/android/src/main/java/ai/luciq/reactlibrary/utils/EventEmitterModule.java +7 -0
- package/dist/modules/BugReporting.js +3 -3
- package/dist/modules/Luciq.js +3 -2
- package/dist/modules/NetworkLogger.d.ts +0 -5
- package/dist/modules/NetworkLogger.js +9 -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 +3 -2
- package/dist/native/NativePackage.js +2 -25
- package/dist/native/NativeReplies.d.ts +1 -1
- package/dist/native/NativeSurveys.d.ts +2 -2
- package/dist/utils/Enums.js +1 -3
- package/dist/utils/FeatureFlags.d.ts +6 -0
- package/dist/utils/FeatureFlags.js +35 -0
- package/dist/utils/LuciqUtils.d.ts +1 -1
- package/dist/utils/LuciqUtils.js +9 -0
- package/dist/utils/XhrNetworkInterceptor.js +85 -53
- package/ios/RNLuciq/LuciqAPMBridge.h +5 -5
- package/ios/RNLuciq/{LuciqAPMBridge.mm → LuciqAPMBridge.m} +39 -48
- package/ios/RNLuciq/LuciqBugReportingBridge.h +6 -6
- package/ios/RNLuciq/LuciqBugReportingBridge.m +249 -0
- package/ios/RNLuciq/LuciqCrashReportingBridge.h +5 -16
- package/ios/RNLuciq/LuciqCrashReportingBridge.m +68 -0
- package/ios/RNLuciq/LuciqFeatureRequestsBridge.h +1 -1
- package/ios/RNLuciq/{LuciqFeatureRequestsBridge.mm → LuciqFeatureRequestsBridge.m} +16 -21
- package/ios/RNLuciq/LuciqNetworkLoggerBridge.h +30 -1
- package/ios/RNLuciq/{LuciqNetworkLoggerBridge.mm → LuciqNetworkLoggerBridge.m} +77 -46
- package/ios/RNLuciq/LuciqReactBridge.h +13 -13
- package/ios/RNLuciq/{LuciqReactBridge.mm → LuciqReactBridge.m} +34 -83
- package/ios/RNLuciq/LuciqRepliesBridge.h +3 -3
- package/ios/RNLuciq/LuciqRepliesBridge.m +80 -0
- package/ios/RNLuciq/LuciqSessionReplayBridge.h +5 -5
- package/ios/RNLuciq/{LuciqSessionReplayBridge.mm → LuciqSessionReplayBridge.m} +25 -35
- package/ios/RNLuciq/LuciqSurveysBridge.h +5 -5
- package/ios/RNLuciq/{LuciqSurveysBridge.mm → LuciqSurveysBridge.m} +35 -34
- package/package.json +1 -9
- package/scripts/get-github-app-token.sh +70 -0
- package/scripts/notify-github.sh +17 -8
- package/src/modules/BugReporting.ts +3 -3
- package/src/modules/Luciq.ts +4 -2
- package/src/modules/NetworkLogger.ts +26 -1
- package/src/modules/Replies.ts +1 -1
- package/src/modules/Surveys.ts +2 -2
- package/src/native/NativeBugReporting.ts +6 -3
- package/src/native/NativeCrashReporting.ts +2 -2
- package/src/native/NativeLuciq.ts +3 -2
- package/src/native/NativePackage.ts +2 -52
- package/src/native/NativeReplies.ts +1 -1
- package/src/native/NativeSurveys.ts +2 -2
- package/src/utils/Enums.ts +1 -4
- package/src/utils/FeatureFlags.ts +44 -0
- package/src/utils/LuciqUtils.ts +21 -1
- package/src/utils/XhrNetworkInterceptor.ts +128 -55
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqAPMBaseSpec.java +0 -9
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqBaseSpec.java +0 -33
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqBugReportingBaseSpec.java +0 -33
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqCrashReportingBaseSpec.java +0 -9
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqFeatureRequestsBaseSpec.java +0 -9
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqNetworkLoggerBaseSpec.java +0 -33
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqRepliesBaseSpec.java +0 -33
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqSessionReplayBaseSpec.java +0 -33
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqSurveysBaseSpec.java +0 -33
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqAPMBaseSpec.java +0 -11
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqBaseSpec.java +0 -22
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqBugReportingBaseSpec.java +0 -22
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqCrashReportingBaseSpec.java +0 -10
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqFeatureRequestsBaseSpec.java +0 -10
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqNetworkLoggerBaseSpec.java +0 -22
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqRepliesBaseSpec.java +0 -22
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqSessionReplayBaseSpec.java +0 -22
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqSurveysBaseSpec.java +0 -22
- package/dist/native/specs/NativeAPM.d.ts +0 -21
- package/dist/native/specs/NativeAPM.js +0 -2
- package/dist/native/specs/NativeBugReporting.d.ts +0 -29
- package/dist/native/specs/NativeBugReporting.js +0 -2
- package/dist/native/specs/NativeCrashReporting.d.ts +0 -12
- package/dist/native/specs/NativeCrashReporting.js +0 -2
- package/dist/native/specs/NativeFeatureRequests.d.ts +0 -8
- package/dist/native/specs/NativeFeatureRequests.js +0 -2
- package/dist/native/specs/NativeLuciq.d.ts +0 -80
- package/dist/native/specs/NativeLuciq.js +0 -2
- package/dist/native/specs/NativeNetworkLogger.d.ts +0 -16
- package/dist/native/specs/NativeNetworkLogger.js +0 -2
- package/dist/native/specs/NativeReplies.d.ts +0 -21
- package/dist/native/specs/NativeReplies.js +0 -2
- package/dist/native/specs/NativeSessionReplay.d.ts +0 -17
- package/dist/native/specs/NativeSessionReplay.js +0 -2
- package/dist/native/specs/NativeSurveys.d.ts +0 -18
- package/dist/native/specs/NativeSurveys.js +0 -2
- package/ios/RNLuciq/LuciqBugReportingBridge.mm +0 -234
- package/ios/RNLuciq/LuciqCrashReportingBridge.mm +0 -91
- package/ios/RNLuciq/LuciqRepliesBridge.mm +0 -86
- package/src/native/specs/NativeAPM.ts +0 -47
- package/src/native/specs/NativeBugReporting.ts +0 -53
- package/src/native/specs/NativeCrashReporting.ts +0 -23
- package/src/native/specs/NativeFeatureRequests.ts +0 -10
- package/src/native/specs/NativeLuciq.ts +0 -137
- package/src/native/specs/NativeNetworkLogger.ts +0 -31
- package/src/native/specs/NativeReplies.ts +0 -27
- package/src/native/specs/NativeSessionReplay.ts +0 -20
- package/src/native/specs/NativeSurveys.ts +0 -23
|
@@ -83,9 +83,10 @@ import javax.annotation.Nullable;
|
|
|
83
83
|
/**
|
|
84
84
|
* The type Rn luciq reactnative module.
|
|
85
85
|
*/
|
|
86
|
-
public class RNLuciqReactnativeModule extends
|
|
86
|
+
public class RNLuciqReactnativeModule extends EventEmitterModule {
|
|
87
87
|
|
|
88
88
|
private static final String TAG = "Luciq-RN-Core";
|
|
89
|
+
private static final String NET_TAG = "LCQ-RN-NET";
|
|
89
90
|
|
|
90
91
|
private LuciqCustomTextPlaceHolder placeHolders;
|
|
91
92
|
private static Report currentReport;
|
|
@@ -111,6 +112,16 @@ public class RNLuciqReactnativeModule extends RNLuciqBaseSpec {
|
|
|
111
112
|
}
|
|
112
113
|
|
|
113
114
|
|
|
115
|
+
@ReactMethod
|
|
116
|
+
public void addListener(String event) {
|
|
117
|
+
super.addListener(event);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
@ReactMethod
|
|
121
|
+
public void removeListeners(Integer count) {
|
|
122
|
+
super.removeListeners(count);
|
|
123
|
+
}
|
|
124
|
+
|
|
114
125
|
/**
|
|
115
126
|
* Enables or disables Luciq functionality.
|
|
116
127
|
* @param isEnabled A boolean to enable/disable Luciq.
|
|
@@ -153,6 +164,7 @@ public class RNLuciqReactnativeModule extends RNLuciqBaseSpec {
|
|
|
153
164
|
|
|
154
165
|
|
|
155
166
|
) {
|
|
167
|
+
Log.d(NET_TAG, "[init] Called — logLevel=" + logLevel + ", useNativeNetworkInterception=" + useNativeNetworkInterception + ", codePushVersion=" + codePushVersion + ", appVariant=" + appVariant);
|
|
156
168
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
157
169
|
@Override
|
|
158
170
|
public void run() {
|
|
@@ -194,6 +206,7 @@ public class RNLuciqReactnativeModule extends RNLuciqBaseSpec {
|
|
|
194
206
|
}
|
|
195
207
|
|
|
196
208
|
builder.build();
|
|
209
|
+
Log.d(NET_TAG, "[init] SDK build complete");
|
|
197
210
|
}
|
|
198
211
|
});
|
|
199
212
|
}
|
|
@@ -693,7 +706,7 @@ public class RNLuciqReactnativeModule extends RNLuciqBaseSpec {
|
|
|
693
706
|
* report.
|
|
694
707
|
*/
|
|
695
708
|
@ReactMethod
|
|
696
|
-
public void setPreSendingHandler() {
|
|
709
|
+
public void setPreSendingHandler(final Callback preSendingHandler) {
|
|
697
710
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
698
711
|
@Override
|
|
699
712
|
public void run() {
|
|
@@ -959,6 +972,7 @@ public class RNLuciqReactnativeModule extends RNLuciqBaseSpec {
|
|
|
959
972
|
final String requestHeaders,
|
|
960
973
|
final String responseHeaders,
|
|
961
974
|
final double duration) {
|
|
975
|
+
Log.d(NET_TAG, "[networkLogAndroid-Core] Received from JS: " + method + " " + url + ", status=" + (int) responseCode + ", duration=" + (long) duration + "ms, reqBodyLen=" + (requestBody != null ? requestBody.length() : 0) + ", resBodyLen=" + (responseBody != null ? responseBody.length() : 0));
|
|
962
976
|
try {
|
|
963
977
|
final String date = String.valueOf(System.currentTimeMillis());
|
|
964
978
|
|
|
@@ -975,11 +989,14 @@ public class RNLuciqReactnativeModule extends RNLuciqBaseSpec {
|
|
|
975
989
|
networkLog.setRequestHeaders(requestHeaders);
|
|
976
990
|
networkLog.setResponseHeaders(responseHeaders);
|
|
977
991
|
} catch (OutOfMemoryError | Exception exception) {
|
|
992
|
+
Log.e(NET_TAG, "[networkLogAndroid-Core] OOM/Error setting log contents: " + exception.getMessage() + " for " + method + " " + url);
|
|
978
993
|
Log.d(TAG, "Error: " + exception.getMessage() + "while trying to set network log contents (request body, response body, request headers, and response headers).");
|
|
979
994
|
}
|
|
980
995
|
|
|
981
996
|
networkLog.insert();
|
|
997
|
+
Log.d(NET_TAG, "[networkLogAndroid-Core] Successfully inserted NetworkLog: " + method + " " + url);
|
|
982
998
|
} catch (OutOfMemoryError | Exception exception) {
|
|
999
|
+
Log.e(NET_TAG, "[networkLogAndroid-Core] OOM/Error inserting network log: " + exception.getMessage() + " for " + method + " " + url);
|
|
983
1000
|
Log.d(TAG, "Error: " + exception.getMessage() + "while trying to insert a network log");
|
|
984
1001
|
}
|
|
985
1002
|
}
|
|
@@ -1007,14 +1024,12 @@ public class RNLuciqReactnativeModule extends RNLuciqBaseSpec {
|
|
|
1007
1024
|
|
|
1008
1025
|
|
|
1009
1026
|
@ReactMethod
|
|
1010
|
-
public void addPrivateView(
|
|
1011
|
-
if (reactTag == null) return;
|
|
1012
|
-
final int tag = reactTag.intValue();
|
|
1027
|
+
public void addPrivateView(final int reactTag) {
|
|
1013
1028
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
1014
1029
|
@Override
|
|
1015
1030
|
public void run() {
|
|
1016
1031
|
try {
|
|
1017
|
-
final View view = resolveReactView(
|
|
1032
|
+
final View view = resolveReactView(reactTag);
|
|
1018
1033
|
|
|
1019
1034
|
if(view !=null){
|
|
1020
1035
|
Luciq.addPrivateViews(view);
|
|
@@ -1027,14 +1042,12 @@ public class RNLuciqReactnativeModule extends RNLuciqBaseSpec {
|
|
|
1027
1042
|
}
|
|
1028
1043
|
|
|
1029
1044
|
@ReactMethod
|
|
1030
|
-
public void removePrivateView(
|
|
1031
|
-
if (reactTag == null) return;
|
|
1032
|
-
final int tag = reactTag.intValue();
|
|
1045
|
+
public void removePrivateView(final int reactTag) {
|
|
1033
1046
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
1034
1047
|
@Override
|
|
1035
1048
|
public void run() {
|
|
1036
1049
|
try {
|
|
1037
|
-
final View view = resolveReactView(
|
|
1050
|
+
final View view = resolveReactView(reactTag);
|
|
1038
1051
|
if(view !=null){
|
|
1039
1052
|
|
|
1040
1053
|
Luciq.removePrivateViews(view);
|
|
@@ -1164,7 +1177,7 @@ public class RNLuciqReactnativeModule extends RNLuciqBaseSpec {
|
|
|
1164
1177
|
*/
|
|
1165
1178
|
@ReactMethod
|
|
1166
1179
|
public void registerFeatureFlagsChangeListener() {
|
|
1167
|
-
|
|
1180
|
+
Log.d(NET_TAG, "[registerFeatureFlagsChangeListener] Registering native feature flags listener");
|
|
1168
1181
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
1169
1182
|
@Override
|
|
1170
1183
|
public void run() {
|
|
@@ -1172,6 +1185,7 @@ public class RNLuciqReactnativeModule extends RNLuciqBaseSpec {
|
|
|
1172
1185
|
InternalCore.INSTANCE._setFeaturesStateListener(new FeaturesStateListener() {
|
|
1173
1186
|
@Override
|
|
1174
1187
|
public void invoke(@NonNull CoreFeaturesState featuresState) {
|
|
1188
|
+
Log.d(NET_TAG, "[FeatureFlagsListener] Received update — W3CTraceID=" + featuresState.isW3CExternalTraceIdEnabled() + ", generatedHeader=" + featuresState.isAttachingGeneratedHeaderEnabled() + ", caughtHeader=" + featuresState.isAttachingCapturedHeaderEnabled() + ", networkBodyLimit=" + featuresState.getNetworkLogCharLimit());
|
|
1175
1189
|
WritableMap params = Arguments.createMap();
|
|
1176
1190
|
params.putBoolean("isW3ExternalTraceIDEnabled", featuresState.isW3CExternalTraceIdEnabled());
|
|
1177
1191
|
params.putBoolean("isW3ExternalGeneratedHeaderEnabled", featuresState.isAttachingGeneratedHeaderEnabled());
|
|
@@ -1179,9 +1193,11 @@ public class RNLuciqReactnativeModule extends RNLuciqBaseSpec {
|
|
|
1179
1193
|
params.putInt("networkBodyLimit",featuresState.getNetworkLogCharLimit());
|
|
1180
1194
|
|
|
1181
1195
|
sendEvent(Constants.LCQ_ON_FEATURE_FLAGS_UPDATE_RECEIVED_CALLBACK, params);
|
|
1196
|
+
Log.d(NET_TAG, "[FeatureFlagsListener] Sent event to JS: " + Constants.LCQ_ON_FEATURE_FLAGS_UPDATE_RECEIVED_CALLBACK);
|
|
1182
1197
|
}
|
|
1183
1198
|
});
|
|
1184
1199
|
} catch (Exception e) {
|
|
1200
|
+
Log.e(NET_TAG, "[registerFeatureFlagsChangeListener] Failed to register listener", e);
|
|
1185
1201
|
e.printStackTrace();
|
|
1186
1202
|
}
|
|
1187
1203
|
|
|
@@ -1196,13 +1212,16 @@ public class RNLuciqReactnativeModule extends RNLuciqBaseSpec {
|
|
|
1196
1212
|
*/
|
|
1197
1213
|
@ReactMethod
|
|
1198
1214
|
public void isW3ExternalTraceIDEnabled(Promise promise) {
|
|
1199
|
-
|
|
1215
|
+
Log.d(NET_TAG, "[isW3ExternalTraceIDEnabled] Querying native flag");
|
|
1200
1216
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
1201
1217
|
@Override
|
|
1202
1218
|
public void run() {
|
|
1203
1219
|
try {
|
|
1204
|
-
|
|
1220
|
+
boolean enabled = InternalCore.INSTANCE._isFeatureEnabled(CoreFeature.W3C_EXTERNAL_TRACE_ID);
|
|
1221
|
+
Log.d(NET_TAG, "[isW3ExternalTraceIDEnabled] Result=" + enabled);
|
|
1222
|
+
promise.resolve(enabled);
|
|
1205
1223
|
} catch (Exception e) {
|
|
1224
|
+
Log.e(NET_TAG, "[isW3ExternalTraceIDEnabled] Error querying flag", e);
|
|
1206
1225
|
e.printStackTrace();
|
|
1207
1226
|
promise.resolve(false);
|
|
1208
1227
|
}
|
|
@@ -1218,13 +1237,16 @@ public class RNLuciqReactnativeModule extends RNLuciqBaseSpec {
|
|
|
1218
1237
|
*/
|
|
1219
1238
|
@ReactMethod
|
|
1220
1239
|
public void isW3ExternalGeneratedHeaderEnabled(Promise promise) {
|
|
1221
|
-
|
|
1240
|
+
Log.d(NET_TAG, "[isW3ExternalGeneratedHeaderEnabled] Querying native flag");
|
|
1222
1241
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
1223
1242
|
@Override
|
|
1224
1243
|
public void run() {
|
|
1225
1244
|
try {
|
|
1226
|
-
|
|
1245
|
+
boolean enabled = InternalCore.INSTANCE._isFeatureEnabled(CoreFeature.W3C_ATTACHING_GENERATED_HEADER);
|
|
1246
|
+
Log.d(NET_TAG, "[isW3ExternalGeneratedHeaderEnabled] Result=" + enabled);
|
|
1247
|
+
promise.resolve(enabled);
|
|
1227
1248
|
} catch (Exception e) {
|
|
1249
|
+
Log.e(NET_TAG, "[isW3ExternalGeneratedHeaderEnabled] Error querying flag", e);
|
|
1228
1250
|
e.printStackTrace();
|
|
1229
1251
|
promise.resolve(false);
|
|
1230
1252
|
}
|
|
@@ -1239,13 +1261,16 @@ public class RNLuciqReactnativeModule extends RNLuciqBaseSpec {
|
|
|
1239
1261
|
*/
|
|
1240
1262
|
@ReactMethod
|
|
1241
1263
|
public void isW3CaughtHeaderEnabled(Promise promise) {
|
|
1242
|
-
|
|
1264
|
+
Log.d(NET_TAG, "[isW3CaughtHeaderEnabled] Querying native flag");
|
|
1243
1265
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
1244
1266
|
@Override
|
|
1245
1267
|
public void run() {
|
|
1246
1268
|
try {
|
|
1247
|
-
|
|
1269
|
+
boolean enabled = InternalCore.INSTANCE._isFeatureEnabled(CoreFeature.W3C_ATTACHING_CAPTURED_HEADER);
|
|
1270
|
+
Log.d(NET_TAG, "[isW3CaughtHeaderEnabled] Result=" + enabled);
|
|
1271
|
+
promise.resolve(enabled);
|
|
1248
1272
|
} catch (Exception e) {
|
|
1273
|
+
Log.e(NET_TAG, "[isW3CaughtHeaderEnabled] Error querying flag", e);
|
|
1249
1274
|
e.printStackTrace();
|
|
1250
1275
|
promise.resolve(false);
|
|
1251
1276
|
}
|
|
@@ -1275,15 +1300,6 @@ public class RNLuciqReactnativeModule extends RNLuciqBaseSpec {
|
|
|
1275
1300
|
return constants;
|
|
1276
1301
|
}
|
|
1277
1302
|
|
|
1278
|
-
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
1279
|
-
public WritableMap getAllConstants() {
|
|
1280
|
-
final WritableMap map = Arguments.createMap();
|
|
1281
|
-
for (Map.Entry<String, Object> entry : getConstants().entrySet()) {
|
|
1282
|
-
map.putString(entry.getKey(), String.valueOf(entry.getValue()));
|
|
1283
|
-
}
|
|
1284
|
-
return map;
|
|
1285
|
-
}
|
|
1286
|
-
|
|
1287
1303
|
|
|
1288
1304
|
@ReactMethod
|
|
1289
1305
|
public void setOnFeaturesUpdatedListener() {
|
|
@@ -1348,13 +1364,16 @@ public class RNLuciqReactnativeModule extends RNLuciqBaseSpec {
|
|
|
1348
1364
|
*/
|
|
1349
1365
|
@ReactMethod
|
|
1350
1366
|
public void getNetworkBodyMaxSize(Promise promise) {
|
|
1351
|
-
|
|
1367
|
+
Log.d(NET_TAG, "[getNetworkBodyMaxSize] Querying network body size limit");
|
|
1352
1368
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
1353
1369
|
@Override
|
|
1354
1370
|
public void run() {
|
|
1355
1371
|
try {
|
|
1356
|
-
|
|
1372
|
+
Object limit = InternalCore.INSTANCE.get_networkLogCharLimit();
|
|
1373
|
+
Log.d(NET_TAG, "[getNetworkBodyMaxSize] Result=" + limit);
|
|
1374
|
+
promise.resolve(limit);
|
|
1357
1375
|
} catch (Exception e) {
|
|
1376
|
+
Log.e(NET_TAG, "[getNetworkBodyMaxSize] Error querying limit", e);
|
|
1358
1377
|
e.printStackTrace();
|
|
1359
1378
|
promise.resolve(false);
|
|
1360
1379
|
}
|
|
@@ -1674,54 +1693,4 @@ private String getFileName(String path) {
|
|
|
1674
1693
|
}
|
|
1675
1694
|
});
|
|
1676
1695
|
}
|
|
1677
|
-
|
|
1678
|
-
@ReactMethod
|
|
1679
|
-
public void setLCQLogPrintsToConsole(boolean printsToConsole) {
|
|
1680
|
-
}
|
|
1681
|
-
|
|
1682
|
-
@ReactMethod
|
|
1683
|
-
public void setPrimaryColor(@Nullable Double color) {
|
|
1684
|
-
}
|
|
1685
|
-
|
|
1686
|
-
@ReactMethod
|
|
1687
|
-
public void networkLogIOS(String url,
|
|
1688
|
-
String method,
|
|
1689
|
-
@Nullable String requestBody,
|
|
1690
|
-
double requestBodySize,
|
|
1691
|
-
@Nullable String responseBody,
|
|
1692
|
-
double responseBodySize,
|
|
1693
|
-
double responseCode,
|
|
1694
|
-
ReadableMap requestHeaders,
|
|
1695
|
-
ReadableMap responseHeaders,
|
|
1696
|
-
String contentType,
|
|
1697
|
-
String errorDomain,
|
|
1698
|
-
double errorCode,
|
|
1699
|
-
double startTime,
|
|
1700
|
-
double duration,
|
|
1701
|
-
@Nullable String gqlQueryName,
|
|
1702
|
-
@Nullable String serverErrorMessage,
|
|
1703
|
-
ReadableMap w3cExternalTraceAttributes) {
|
|
1704
|
-
}
|
|
1705
|
-
|
|
1706
|
-
@ReactMethod
|
|
1707
|
-
public void setNetworkLoggingEnabled(boolean isEnabled) {
|
|
1708
|
-
}
|
|
1709
|
-
|
|
1710
|
-
@ReactMethod
|
|
1711
|
-
public void setTrackUserSteps(final boolean isEnabled) {
|
|
1712
|
-
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
1713
|
-
@Override
|
|
1714
|
-
public void run() {
|
|
1715
|
-
try {
|
|
1716
|
-
if (isEnabled) {
|
|
1717
|
-
Luciq.setTrackingUserStepsState(Feature.State.ENABLED);
|
|
1718
|
-
} else {
|
|
1719
|
-
Luciq.setTrackingUserStepsState(Feature.State.DISABLED);
|
|
1720
|
-
}
|
|
1721
|
-
} catch (Exception e) {
|
|
1722
|
-
e.printStackTrace();
|
|
1723
|
-
}
|
|
1724
|
-
}
|
|
1725
|
-
});
|
|
1726
|
-
}
|
|
1727
1696
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
package ai.luciq.reactlibrary;
|
|
2
2
|
|
|
3
|
+
import com.facebook.react.bridge.Callback;
|
|
3
4
|
import com.facebook.react.bridge.Promise;
|
|
4
5
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
5
6
|
import com.facebook.react.bridge.ReactMethod;
|
|
@@ -8,13 +9,14 @@ import com.facebook.react.bridge.ReadableType;
|
|
|
8
9
|
import com.facebook.react.bridge.ReadableMapKeySetIterator;
|
|
9
10
|
import ai.luciq.chat.Replies;
|
|
10
11
|
import ai.luciq.library.Feature;
|
|
12
|
+
import ai.luciq.reactlibrary.utils.EventEmitterModule;
|
|
11
13
|
import ai.luciq.reactlibrary.utils.MainThreadHandler;
|
|
12
14
|
|
|
13
15
|
import javax.annotation.Nonnull;
|
|
14
16
|
import java.util.HashMap;
|
|
15
17
|
import java.util.Map;
|
|
16
18
|
|
|
17
|
-
public class RNLuciqRepliesModule extends
|
|
19
|
+
public class RNLuciqRepliesModule extends EventEmitterModule {
|
|
18
20
|
|
|
19
21
|
public RNLuciqRepliesModule(ReactApplicationContext reactApplicationContext) {
|
|
20
22
|
super(reactApplicationContext);
|
|
@@ -26,6 +28,16 @@ public class RNLuciqRepliesModule extends RNLuciqRepliesBaseSpec {
|
|
|
26
28
|
return "LCQReplies";
|
|
27
29
|
}
|
|
28
30
|
|
|
31
|
+
@ReactMethod
|
|
32
|
+
public void addListener(String event) {
|
|
33
|
+
super.addListener(event);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@ReactMethod
|
|
37
|
+
public void removeListeners(Integer count) {
|
|
38
|
+
super.removeListeners(count);
|
|
39
|
+
}
|
|
40
|
+
|
|
29
41
|
@ReactMethod
|
|
30
42
|
public void setEnabled(final boolean isEnabled) {
|
|
31
43
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
@@ -210,12 +222,12 @@ public class RNLuciqRepliesModule extends RNLuciqRepliesBaseSpec {
|
|
|
210
222
|
* @param notificationIcon the notification icon resource ID
|
|
211
223
|
*/
|
|
212
224
|
@ReactMethod
|
|
213
|
-
public void setNotificationIcon(final
|
|
225
|
+
public void setNotificationIcon(final int notificationIcon) {
|
|
214
226
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
215
227
|
@Override
|
|
216
228
|
public void run() {
|
|
217
229
|
try {
|
|
218
|
-
Replies.setNotificationIcon(
|
|
230
|
+
Replies.setNotificationIcon(notificationIcon);
|
|
219
231
|
} catch (Exception e) {
|
|
220
232
|
e.printStackTrace();
|
|
221
233
|
}
|
|
@@ -265,7 +277,7 @@ public class RNLuciqRepliesModule extends RNLuciqRepliesBaseSpec {
|
|
|
265
277
|
}
|
|
266
278
|
|
|
267
279
|
@ReactMethod
|
|
268
|
-
public void setOnNewReplyReceivedHandler() {
|
|
280
|
+
public void setOnNewReplyReceivedHandler(final Callback onNewReplyReceivedCallback) {
|
|
269
281
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
270
282
|
@Override
|
|
271
283
|
public void run() {
|
|
@@ -16,6 +16,7 @@ import ai.luciq.library.OnSessionReplayLinkReady;
|
|
|
16
16
|
import ai.luciq.library.SessionSyncListener;
|
|
17
17
|
import ai.luciq.library.sessionreplay.SessionReplay;
|
|
18
18
|
import ai.luciq.library.sessionreplay.model.SessionMetadata;
|
|
19
|
+
import ai.luciq.reactlibrary.utils.EventEmitterModule;
|
|
19
20
|
import ai.luciq.reactlibrary.utils.MainThreadHandler;
|
|
20
21
|
import android.util.Log;
|
|
21
22
|
import java.util.ArrayList;
|
|
@@ -24,12 +25,22 @@ import java.util.concurrent.CountDownLatch;
|
|
|
24
25
|
|
|
25
26
|
import javax.annotation.Nonnull;
|
|
26
27
|
|
|
27
|
-
public class RNLuciqSessionReplayModule extends
|
|
28
|
+
public class RNLuciqSessionReplayModule extends EventEmitterModule {
|
|
28
29
|
|
|
29
30
|
public RNLuciqSessionReplayModule(ReactApplicationContext reactApplicationContext) {
|
|
30
31
|
super(reactApplicationContext);
|
|
31
32
|
}
|
|
32
33
|
|
|
34
|
+
@ReactMethod
|
|
35
|
+
public void addListener(String event) {
|
|
36
|
+
super.addListener(event);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@ReactMethod
|
|
40
|
+
public void removeListeners(Integer count) {
|
|
41
|
+
super.removeListeners(count);
|
|
42
|
+
}
|
|
43
|
+
|
|
33
44
|
@Nonnull
|
|
34
45
|
@Override
|
|
35
46
|
public String getName() {
|
|
@@ -157,7 +168,7 @@ public class RNLuciqSessionReplayModule extends RNLuciqSessionReplayBaseSpec {
|
|
|
157
168
|
private boolean shouldSync = true;
|
|
158
169
|
private CountDownLatch latch;
|
|
159
170
|
@ReactMethod
|
|
160
|
-
public void setSyncCallback(
|
|
171
|
+
public void setSyncCallback() {
|
|
161
172
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
162
173
|
@Override
|
|
163
174
|
public void run() {
|
|
@@ -184,7 +195,7 @@ public class RNLuciqSessionReplayModule extends RNLuciqSessionReplayBaseSpec {
|
|
|
184
195
|
catch(Exception e){
|
|
185
196
|
e.printStackTrace();
|
|
186
197
|
}
|
|
187
|
-
|
|
198
|
+
|
|
188
199
|
}
|
|
189
200
|
});
|
|
190
201
|
}
|
|
@@ -237,12 +248,12 @@ public class RNLuciqSessionReplayModule extends RNLuciqSessionReplayBaseSpec {
|
|
|
237
248
|
}
|
|
238
249
|
|
|
239
250
|
@ReactMethod
|
|
240
|
-
public void setScreenshotCaptureInterval(final
|
|
251
|
+
public void setScreenshotCaptureInterval(final int intervalMs) {
|
|
241
252
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
242
253
|
@Override
|
|
243
254
|
public void run() {
|
|
244
255
|
try {
|
|
245
|
-
SessionReplay.setScreenshotCaptureInterval(
|
|
256
|
+
SessionReplay.setScreenshotCaptureInterval(intervalMs);
|
|
246
257
|
} catch (Exception e) {
|
|
247
258
|
e.printStackTrace();
|
|
248
259
|
}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
package ai.luciq.reactlibrary;
|
|
2
2
|
|
|
3
3
|
import com.facebook.react.bridge.Arguments;
|
|
4
|
+
import com.facebook.react.bridge.Callback;
|
|
4
5
|
import com.facebook.react.bridge.Promise;
|
|
5
6
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
6
7
|
import com.facebook.react.bridge.ReactMethod;
|
|
7
8
|
import com.facebook.react.bridge.WritableArray;
|
|
8
9
|
import ai.luciq.library.Feature;
|
|
9
10
|
import ai.luciq.reactlibrary.utils.ArrayUtil;
|
|
11
|
+
import ai.luciq.reactlibrary.utils.EventEmitterModule;
|
|
10
12
|
import ai.luciq.reactlibrary.utils.LuciqUtil;
|
|
11
13
|
import ai.luciq.reactlibrary.utils.MainThreadHandler;
|
|
12
14
|
import ai.luciq.survey.callbacks.*;
|
|
@@ -19,7 +21,7 @@ import java.util.List;
|
|
|
19
21
|
|
|
20
22
|
import javax.annotation.Nonnull;
|
|
21
23
|
|
|
22
|
-
public class RNLuciqSurveysModule extends
|
|
24
|
+
public class RNLuciqSurveysModule extends EventEmitterModule {
|
|
23
25
|
|
|
24
26
|
public RNLuciqSurveysModule(ReactApplicationContext reactContext) {
|
|
25
27
|
super(reactContext);
|
|
@@ -31,6 +33,16 @@ public class RNLuciqSurveysModule extends RNLuciqSurveysBaseSpec {
|
|
|
31
33
|
return "LCQSurveys";
|
|
32
34
|
}
|
|
33
35
|
|
|
36
|
+
@ReactMethod
|
|
37
|
+
public void addListener(String event) {
|
|
38
|
+
super.addListener(event);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
@ReactMethod
|
|
42
|
+
public void removeListeners(Integer count) {
|
|
43
|
+
super.removeListeners(count);
|
|
44
|
+
}
|
|
45
|
+
|
|
34
46
|
/**
|
|
35
47
|
* Returns true if the survey with a specific token was answered before.
|
|
36
48
|
* Will return false if the token does not exist or if the survey was not answered before.
|
|
@@ -127,7 +139,7 @@ public class RNLuciqSurveysModule extends RNLuciqSurveysBaseSpec {
|
|
|
127
139
|
* @param handler to run on the UI thread before showing any valid survey
|
|
128
140
|
*/
|
|
129
141
|
@ReactMethod
|
|
130
|
-
public void setOnShowHandler() {
|
|
142
|
+
public void setOnShowHandler(final Callback handler) {
|
|
131
143
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
132
144
|
@Override
|
|
133
145
|
public void run() {
|
|
@@ -149,7 +161,7 @@ public class RNLuciqSurveysModule extends RNLuciqSurveysBaseSpec {
|
|
|
149
161
|
* @param handler to run on the UI thread after showing any valid survey
|
|
150
162
|
*/
|
|
151
163
|
@ReactMethod
|
|
152
|
-
public void setOnDismissHandler() {
|
|
164
|
+
public void setOnDismissHandler(final Callback handler) {
|
|
153
165
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
154
166
|
@Override
|
|
155
167
|
public void run() {
|
|
@@ -222,8 +234,4 @@ public class RNLuciqSurveysModule extends RNLuciqSurveysBaseSpec {
|
|
|
222
234
|
}
|
|
223
235
|
});
|
|
224
236
|
}
|
|
225
|
-
|
|
226
|
-
@ReactMethod
|
|
227
|
-
public void setAppStoreURL(String appStoreURL) {
|
|
228
|
-
}
|
|
229
237
|
}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
package ai.luciq.reactlibrary.utils;
|
|
2
2
|
|
|
3
|
+
import android.util.Log;
|
|
4
|
+
|
|
3
5
|
import androidx.annotation.Nullable;
|
|
4
6
|
import androidx.annotation.VisibleForTesting;
|
|
5
7
|
|
|
@@ -10,6 +12,7 @@ import com.facebook.react.bridge.WritableMap;
|
|
|
10
12
|
import com.facebook.react.modules.core.DeviceEventManagerModule;
|
|
11
13
|
|
|
12
14
|
public abstract class EventEmitterModule extends ReactContextBaseJavaModule {
|
|
15
|
+
private static final String NET_TAG = "LCQ-RN-NET";
|
|
13
16
|
private int listenerCount = 0;
|
|
14
17
|
|
|
15
18
|
public EventEmitterModule(ReactApplicationContext context) {
|
|
@@ -22,14 +25,18 @@ public abstract class EventEmitterModule extends ReactContextBaseJavaModule {
|
|
|
22
25
|
getReactApplicationContext()
|
|
23
26
|
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
|
|
24
27
|
.emit(event, params);
|
|
28
|
+
} else {
|
|
29
|
+
Log.w(NET_TAG, "[EventEmitter] Event DROPPED (no JS listeners): event=" + event + ", module=" + getName() + ", listenerCount=0");
|
|
25
30
|
}
|
|
26
31
|
}
|
|
27
32
|
|
|
28
33
|
protected void addListener(String ignoredEvent) {
|
|
29
34
|
listenerCount++;
|
|
35
|
+
Log.d(NET_TAG, "[EventEmitter] addListener — module=" + getName() + ", event=" + ignoredEvent + ", listenerCount=" + listenerCount);
|
|
30
36
|
}
|
|
31
37
|
|
|
32
38
|
protected void removeListeners(Integer count) {
|
|
33
39
|
listenerCount -= count;
|
|
40
|
+
Log.d(NET_TAG, "[EventEmitter] removeListeners — module=" + getName() + ", removed=" + count + ", listenerCount=" + listenerCount);
|
|
34
41
|
}
|
|
35
42
|
}
|
|
@@ -31,7 +31,7 @@ export const setOptions = (options) => {
|
|
|
31
31
|
*/
|
|
32
32
|
export const onInvokeHandler = (handler) => {
|
|
33
33
|
emitter.addListener(NativeEvents.ON_INVOKE_HANDLER, handler);
|
|
34
|
-
NativeBugReporting.setOnInvokeHandler();
|
|
34
|
+
NativeBugReporting.setOnInvokeHandler(handler);
|
|
35
35
|
};
|
|
36
36
|
/**
|
|
37
37
|
* Sets a block of code to be executed right after the SDK's UI is dismissed.
|
|
@@ -43,7 +43,7 @@ export const onSDKDismissedHandler = (handler) => {
|
|
|
43
43
|
emitter.addListener(NativeEvents.ON_DISMISS_HANDLER, (payload) => {
|
|
44
44
|
handler(payload.dismissType, payload.reportType);
|
|
45
45
|
});
|
|
46
|
-
NativeBugReporting.setOnSDKDismissedHandler();
|
|
46
|
+
NativeBugReporting.setOnSDKDismissedHandler(handler);
|
|
47
47
|
};
|
|
48
48
|
/**
|
|
49
49
|
* Sets the threshold value of the shake gesture for iPhone/iPod Touch
|
|
@@ -160,7 +160,7 @@ export const setDidSelectPromptOptionHandler = (handler) => {
|
|
|
160
160
|
emitter.addListener(NativeEvents.DID_SELECT_PROMPT_OPTION_HANDLER, (payload) => {
|
|
161
161
|
handler(payload.promptOption);
|
|
162
162
|
});
|
|
163
|
-
NativeBugReporting.setDidSelectPromptOptionHandler();
|
|
163
|
+
NativeBugReporting.setDidSelectPromptOptionHandler(handler);
|
|
164
164
|
};
|
|
165
165
|
/**
|
|
166
166
|
* Sets the default edge and offset from the top at which the floating button
|
package/dist/modules/Luciq.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AppState, findNodeHandle, Platform } from 'react-native';
|
|
2
2
|
import Report from '../models/Report';
|
|
3
3
|
import { emitter, NativeEvents, NativeLuciq } from '../native/NativeLuciq';
|
|
4
|
-
import { registerFeatureFlagsListener } from '../utils/FeatureFlags';
|
|
4
|
+
import { registerFeatureFlagsListener, initFeatureFlagsCache } from '../utils/FeatureFlags';
|
|
5
5
|
import { LogLevel, NetworkInterceptionMode, ReproStepsMode, StringKey, } from '../utils/Enums';
|
|
6
6
|
import LuciqUtils, { checkNetworkRequestHandlers, resetNativeObfuscationListener, setApmNetworkFlagsIfChanged, stringifyIfNotString, } from '../utils/LuciqUtils';
|
|
7
7
|
import * as NetworkLogger from './NetworkLogger';
|
|
@@ -50,6 +50,7 @@ function reportCurrentViewForAndroid(screenName) {
|
|
|
50
50
|
* @param config SDK configurations. See {@link LuciqConfig} for more info.
|
|
51
51
|
*/
|
|
52
52
|
export const init = (config) => {
|
|
53
|
+
initFeatureFlagsCache();
|
|
53
54
|
if (Platform.OS === 'android') {
|
|
54
55
|
// Add android feature flags listener for android
|
|
55
56
|
registerFeatureFlagsListener();
|
|
@@ -644,7 +645,7 @@ export const onReportSubmitHandler = (handler) => {
|
|
|
644
645
|
const reportObj = new Report(tags, consoleLogs, luciqLogs, userAttributes, fileAttachments);
|
|
645
646
|
handler && handler(reportObj);
|
|
646
647
|
});
|
|
647
|
-
NativeLuciq.setPreSendingHandler();
|
|
648
|
+
NativeLuciq.setPreSendingHandler(handler);
|
|
648
649
|
};
|
|
649
650
|
export const onNavigationStateChange = (prevState, currentState, _action) => {
|
|
650
651
|
const currentScreen = LuciqUtils.getActiveRouteName(currentState);
|
|
@@ -3,11 +3,6 @@ import { NetworkData, ProgressCallback } from '../utils/XhrNetworkInterceptor';
|
|
|
3
3
|
import { NetworkListenerType } from '../native/NativeNetworkLogger';
|
|
4
4
|
export type { NetworkData };
|
|
5
5
|
export type NetworkDataObfuscationHandler = (data: NetworkData) => Promise<NetworkData>;
|
|
6
|
-
/**
|
|
7
|
-
* Sets whether network logs should be sent with bug reports.
|
|
8
|
-
* It is enabled by default.
|
|
9
|
-
* @param isEnabled
|
|
10
|
-
*/
|
|
11
6
|
export declare const setEnabled: (isEnabled: boolean) => void;
|
|
12
7
|
/**
|
|
13
8
|
* @internal
|
|
@@ -20,21 +20,25 @@ function getPortFromUrl(url) {
|
|
|
20
20
|
* It is enabled by default.
|
|
21
21
|
* @param isEnabled
|
|
22
22
|
*/
|
|
23
|
+
const NET_TAG = 'LCQ-RN-NET:';
|
|
23
24
|
export const setEnabled = (isEnabled) => {
|
|
24
25
|
if (isEnabled) {
|
|
25
26
|
xhr.enableInterception();
|
|
26
27
|
xhr.setOnDoneCallback(async (network) => {
|
|
28
|
+
Logger.debug(NET_TAG, `[NetworkLogger] onDoneCallback received: ${network.method} ${network.url}, status=${network.responseCode}`);
|
|
27
29
|
// eslint-disable-next-line no-new-func
|
|
28
30
|
const predicate = Function('network', 'return ' + _requestFilterExpression);
|
|
29
31
|
if (!predicate(network)) {
|
|
30
32
|
const MAX_NETWORK_BODY_SIZE_IN_BYTES = await NativeLuciq.getNetworkBodyMaxSize();
|
|
31
33
|
try {
|
|
32
34
|
if (_networkDataObfuscationHandler) {
|
|
35
|
+
Logger.debug(NET_TAG, `[NetworkLogger] Running obfuscation handler for ${network.url}`);
|
|
33
36
|
network = await _networkDataObfuscationHandler(network);
|
|
34
37
|
}
|
|
35
38
|
if (__DEV__) {
|
|
36
39
|
const urlPort = getPortFromUrl(network.url);
|
|
37
40
|
if (urlPort === LuciqRNConfig.metroDevServerPort) {
|
|
41
|
+
Logger.debug(NET_TAG, `[NetworkLogger] Skipping Metro dev server request: ${network.url}`);
|
|
38
42
|
return;
|
|
39
43
|
}
|
|
40
44
|
}
|
|
@@ -54,12 +58,16 @@ export const setEnabled = (isEnabled) => {
|
|
|
54
58
|
network.responseBody = `Body is omitted because content type ${network.contentType} isn't supported`;
|
|
55
59
|
Logger.warn(`LCQ-RN: The response body for the network request with URL ${network.url} has been omitted because the content type ${network.contentType} isn't supported.`);
|
|
56
60
|
}
|
|
61
|
+
Logger.debug(NET_TAG, `[NetworkLogger] Reporting network log to native: ${network.method} ${network.url}`);
|
|
57
62
|
reportNetworkLog(network);
|
|
58
63
|
}
|
|
59
64
|
catch (e) {
|
|
60
|
-
Logger.error(e);
|
|
65
|
+
Logger.error(NET_TAG, `[NetworkLogger] Error processing network log for ${network.url}:`, e);
|
|
61
66
|
}
|
|
62
67
|
}
|
|
68
|
+
else {
|
|
69
|
+
Logger.debug(NET_TAG, `[NetworkLogger] Request filtered out by predicate: ${network.method} ${network.url}, expression="${_requestFilterExpression}"`);
|
|
70
|
+
}
|
|
63
71
|
});
|
|
64
72
|
}
|
|
65
73
|
else {
|
package/dist/modules/Replies.js
CHANGED
|
@@ -26,7 +26,7 @@ export const show = () => {
|
|
|
26
26
|
*/
|
|
27
27
|
export const setOnNewReplyReceivedHandler = (handler) => {
|
|
28
28
|
emitter.addListener(NativeEvents.ON_REPLY_RECEIVED_HANDLER, handler);
|
|
29
|
-
NativeReplies.setOnNewReplyReceivedHandler();
|
|
29
|
+
NativeReplies.setOnNewReplyReceivedHandler(handler);
|
|
30
30
|
};
|
|
31
31
|
/**
|
|
32
32
|
* Returns the number of unread messages the user currently has.
|
package/dist/modules/Surveys.js
CHANGED
|
@@ -45,7 +45,7 @@ export const setAutoShowingEnabled = (autoShowingSurveysEnabled) => {
|
|
|
45
45
|
*/
|
|
46
46
|
export const setOnShowHandler = (onShowHandler) => {
|
|
47
47
|
emitter.addListener(NativeEvents.WILL_SHOW_SURVEY_HANDLER, onShowHandler);
|
|
48
|
-
NativeSurveys.setOnShowHandler();
|
|
48
|
+
NativeSurveys.setOnShowHandler(onShowHandler);
|
|
49
49
|
};
|
|
50
50
|
/**
|
|
51
51
|
* Sets a block of code to be executed right after the survey's UI is dismissed.
|
|
@@ -56,7 +56,7 @@ export const setOnShowHandler = (onShowHandler) => {
|
|
|
56
56
|
*/
|
|
57
57
|
export const setOnDismissHandler = (onDismissHandler) => {
|
|
58
58
|
emitter.addListener(NativeEvents.DID_DISMISS_SURVEY_HANDLER, onDismissHandler);
|
|
59
|
-
NativeSurveys.setOnDismissHandler();
|
|
59
|
+
NativeSurveys.setOnDismissHandler(onDismissHandler);
|
|
60
60
|
};
|
|
61
61
|
/**
|
|
62
62
|
* Shows survey with a specific token.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { NativeEventEmitter, NativeModule } from 'react-native';
|
|
2
|
-
import type { ExtendedBugReportMode, FloatingButtonPosition, InvocationEvent, InvocationOption, RecordingButtonPosition, ReportType, userConsentActionType } from '../utils/Enums';
|
|
2
|
+
import type { DismissType, ExtendedBugReportMode, FloatingButtonPosition, InvocationEvent, InvocationOption, RecordingButtonPosition, ReportType, userConsentActionType } from '../utils/Enums';
|
|
3
3
|
export interface BugReportingNativeModule extends NativeModule {
|
|
4
4
|
setEnabled(isEnabled: boolean): void;
|
|
5
5
|
show(type: ReportType, options: InvocationOption[]): void;
|
|
@@ -18,9 +18,9 @@ export interface BugReportingNativeModule extends NativeModule {
|
|
|
18
18
|
setShakingThresholdForiPhone(threshold: number): void;
|
|
19
19
|
setShakingThresholdForiPad(threshold: number): void;
|
|
20
20
|
setShakingThresholdForAndroid(threshold: number): void;
|
|
21
|
-
setOnInvokeHandler(): void;
|
|
22
|
-
setDidSelectPromptOptionHandler(): void;
|
|
23
|
-
setOnSDKDismissedHandler(): void;
|
|
21
|
+
setOnInvokeHandler(handler: () => void): void;
|
|
22
|
+
setDidSelectPromptOptionHandler(handler: (promptOption: string) => void): void;
|
|
23
|
+
setOnSDKDismissedHandler(handler: (dismissType: DismissType, reportType: ReportType) => void): void;
|
|
24
24
|
addUserConsent(key: string, description: string, mandatory: boolean, checked: boolean, actionType?: userConsentActionType): void;
|
|
25
25
|
setProactiveReportingConfigurations(enabled: boolean, gapBetweenModals: number, modalDelayAfterDetection: number): void;
|
|
26
26
|
}
|