@luciq/react-native 19.3.0-40271-SNAPSHOT → 19.4.0-44237-SNAPSHOT
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/README.md +118 -0
- package/RNLuciq.podspec +6 -2
- package/android/build.gradle +25 -0
- package/android/native.gradle +1 -1
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqAPMModule.java +3 -12
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqBugReportingModule.java +28 -24
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqCrashReportingModule.java +18 -7
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqFeatureRequestsModule.java +1 -2
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqNetworkLoggerModule.java +29 -56
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqReactnativeModule.java +121 -47
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqReactnativePackage.java +2 -0
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqRepliesModule.java +4 -16
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqSessionReplayModule.java +5 -16
- package/android/src/main/java/ai/luciq/reactlibrary/RNLuciqSurveysModule.java +7 -15
- package/android/src/main/java/ai/luciq/reactlibrary/utils/EventEmitterModule.java +0 -7
- package/android/src/main/java/ai/luciq/reactlibrary/utils/ReportUtil.java +0 -7
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqAPMBaseSpec.java +9 -0
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqBaseSpec.java +33 -0
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqBugReportingBaseSpec.java +33 -0
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqCrashReportingBaseSpec.java +9 -0
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqFeatureRequestsBaseSpec.java +9 -0
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqNetworkLoggerBaseSpec.java +33 -0
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqRepliesBaseSpec.java +33 -0
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqSessionReplayBaseSpec.java +33 -0
- package/android/src/newarch/java/ai/luciq/reactlibrary/RNLuciqSurveysBaseSpec.java +33 -0
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqAPMBaseSpec.java +11 -0
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqBaseSpec.java +22 -0
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqBugReportingBaseSpec.java +22 -0
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqCrashReportingBaseSpec.java +10 -0
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqFeatureRequestsBaseSpec.java +10 -0
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqNetworkLoggerBaseSpec.java +22 -0
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqRepliesBaseSpec.java +22 -0
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqSessionReplayBaseSpec.java +22 -0
- package/android/src/oldarch/java/ai/luciq/reactlibrary/RNLuciqSurveysBaseSpec.java +22 -0
- package/dist/modules/BugReporting.js +3 -3
- package/dist/modules/Luciq.d.ts +15 -0
- package/dist/modules/Luciq.js +23 -3
- package/dist/modules/NetworkLogger.d.ts +5 -0
- package/dist/modules/NetworkLogger.js +1 -9
- package/dist/modules/Replies.js +1 -1
- package/dist/modules/Surveys.js +2 -2
- package/dist/native/NativeBugReporting.d.ts +4 -4
- package/dist/native/NativeCrashReporting.d.ts +2 -2
- package/dist/native/NativeLuciq.d.ts +5 -3
- package/dist/native/NativePackage.js +25 -2
- package/dist/native/NativeReplies.d.ts +1 -1
- package/dist/native/NativeSurveys.d.ts +2 -2
- package/dist/native/specs/NativeAPM.d.ts +21 -0
- package/dist/native/specs/NativeAPM.js +2 -0
- package/dist/native/specs/NativeBugReporting.d.ts +29 -0
- package/dist/native/specs/NativeBugReporting.js +2 -0
- package/dist/native/specs/NativeCrashReporting.d.ts +12 -0
- package/dist/native/specs/NativeCrashReporting.js +2 -0
- package/dist/native/specs/NativeFeatureRequests.d.ts +8 -0
- package/dist/native/specs/NativeFeatureRequests.js +2 -0
- package/dist/native/specs/NativeLuciq.d.ts +80 -0
- package/dist/native/specs/NativeLuciq.js +2 -0
- package/dist/native/specs/NativeNetworkLogger.d.ts +16 -0
- package/dist/native/specs/NativeNetworkLogger.js +2 -0
- package/dist/native/specs/NativeReplies.d.ts +21 -0
- package/dist/native/specs/NativeReplies.js +2 -0
- package/dist/native/specs/NativeSessionReplay.d.ts +17 -0
- package/dist/native/specs/NativeSessionReplay.js +2 -0
- package/dist/native/specs/NativeSurveys.d.ts +18 -0
- package/dist/native/specs/NativeSurveys.js +2 -0
- package/dist/utils/Enums.js +3 -1
- package/dist/utils/FeatureFlags.d.ts +0 -6
- package/dist/utils/FeatureFlags.js +0 -35
- package/dist/utils/LuciqUtils.d.ts +1 -1
- package/dist/utils/LuciqUtils.js +0 -9
- package/dist/utils/XhrNetworkInterceptor.js +53 -85
- package/ios/RNLuciq/LuciqAPMBridge.h +5 -5
- package/ios/RNLuciq/{LuciqAPMBridge.m → LuciqAPMBridge.mm} +48 -39
- package/ios/RNLuciq/LuciqBugReportingBridge.h +6 -6
- package/ios/RNLuciq/LuciqBugReportingBridge.mm +234 -0
- package/ios/RNLuciq/LuciqCrashReportingBridge.h +16 -5
- package/ios/RNLuciq/LuciqCrashReportingBridge.mm +91 -0
- package/ios/RNLuciq/LuciqFeatureRequestsBridge.h +1 -1
- package/ios/RNLuciq/{LuciqFeatureRequestsBridge.m → LuciqFeatureRequestsBridge.mm} +21 -16
- package/ios/RNLuciq/LuciqNetworkLoggerBridge.h +1 -30
- package/ios/RNLuciq/{LuciqNetworkLoggerBridge.m → LuciqNetworkLoggerBridge.mm} +46 -77
- package/ios/RNLuciq/LuciqReactBridge.h +13 -13
- package/ios/RNLuciq/{LuciqReactBridge.m → LuciqReactBridge.mm} +95 -34
- package/ios/RNLuciq/LuciqRepliesBridge.h +3 -3
- package/ios/RNLuciq/LuciqRepliesBridge.mm +86 -0
- package/ios/RNLuciq/LuciqSessionReplayBridge.h +5 -5
- package/ios/RNLuciq/{LuciqSessionReplayBridge.m → LuciqSessionReplayBridge.mm} +35 -25
- package/ios/RNLuciq/LuciqSurveysBridge.h +5 -5
- package/ios/RNLuciq/{LuciqSurveysBridge.m → LuciqSurveysBridge.mm} +34 -35
- package/ios/native.rb +1 -1
- package/package.json +9 -1
- package/src/modules/BugReporting.ts +3 -3
- package/src/modules/Luciq.ts +26 -4
- package/src/modules/NetworkLogger.ts +1 -26
- package/src/modules/Replies.ts +1 -1
- package/src/modules/Surveys.ts +2 -2
- package/src/native/NativeBugReporting.ts +3 -6
- package/src/native/NativeCrashReporting.ts +2 -2
- package/src/native/NativeLuciq.ts +7 -3
- package/src/native/NativePackage.ts +52 -2
- package/src/native/NativeReplies.ts +1 -1
- package/src/native/NativeSurveys.ts +2 -2
- package/src/native/specs/NativeAPM.ts +47 -0
- package/src/native/specs/NativeBugReporting.ts +53 -0
- package/src/native/specs/NativeCrashReporting.ts +23 -0
- package/src/native/specs/NativeFeatureRequests.ts +10 -0
- package/src/native/specs/NativeLuciq.ts +137 -0
- package/src/native/specs/NativeNetworkLogger.ts +31 -0
- package/src/native/specs/NativeReplies.ts +27 -0
- package/src/native/specs/NativeSessionReplay.ts +20 -0
- package/src/native/specs/NativeSurveys.ts +23 -0
- package/src/utils/Enums.ts +4 -1
- package/src/utils/FeatureFlags.ts +0 -44
- package/src/utils/LuciqUtils.ts +1 -21
- package/src/utils/XhrNetworkInterceptor.ts +55 -128
- package/ios/RNLuciq/LuciqBugReportingBridge.m +0 -249
- package/ios/RNLuciq/LuciqCrashReportingBridge.m +0 -68
- package/ios/RNLuciq/LuciqRepliesBridge.m +0 -80
|
@@ -19,7 +19,6 @@ import com.facebook.react.bridge.WritableNativeMap;
|
|
|
19
19
|
import ai.luciq.apm.InternalAPM;
|
|
20
20
|
import ai.luciq.apm.sanitization.OnCompleteCallback;
|
|
21
21
|
import ai.luciq.library.logging.listeners.networklogs.NetworkLogSnapshot;
|
|
22
|
-
import ai.luciq.reactlibrary.utils.EventEmitterModule;
|
|
23
22
|
import ai.luciq.reactlibrary.utils.MainThreadHandler;
|
|
24
23
|
|
|
25
24
|
import org.json.JSONException;
|
|
@@ -30,9 +29,7 @@ import java.util.Map;
|
|
|
30
29
|
import java.util.concurrent.ConcurrentHashMap;
|
|
31
30
|
|
|
32
31
|
|
|
33
|
-
public class RNLuciqNetworkLoggerModule extends
|
|
34
|
-
|
|
35
|
-
private static final String NET_TAG = "LCQ-RN-NET";
|
|
32
|
+
public class RNLuciqNetworkLoggerModule extends RNLuciqNetworkLoggerBaseSpec {
|
|
36
33
|
|
|
37
34
|
public final ConcurrentHashMap<String, OnCompleteCallback<NetworkLogSnapshot>> callbackMap = new ConcurrentHashMap<String, OnCompleteCallback<NetworkLogSnapshot>>();
|
|
38
35
|
|
|
@@ -48,20 +45,8 @@ public class RNLuciqNetworkLoggerModule extends EventEmitterModule {
|
|
|
48
45
|
}
|
|
49
46
|
|
|
50
47
|
|
|
51
|
-
@ReactMethod
|
|
52
|
-
public void addListener(String event) {
|
|
53
|
-
super.addListener(event);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
@ReactMethod
|
|
57
|
-
public void removeListeners(Integer count) {
|
|
58
|
-
super.removeListeners(count);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
48
|
private boolean getFlagValue(String key) {
|
|
62
|
-
|
|
63
|
-
Log.d(NET_TAG, "[getFlagValue] key=" + key + ", value=" + value);
|
|
64
|
-
return value;
|
|
49
|
+
return InternalAPM._isFeatureEnabledCP(key, "");
|
|
65
50
|
}
|
|
66
51
|
|
|
67
52
|
private WritableMap convertFromMapToWritableMap(Map<String, Object> map) {
|
|
@@ -88,24 +73,14 @@ public class RNLuciqNetworkLoggerModule extends EventEmitterModule {
|
|
|
88
73
|
/**
|
|
89
74
|
* Get first time Value of [cp_native_interception_enabled] flag
|
|
90
75
|
*/
|
|
91
|
-
@ReactMethod
|
|
92
|
-
public
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
Log.d(NET_TAG, "[isNativeInterceptionEnabled] Result=" + enabled);
|
|
100
|
-
promise.resolve(enabled);
|
|
101
|
-
} catch (Exception e) {
|
|
102
|
-
Log.e(NET_TAG, "[isNativeInterceptionEnabled] Error — falling back to false (JS interceptor)", e);
|
|
103
|
-
e.printStackTrace();
|
|
104
|
-
promise.resolve(false);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
}
|
|
108
|
-
});
|
|
76
|
+
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
77
|
+
public boolean isNativeInterceptionEnabled() {
|
|
78
|
+
try {
|
|
79
|
+
return getFlagValue(CP_NATIVE_INTERCEPTION_ENABLED);
|
|
80
|
+
} catch (Exception e) {
|
|
81
|
+
e.printStackTrace();
|
|
82
|
+
return false; // Will rollback to JS interceptor
|
|
83
|
+
}
|
|
109
84
|
}
|
|
110
85
|
|
|
111
86
|
/**
|
|
@@ -115,18 +90,14 @@ public class RNLuciqNetworkLoggerModule extends EventEmitterModule {
|
|
|
115
90
|
*/
|
|
116
91
|
@ReactMethod
|
|
117
92
|
public void hasAPMNetworkPlugin(Promise promise) {
|
|
118
|
-
Log.d(NET_TAG, "[hasAPMNetworkPlugin] Querying APM_NETWORK_PLUGIN_INSTALLED flag");
|
|
119
93
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
120
94
|
@Override
|
|
121
95
|
public void run() {
|
|
122
96
|
try {
|
|
123
|
-
|
|
124
|
-
Log.d(NET_TAG, "[hasAPMNetworkPlugin] Result=" + hasPlugin);
|
|
125
|
-
promise.resolve(hasPlugin);
|
|
97
|
+
promise.resolve(getFlagValue(APM_NETWORK_PLUGIN_INSTALLED));
|
|
126
98
|
} catch (Exception e) {
|
|
127
|
-
Log.e(NET_TAG, "[hasAPMNetworkPlugin] Error — falling back to false", e);
|
|
128
99
|
e.printStackTrace();
|
|
129
|
-
promise.resolve(false);
|
|
100
|
+
promise.resolve(false); // Will rollback to JS interceptor
|
|
130
101
|
}
|
|
131
102
|
|
|
132
103
|
}
|
|
@@ -135,15 +106,13 @@ public class RNLuciqNetworkLoggerModule extends EventEmitterModule {
|
|
|
135
106
|
|
|
136
107
|
|
|
137
108
|
@ReactMethod
|
|
138
|
-
public void registerNetworkLogsListener() {
|
|
139
|
-
Log.d(NET_TAG, "[registerNetworkLogsListener] Registering network log sanitizer");
|
|
109
|
+
public void registerNetworkLogsListener(@androidx.annotation.Nullable String type) {
|
|
140
110
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
141
111
|
@Override
|
|
142
112
|
public void run() {
|
|
143
113
|
InternalAPM._registerNetworkLogSanitizer((networkLogSnapshot, onCompleteCallback) -> {
|
|
144
114
|
final String id = String.valueOf(onCompleteCallback.hashCode());
|
|
145
115
|
callbackMap.put(id, onCompleteCallback);
|
|
146
|
-
Log.d(NET_TAG, "[NetworkLogSanitizer] Received snapshot — id=" + id + ", url=" + networkLogSnapshot.getUrl() + ", responseCode=" + networkLogSnapshot.getResponseCode() + ", callbackMapSize=" + callbackMap.size());
|
|
147
116
|
|
|
148
117
|
WritableMap networkSnapshotParams = Arguments.createMap();
|
|
149
118
|
networkSnapshotParams.putString("id", id);
|
|
@@ -161,7 +130,6 @@ public class RNLuciqNetworkLoggerModule extends EventEmitterModule {
|
|
|
161
130
|
}
|
|
162
131
|
|
|
163
132
|
sendEvent(Constants.LCQ_NETWORK_LOGGER_HANDLER, networkSnapshotParams);
|
|
164
|
-
Log.d(NET_TAG, "[NetworkLogSanitizer] Sent event to JS: " + Constants.LCQ_NETWORK_LOGGER_HANDLER + " for " + networkLogSnapshot.getUrl());
|
|
165
133
|
});
|
|
166
134
|
}
|
|
167
135
|
});
|
|
@@ -169,12 +137,10 @@ public class RNLuciqNetworkLoggerModule extends EventEmitterModule {
|
|
|
169
137
|
|
|
170
138
|
@ReactMethod
|
|
171
139
|
public void resetNetworkLogsListener() {
|
|
172
|
-
Log.d(NET_TAG, "[resetNetworkLogsListener] Clearing network log sanitizer, callbackMapSize=" + callbackMap.size());
|
|
173
140
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
174
141
|
@Override
|
|
175
142
|
public void run() {
|
|
176
143
|
InternalAPM._registerNetworkLogSanitizer(null);
|
|
177
|
-
Log.d(NET_TAG, "[resetNetworkLogsListener] Sanitizer cleared");
|
|
178
144
|
}
|
|
179
145
|
});
|
|
180
146
|
}
|
|
@@ -185,33 +151,40 @@ public class RNLuciqNetworkLoggerModule extends EventEmitterModule {
|
|
|
185
151
|
String callbackID,
|
|
186
152
|
String requestBody,
|
|
187
153
|
String responseBody,
|
|
188
|
-
|
|
154
|
+
double responseCode,
|
|
189
155
|
ReadableMap requestHeaders,
|
|
190
156
|
ReadableMap responseHeaders
|
|
191
157
|
) {
|
|
192
|
-
Log.d(NET_TAG, "[updateNetworkLogSnapshot] callbackID=" + callbackID + ", url=" + url + ", responseCode=" + responseCode + ", callbackMapSize=" + callbackMap.size());
|
|
193
158
|
try {
|
|
159
|
+
// Convert ReadableMap to a Java Map for easier handling
|
|
194
160
|
Map<String, Object> requestHeadersMap = convertReadableMapToMap(requestHeaders);
|
|
195
161
|
Map<String, Object> responseHeadersMap = convertReadableMapToMap(responseHeaders);
|
|
196
162
|
|
|
197
163
|
NetworkLogSnapshot modifiedSnapshot = null;
|
|
198
164
|
if (!url.isEmpty()) {
|
|
199
|
-
modifiedSnapshot = new NetworkLogSnapshot(url, requestHeadersMap, requestBody, responseHeadersMap, responseBody, responseCode);
|
|
200
|
-
} else {
|
|
201
|
-
Log.d(NET_TAG, "[updateNetworkLogSnapshot] Empty URL — snapshot will be null (request filtered/removed)");
|
|
165
|
+
modifiedSnapshot = new NetworkLogSnapshot(url, requestHeadersMap, requestBody, responseHeadersMap, responseBody, (int) responseCode);
|
|
202
166
|
}
|
|
203
167
|
|
|
204
168
|
final OnCompleteCallback<NetworkLogSnapshot> callback = callbackMap.get(callbackID);
|
|
205
169
|
if (callback != null) {
|
|
206
170
|
callback.onComplete(modifiedSnapshot);
|
|
207
171
|
callbackMap.remove(callbackID);
|
|
208
|
-
Log.d(NET_TAG, "[updateNetworkLogSnapshot] Callback invoked and removed for " + callbackID + ", remaining=" + callbackMap.size());
|
|
209
|
-
} else {
|
|
210
|
-
Log.e(NET_TAG, "[updateNetworkLogSnapshot] No callback found for callbackID=" + callbackID + " — possible leak or duplicate call, mapKeys=" + callbackMap.keySet());
|
|
211
172
|
}
|
|
212
173
|
} catch (Exception e) {
|
|
213
|
-
|
|
174
|
+
// Reject the promise to indicate an error occurred
|
|
214
175
|
Log.e("IB-CP-Bridge", "LuciqNetworkLogger.updateNetworkLogSnapshot failed to parse the network snapshot object.");
|
|
215
176
|
}
|
|
216
177
|
}
|
|
178
|
+
|
|
179
|
+
@ReactMethod
|
|
180
|
+
public void setNetworkLoggingRequestFilterPredicateIOS(String id, boolean value) {
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
@ReactMethod
|
|
184
|
+
public void forceStartNetworkLoggingIOS() {
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
@ReactMethod
|
|
188
|
+
public void forceStopNetworkLoggingIOS() {
|
|
189
|
+
}
|
|
217
190
|
}
|
|
@@ -83,10 +83,9 @@ 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 RNLuciqBaseSpec {
|
|
87
87
|
|
|
88
88
|
private static final String TAG = "Luciq-RN-Core";
|
|
89
|
-
private static final String NET_TAG = "LCQ-RN-NET";
|
|
90
89
|
|
|
91
90
|
private LuciqCustomTextPlaceHolder placeHolders;
|
|
92
91
|
private static Report currentReport;
|
|
@@ -112,16 +111,6 @@ public class RNLuciqReactnativeModule extends EventEmitterModule {
|
|
|
112
111
|
}
|
|
113
112
|
|
|
114
113
|
|
|
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
|
-
|
|
125
114
|
/**
|
|
126
115
|
* Enables or disables Luciq functionality.
|
|
127
116
|
* @param isEnabled A boolean to enable/disable Luciq.
|
|
@@ -164,7 +153,6 @@ public class RNLuciqReactnativeModule extends EventEmitterModule {
|
|
|
164
153
|
|
|
165
154
|
|
|
166
155
|
) {
|
|
167
|
-
Log.d(NET_TAG, "[init] Called — logLevel=" + logLevel + ", useNativeNetworkInterception=" + useNativeNetworkInterception + ", codePushVersion=" + codePushVersion + ", appVariant=" + appVariant);
|
|
168
156
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
169
157
|
@Override
|
|
170
158
|
public void run() {
|
|
@@ -206,7 +194,6 @@ public class RNLuciqReactnativeModule extends EventEmitterModule {
|
|
|
206
194
|
}
|
|
207
195
|
|
|
208
196
|
builder.build();
|
|
209
|
-
Log.d(NET_TAG, "[init] SDK build complete");
|
|
210
197
|
}
|
|
211
198
|
});
|
|
212
199
|
}
|
|
@@ -706,7 +693,7 @@ public class RNLuciqReactnativeModule extends EventEmitterModule {
|
|
|
706
693
|
* report.
|
|
707
694
|
*/
|
|
708
695
|
@ReactMethod
|
|
709
|
-
public void setPreSendingHandler(
|
|
696
|
+
public void setPreSendingHandler() {
|
|
710
697
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
711
698
|
@Override
|
|
712
699
|
public void run() {
|
|
@@ -972,7 +959,6 @@ public class RNLuciqReactnativeModule extends EventEmitterModule {
|
|
|
972
959
|
final String requestHeaders,
|
|
973
960
|
final String responseHeaders,
|
|
974
961
|
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));
|
|
976
962
|
try {
|
|
977
963
|
final String date = String.valueOf(System.currentTimeMillis());
|
|
978
964
|
|
|
@@ -989,14 +975,11 @@ public class RNLuciqReactnativeModule extends EventEmitterModule {
|
|
|
989
975
|
networkLog.setRequestHeaders(requestHeaders);
|
|
990
976
|
networkLog.setResponseHeaders(responseHeaders);
|
|
991
977
|
} catch (OutOfMemoryError | Exception exception) {
|
|
992
|
-
Log.e(NET_TAG, "[networkLogAndroid-Core] OOM/Error setting log contents: " + exception.getMessage() + " for " + method + " " + url);
|
|
993
978
|
Log.d(TAG, "Error: " + exception.getMessage() + "while trying to set network log contents (request body, response body, request headers, and response headers).");
|
|
994
979
|
}
|
|
995
980
|
|
|
996
981
|
networkLog.insert();
|
|
997
|
-
Log.d(NET_TAG, "[networkLogAndroid-Core] Successfully inserted NetworkLog: " + method + " " + url);
|
|
998
982
|
} catch (OutOfMemoryError | Exception exception) {
|
|
999
|
-
Log.e(NET_TAG, "[networkLogAndroid-Core] OOM/Error inserting network log: " + exception.getMessage() + " for " + method + " " + url);
|
|
1000
983
|
Log.d(TAG, "Error: " + exception.getMessage() + "while trying to insert a network log");
|
|
1001
984
|
}
|
|
1002
985
|
}
|
|
@@ -1024,12 +1007,14 @@ public class RNLuciqReactnativeModule extends EventEmitterModule {
|
|
|
1024
1007
|
|
|
1025
1008
|
|
|
1026
1009
|
@ReactMethod
|
|
1027
|
-
public void addPrivateView(final
|
|
1010
|
+
public void addPrivateView(@Nullable final Double reactTag) {
|
|
1011
|
+
if (reactTag == null) return;
|
|
1012
|
+
final int tag = reactTag.intValue();
|
|
1028
1013
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
1029
1014
|
@Override
|
|
1030
1015
|
public void run() {
|
|
1031
1016
|
try {
|
|
1032
|
-
final View view = resolveReactView(
|
|
1017
|
+
final View view = resolveReactView(tag);
|
|
1033
1018
|
|
|
1034
1019
|
if(view !=null){
|
|
1035
1020
|
Luciq.addPrivateViews(view);
|
|
@@ -1042,12 +1027,14 @@ public class RNLuciqReactnativeModule extends EventEmitterModule {
|
|
|
1042
1027
|
}
|
|
1043
1028
|
|
|
1044
1029
|
@ReactMethod
|
|
1045
|
-
public void removePrivateView(final
|
|
1030
|
+
public void removePrivateView(@Nullable final Double reactTag) {
|
|
1031
|
+
if (reactTag == null) return;
|
|
1032
|
+
final int tag = reactTag.intValue();
|
|
1046
1033
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
1047
1034
|
@Override
|
|
1048
1035
|
public void run() {
|
|
1049
1036
|
try {
|
|
1050
|
-
final View view = resolveReactView(
|
|
1037
|
+
final View view = resolveReactView(tag);
|
|
1051
1038
|
if(view !=null){
|
|
1052
1039
|
|
|
1053
1040
|
Luciq.removePrivateViews(view);
|
|
@@ -1177,7 +1164,7 @@ public class RNLuciqReactnativeModule extends EventEmitterModule {
|
|
|
1177
1164
|
*/
|
|
1178
1165
|
@ReactMethod
|
|
1179
1166
|
public void registerFeatureFlagsChangeListener() {
|
|
1180
|
-
|
|
1167
|
+
|
|
1181
1168
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
1182
1169
|
@Override
|
|
1183
1170
|
public void run() {
|
|
@@ -1185,7 +1172,6 @@ public class RNLuciqReactnativeModule extends EventEmitterModule {
|
|
|
1185
1172
|
InternalCore.INSTANCE._setFeaturesStateListener(new FeaturesStateListener() {
|
|
1186
1173
|
@Override
|
|
1187
1174
|
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());
|
|
1189
1175
|
WritableMap params = Arguments.createMap();
|
|
1190
1176
|
params.putBoolean("isW3ExternalTraceIDEnabled", featuresState.isW3CExternalTraceIdEnabled());
|
|
1191
1177
|
params.putBoolean("isW3ExternalGeneratedHeaderEnabled", featuresState.isAttachingGeneratedHeaderEnabled());
|
|
@@ -1193,11 +1179,9 @@ public class RNLuciqReactnativeModule extends EventEmitterModule {
|
|
|
1193
1179
|
params.putInt("networkBodyLimit",featuresState.getNetworkLogCharLimit());
|
|
1194
1180
|
|
|
1195
1181
|
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);
|
|
1197
1182
|
}
|
|
1198
1183
|
});
|
|
1199
1184
|
} catch (Exception e) {
|
|
1200
|
-
Log.e(NET_TAG, "[registerFeatureFlagsChangeListener] Failed to register listener", e);
|
|
1201
1185
|
e.printStackTrace();
|
|
1202
1186
|
}
|
|
1203
1187
|
|
|
@@ -1212,16 +1196,13 @@ public class RNLuciqReactnativeModule extends EventEmitterModule {
|
|
|
1212
1196
|
*/
|
|
1213
1197
|
@ReactMethod
|
|
1214
1198
|
public void isW3ExternalTraceIDEnabled(Promise promise) {
|
|
1215
|
-
|
|
1199
|
+
|
|
1216
1200
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
1217
1201
|
@Override
|
|
1218
1202
|
public void run() {
|
|
1219
1203
|
try {
|
|
1220
|
-
|
|
1221
|
-
Log.d(NET_TAG, "[isW3ExternalTraceIDEnabled] Result=" + enabled);
|
|
1222
|
-
promise.resolve(enabled);
|
|
1204
|
+
promise.resolve(InternalCore.INSTANCE._isFeatureEnabled(CoreFeature.W3C_EXTERNAL_TRACE_ID));
|
|
1223
1205
|
} catch (Exception e) {
|
|
1224
|
-
Log.e(NET_TAG, "[isW3ExternalTraceIDEnabled] Error querying flag", e);
|
|
1225
1206
|
e.printStackTrace();
|
|
1226
1207
|
promise.resolve(false);
|
|
1227
1208
|
}
|
|
@@ -1237,16 +1218,13 @@ public class RNLuciqReactnativeModule extends EventEmitterModule {
|
|
|
1237
1218
|
*/
|
|
1238
1219
|
@ReactMethod
|
|
1239
1220
|
public void isW3ExternalGeneratedHeaderEnabled(Promise promise) {
|
|
1240
|
-
|
|
1221
|
+
|
|
1241
1222
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
1242
1223
|
@Override
|
|
1243
1224
|
public void run() {
|
|
1244
1225
|
try {
|
|
1245
|
-
|
|
1246
|
-
Log.d(NET_TAG, "[isW3ExternalGeneratedHeaderEnabled] Result=" + enabled);
|
|
1247
|
-
promise.resolve(enabled);
|
|
1226
|
+
promise.resolve(InternalCore.INSTANCE._isFeatureEnabled(CoreFeature.W3C_ATTACHING_GENERATED_HEADER));
|
|
1248
1227
|
} catch (Exception e) {
|
|
1249
|
-
Log.e(NET_TAG, "[isW3ExternalGeneratedHeaderEnabled] Error querying flag", e);
|
|
1250
1228
|
e.printStackTrace();
|
|
1251
1229
|
promise.resolve(false);
|
|
1252
1230
|
}
|
|
@@ -1261,16 +1239,13 @@ public class RNLuciqReactnativeModule extends EventEmitterModule {
|
|
|
1261
1239
|
*/
|
|
1262
1240
|
@ReactMethod
|
|
1263
1241
|
public void isW3CaughtHeaderEnabled(Promise promise) {
|
|
1264
|
-
|
|
1242
|
+
|
|
1265
1243
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
1266
1244
|
@Override
|
|
1267
1245
|
public void run() {
|
|
1268
1246
|
try {
|
|
1269
|
-
|
|
1270
|
-
Log.d(NET_TAG, "[isW3CaughtHeaderEnabled] Result=" + enabled);
|
|
1271
|
-
promise.resolve(enabled);
|
|
1247
|
+
promise.resolve(InternalCore.INSTANCE._isFeatureEnabled(CoreFeature.W3C_ATTACHING_CAPTURED_HEADER));
|
|
1272
1248
|
} catch (Exception e) {
|
|
1273
|
-
Log.e(NET_TAG, "[isW3CaughtHeaderEnabled] Error querying flag", e);
|
|
1274
1249
|
e.printStackTrace();
|
|
1275
1250
|
promise.resolve(false);
|
|
1276
1251
|
}
|
|
@@ -1300,6 +1275,15 @@ public class RNLuciqReactnativeModule extends EventEmitterModule {
|
|
|
1300
1275
|
return constants;
|
|
1301
1276
|
}
|
|
1302
1277
|
|
|
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
|
+
|
|
1303
1287
|
|
|
1304
1288
|
@ReactMethod
|
|
1305
1289
|
public void setOnFeaturesUpdatedListener() {
|
|
@@ -1364,16 +1348,13 @@ public class RNLuciqReactnativeModule extends EventEmitterModule {
|
|
|
1364
1348
|
*/
|
|
1365
1349
|
@ReactMethod
|
|
1366
1350
|
public void getNetworkBodyMaxSize(Promise promise) {
|
|
1367
|
-
|
|
1351
|
+
|
|
1368
1352
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
1369
1353
|
@Override
|
|
1370
1354
|
public void run() {
|
|
1371
1355
|
try {
|
|
1372
|
-
|
|
1373
|
-
Log.d(NET_TAG, "[getNetworkBodyMaxSize] Result=" + limit);
|
|
1374
|
-
promise.resolve(limit);
|
|
1356
|
+
promise.resolve(InternalCore.INSTANCE.get_networkLogCharLimit());
|
|
1375
1357
|
} catch (Exception e) {
|
|
1376
|
-
Log.e(NET_TAG, "[getNetworkBodyMaxSize] Error querying limit", e);
|
|
1377
1358
|
e.printStackTrace();
|
|
1378
1359
|
promise.resolve(false);
|
|
1379
1360
|
}
|
|
@@ -1395,6 +1376,49 @@ public class RNLuciqReactnativeModule extends EventEmitterModule {
|
|
|
1395
1376
|
e.printStackTrace();
|
|
1396
1377
|
}
|
|
1397
1378
|
}
|
|
1379
|
+
|
|
1380
|
+
/**
|
|
1381
|
+
* Enables or disables WebView monitoring.
|
|
1382
|
+
*
|
|
1383
|
+
* @param isEnabled A boolean to enable/disable WebView monitoring.
|
|
1384
|
+
*/
|
|
1385
|
+
@ReactMethod
|
|
1386
|
+
public void setWebViewMonitoringEnabled(final boolean isEnabled) {
|
|
1387
|
+
try {
|
|
1388
|
+
Luciq.setWebViewMonitoringEnabled(isEnabled);
|
|
1389
|
+
} catch (Exception e) {
|
|
1390
|
+
e.printStackTrace();
|
|
1391
|
+
}
|
|
1392
|
+
}
|
|
1393
|
+
|
|
1394
|
+
/**
|
|
1395
|
+
* Enables or disables WebView network tracking.
|
|
1396
|
+
*
|
|
1397
|
+
* @param isEnabled A boolean to enable/disable WebView network tracking.
|
|
1398
|
+
*/
|
|
1399
|
+
@ReactMethod
|
|
1400
|
+
public void setWebViewNetworkTrackingEnabled(final boolean isEnabled) {
|
|
1401
|
+
try {
|
|
1402
|
+
Luciq.setWebViewNetworkTrackingEnabled(isEnabled);
|
|
1403
|
+
} catch (Exception e) {
|
|
1404
|
+
e.printStackTrace();
|
|
1405
|
+
}
|
|
1406
|
+
}
|
|
1407
|
+
|
|
1408
|
+
/**
|
|
1409
|
+
* Enables or disables WebView user interactions tracking.
|
|
1410
|
+
*
|
|
1411
|
+
* @param isEnabled A boolean to enable/disable WebView user interactions tracking.
|
|
1412
|
+
*/
|
|
1413
|
+
@ReactMethod
|
|
1414
|
+
public void setWebViewUserInteractionsTrackingEnabled(final boolean isEnabled) {
|
|
1415
|
+
try {
|
|
1416
|
+
Luciq.setWebViewUserInteractionsTrackingEnabled(isEnabled);
|
|
1417
|
+
} catch (Exception e) {
|
|
1418
|
+
e.printStackTrace();
|
|
1419
|
+
}
|
|
1420
|
+
}
|
|
1421
|
+
|
|
1398
1422
|
/**
|
|
1399
1423
|
* Sets the theme for Luciq using a configuration object.
|
|
1400
1424
|
*
|
|
@@ -1650,4 +1674,54 @@ private String getFileName(String path) {
|
|
|
1650
1674
|
}
|
|
1651
1675
|
});
|
|
1652
1676
|
}
|
|
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
|
+
}
|
|
1653
1727
|
}
|
|
@@ -20,6 +20,8 @@ public class RNLuciqReactnativePackage implements ReactPackage {
|
|
|
20
20
|
@NonNull
|
|
21
21
|
@Override
|
|
22
22
|
public List<NativeModule> createNativeModules(@NonNull ReactApplicationContext reactContext) {
|
|
23
|
+
RNLuciq.getInstance().setCurrentPlatform();
|
|
24
|
+
|
|
23
25
|
List<NativeModule> modules = new ArrayList<>();
|
|
24
26
|
modules.add(new RNLuciqReactnativeModule(reactContext));
|
|
25
27
|
modules.add(new RNLuciqBugReportingModule(reactContext));
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
package ai.luciq.reactlibrary;
|
|
2
2
|
|
|
3
|
-
import com.facebook.react.bridge.Callback;
|
|
4
3
|
import com.facebook.react.bridge.Promise;
|
|
5
4
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
6
5
|
import com.facebook.react.bridge.ReactMethod;
|
|
@@ -9,14 +8,13 @@ import com.facebook.react.bridge.ReadableType;
|
|
|
9
8
|
import com.facebook.react.bridge.ReadableMapKeySetIterator;
|
|
10
9
|
import ai.luciq.chat.Replies;
|
|
11
10
|
import ai.luciq.library.Feature;
|
|
12
|
-
import ai.luciq.reactlibrary.utils.EventEmitterModule;
|
|
13
11
|
import ai.luciq.reactlibrary.utils.MainThreadHandler;
|
|
14
12
|
|
|
15
13
|
import javax.annotation.Nonnull;
|
|
16
14
|
import java.util.HashMap;
|
|
17
15
|
import java.util.Map;
|
|
18
16
|
|
|
19
|
-
public class RNLuciqRepliesModule extends
|
|
17
|
+
public class RNLuciqRepliesModule extends RNLuciqRepliesBaseSpec {
|
|
20
18
|
|
|
21
19
|
public RNLuciqRepliesModule(ReactApplicationContext reactApplicationContext) {
|
|
22
20
|
super(reactApplicationContext);
|
|
@@ -28,16 +26,6 @@ public class RNLuciqRepliesModule extends EventEmitterModule {
|
|
|
28
26
|
return "LCQReplies";
|
|
29
27
|
}
|
|
30
28
|
|
|
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
|
-
|
|
41
29
|
@ReactMethod
|
|
42
30
|
public void setEnabled(final boolean isEnabled) {
|
|
43
31
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
@@ -222,12 +210,12 @@ public class RNLuciqRepliesModule extends EventEmitterModule {
|
|
|
222
210
|
* @param notificationIcon the notification icon resource ID
|
|
223
211
|
*/
|
|
224
212
|
@ReactMethod
|
|
225
|
-
public void setNotificationIcon(final
|
|
213
|
+
public void setNotificationIcon(final double notificationIcon) {
|
|
226
214
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
227
215
|
@Override
|
|
228
216
|
public void run() {
|
|
229
217
|
try {
|
|
230
|
-
Replies.setNotificationIcon(notificationIcon);
|
|
218
|
+
Replies.setNotificationIcon((int) notificationIcon);
|
|
231
219
|
} catch (Exception e) {
|
|
232
220
|
e.printStackTrace();
|
|
233
221
|
}
|
|
@@ -277,7 +265,7 @@ public class RNLuciqRepliesModule extends EventEmitterModule {
|
|
|
277
265
|
}
|
|
278
266
|
|
|
279
267
|
@ReactMethod
|
|
280
|
-
public void setOnNewReplyReceivedHandler(
|
|
268
|
+
public void setOnNewReplyReceivedHandler() {
|
|
281
269
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
282
270
|
@Override
|
|
283
271
|
public void run() {
|
|
@@ -16,7 +16,6 @@ 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;
|
|
20
19
|
import ai.luciq.reactlibrary.utils.MainThreadHandler;
|
|
21
20
|
import android.util.Log;
|
|
22
21
|
import java.util.ArrayList;
|
|
@@ -25,22 +24,12 @@ import java.util.concurrent.CountDownLatch;
|
|
|
25
24
|
|
|
26
25
|
import javax.annotation.Nonnull;
|
|
27
26
|
|
|
28
|
-
public class RNLuciqSessionReplayModule extends
|
|
27
|
+
public class RNLuciqSessionReplayModule extends RNLuciqSessionReplayBaseSpec {
|
|
29
28
|
|
|
30
29
|
public RNLuciqSessionReplayModule(ReactApplicationContext reactApplicationContext) {
|
|
31
30
|
super(reactApplicationContext);
|
|
32
31
|
}
|
|
33
32
|
|
|
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
|
-
|
|
44
33
|
@Nonnull
|
|
45
34
|
@Override
|
|
46
35
|
public String getName() {
|
|
@@ -168,7 +157,7 @@ public class RNLuciqSessionReplayModule extends EventEmitterModule {
|
|
|
168
157
|
private boolean shouldSync = true;
|
|
169
158
|
private CountDownLatch latch;
|
|
170
159
|
@ReactMethod
|
|
171
|
-
public void setSyncCallback() {
|
|
160
|
+
public void setSyncCallback(final Promise promise) {
|
|
172
161
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
173
162
|
@Override
|
|
174
163
|
public void run() {
|
|
@@ -195,7 +184,7 @@ public class RNLuciqSessionReplayModule extends EventEmitterModule {
|
|
|
195
184
|
catch(Exception e){
|
|
196
185
|
e.printStackTrace();
|
|
197
186
|
}
|
|
198
|
-
|
|
187
|
+
promise.resolve(null);
|
|
199
188
|
}
|
|
200
189
|
});
|
|
201
190
|
}
|
|
@@ -248,12 +237,12 @@ public class RNLuciqSessionReplayModule extends EventEmitterModule {
|
|
|
248
237
|
}
|
|
249
238
|
|
|
250
239
|
@ReactMethod
|
|
251
|
-
public void setScreenshotCaptureInterval(final
|
|
240
|
+
public void setScreenshotCaptureInterval(final double intervalMs) {
|
|
252
241
|
MainThreadHandler.runOnMainThread(new Runnable() {
|
|
253
242
|
@Override
|
|
254
243
|
public void run() {
|
|
255
244
|
try {
|
|
256
|
-
SessionReplay.setScreenshotCaptureInterval(intervalMs);
|
|
245
|
+
SessionReplay.setScreenshotCaptureInterval((int) intervalMs);
|
|
257
246
|
} catch (Exception e) {
|
|
258
247
|
e.printStackTrace();
|
|
259
248
|
}
|