Skip to content

Commit d679ad6

Browse files
chore: add NetworkLogger module
1 parent 82df001 commit d679ad6

18 files changed

+468
-252
lines changed

android/src/main/java/com/instabug/reactlibrary/RNInstabugAPMModule.java

Lines changed: 0 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -373,65 +373,4 @@ private void networkLogAndroid(final double requestStartTime,
373373
e.printStackTrace();
374374
}
375375
}
376-
377-
/**
378-
* Get first time Value of [cp_native_interception_enabled] flag
379-
*/
380-
@ReactMethod
381-
public void isNativeInterceptionEnabled(Promise promise) {
382-
MainThreadHandler.runOnMainThread(new Runnable() {
383-
@Override
384-
public void run() {
385-
try {
386-
promise.resolve(true);
387-
} catch (Exception e) {
388-
e.printStackTrace();
389-
promise.resolve(false);
390-
}
391-
392-
}
393-
});
394-
}
395-
396-
/**
397-
* Indicate if user added APM Network plugin or not
398-
* [true] means user added the APM plugin
399-
* [false] means not
400-
*/
401-
@ReactMethod
402-
public void hasAPMNetworkPlugin(Promise promise) {
403-
MainThreadHandler.runOnMainThread(new Runnable() {
404-
@Override
405-
public void run() {
406-
try {
407-
promise.resolve(false);
408-
} catch (Exception e) {
409-
e.printStackTrace();
410-
promise.resolve(false);
411-
}
412-
413-
}
414-
});
415-
}
416-
417-
/**
418-
* Indicate APM is enabled & Network logging is enabled
419-
* [true] ApmEnabled && NetworkEnabled
420-
* [false] otherwise
421-
*/
422-
@ReactMethod
423-
public void isAPMNetworkEnabled(Promise promise) {
424-
MainThreadHandler.runOnMainThread(new Runnable() {
425-
@Override
426-
public void run() {
427-
try {
428-
promise.resolve(false);
429-
} catch (Exception e) {
430-
e.printStackTrace();
431-
promise.resolve(false);
432-
}
433-
434-
}
435-
});
436-
}
437376
}
Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
package com.instabug.reactlibrary;
2+
3+
4+
import androidx.annotation.NonNull;
5+
6+
//import com.facebook.react.bridge.Arguments;
7+
import com.facebook.react.bridge.Promise;
8+
import com.facebook.react.bridge.ReactApplicationContext;
9+
import com.facebook.react.bridge.ReactMethod;
10+
//import com.facebook.react.bridge.WritableMap;
11+
//import com.instabug.apm.InternalAPM;
12+
//import com.instabug.apm.sanitization.OnCompleteCallback;
13+
//import com.instabug.apm.sanitization.VoidSanitizer;
14+
//import com.instabug.library.logging.listeners.networklogs.NetworkLogSnapshot;
15+
import com.instabug.reactlibrary.utils.EventEmitterModule;
16+
import com.instabug.reactlibrary.utils.MainThreadHandler;
17+
//
18+
//import org.json.JSONException;
19+
//import org.json.JSONObject;
20+
//
21+
//import java.util.concurrent.ConcurrentHashMap;
22+
23+
24+
public class RNInstabugNetworkLoggerModule extends EventEmitterModule {
25+
26+
public RNInstabugNetworkLoggerModule(ReactApplicationContext reactContext) {
27+
super(reactContext);
28+
}
29+
30+
// private final ConcurrentHashMap<Integer, OnCompleteCallback<NetworkLogSnapshot>> callbackMap = new ConcurrentHashMap<Integer, OnCompleteCallback<NetworkLogSnapshot>>();
31+
32+
@NonNull
33+
@Override
34+
public String getName() {
35+
return "IBGNetworkLogger";
36+
}
37+
38+
39+
@ReactMethod
40+
public void addListener(String event) {
41+
super.addListener(event);
42+
}
43+
44+
@ReactMethod
45+
public void removeListeners(Integer count) {
46+
super.removeListeners(count);
47+
}
48+
49+
/**
50+
* Get first time Value of [cp_native_interception_enabled] flag
51+
*/
52+
@ReactMethod
53+
public void isNativeInterceptionEnabled(Promise promise) {
54+
MainThreadHandler.runOnMainThread(new Runnable() {
55+
@Override
56+
public void run() {
57+
try {
58+
promise.resolve(true);
59+
} catch (Exception e) {
60+
e.printStackTrace();
61+
promise.resolve(false);
62+
}
63+
64+
}
65+
});
66+
}
67+
68+
/**
69+
* Indicate if user added APM Network plugin or not
70+
* [true] means user added the APM plugin
71+
* [false] means not
72+
*/
73+
@ReactMethod
74+
public void hasAPMNetworkPlugin(Promise promise) {
75+
MainThreadHandler.runOnMainThread(new Runnable() {
76+
@Override
77+
public void run() {
78+
try {
79+
promise.resolve(true);
80+
} catch (Exception e) {
81+
e.printStackTrace();
82+
promise.resolve(false);
83+
}
84+
85+
}
86+
});
87+
}
88+
89+
/**
90+
* Indicate APM is enabled & Network logging is enabled
91+
* [true] ApmEnabled && NetworkEnabled
92+
* [false] otherwise
93+
*/
94+
@ReactMethod
95+
public void isAPMNetworkEnabled(Promise promise) {
96+
MainThreadHandler.runOnMainThread(new Runnable() {
97+
@Override
98+
public void run() {
99+
try {
100+
promise.resolve(true);
101+
} catch (Exception e) {
102+
e.printStackTrace();
103+
promise.resolve(false);
104+
}
105+
106+
}
107+
});
108+
}
109+
110+
111+
112+
// @ReactMethod
113+
// public void registerNetworkLogsListener() {
114+
// MainThreadHandler.runOnMainThread(new Runnable() {
115+
// @Override
116+
// public void run() {
117+
// InternalAPM._registerNetworkLogSanitizer(new VoidSanitizer<NetworkLogSnapshot>() {
118+
// @Override
119+
// public void sanitize(NetworkLogSnapshot networkLogSnapshot, @NonNull OnCompleteCallback<NetworkLogSnapshot> onCompleteCallback) {
120+
// final int id = onCompleteCallback.hashCode();
121+
// callbackMap.put(id, onCompleteCallback);
122+
//
123+
// WritableMap networkSnapshotParams = Arguments.createMap();
124+
// networkSnapshotParams.putInt("id", id);
125+
// networkSnapshotParams.putString("url", networkLogSnapshot.getUrl());
126+
// networkSnapshotParams.putInt("responseCode", networkLogSnapshot.getResponseCode());
127+
//
128+
// sendEvent("IBGNetworkLoggerHandler", networkSnapshotParams);
129+
//
130+
// }
131+
// });
132+
// }
133+
// });
134+
// }
135+
//
136+
// @ReactMethod
137+
// protected void updateNetworkLogSnapshot(String jsonString) {
138+
//
139+
// JSONObject newJSONObject = null;
140+
// try {
141+
// newJSONObject = new JSONObject(jsonString);
142+
// } catch (JSONException e) {
143+
// throw new RuntimeException(e);
144+
// }
145+
// final Integer ID = newJSONObject.optInt("id");
146+
// final NetworkLogSnapshot modifiedSnapshot = new NetworkLogSnapshot(
147+
// newJSONObject.optString("url"),
148+
// null,
149+
// null,
150+
// null,
151+
// null,
152+
// newJSONObject.optInt("responseCode")
153+
// );
154+
//
155+
// final OnCompleteCallback<NetworkLogSnapshot> callback = callbackMap.get(ID);
156+
// if (callback != null) {
157+
// callback.onComplete(null);
158+
// }
159+
// callbackMap.remove(ID);
160+
//
161+
// }
162+
}

android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativeModule.java

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1167,57 +1167,4 @@ public Map<String, Object> getConstants() {
11671167

11681168
return constants;
11691169
}
1170-
1171-
// private final ConcurrentHashMap<Integer, OnCompleteCallback<NetworkLogSnapshot>> callbackMap = new ConcurrentHashMap<Integer, OnCompleteCallback<NetworkLogSnapshot>>();
1172-
//
1173-
// @ReactMethod
1174-
// public void registerNetworkLogsListener() {
1175-
// MainThreadHandler.runOnMainThread(new Runnable() {
1176-
// @Override
1177-
// public void run() {
1178-
// InternalAPM._registerNetworkLogSanitizer(new VoidSanitizer<NetworkLogSnapshot>() {
1179-
// @Override
1180-
// public void sanitize(NetworkLogSnapshot networkLogSnapshot, @NonNull OnCompleteCallback<NetworkLogSnapshot> onCompleteCallback) {
1181-
// final int id = onCompleteCallback.hashCode();
1182-
// callbackMap.put(id, onCompleteCallback);
1183-
//
1184-
// WritableMap networkSnapshotParams = Arguments.createMap();
1185-
// networkSnapshotParams.putInt("id", id);
1186-
// networkSnapshotParams.putString("url", networkLogSnapshot.getUrl());
1187-
// networkSnapshotParams.putInt("responseCode", networkLogSnapshot.getResponseCode());
1188-
//
1189-
// sendEvent("IBGNetworkLoggerHandler", networkSnapshotParams);
1190-
//
1191-
// }
1192-
// });
1193-
// }
1194-
// });
1195-
// }
1196-
//
1197-
// @ReactMethod
1198-
// protected void updateNetworkLogSnapshot(String jsonString) {
1199-
//
1200-
// JSONObject newJSONObject = null;
1201-
// try {
1202-
// newJSONObject = new JSONObject(jsonString);
1203-
// } catch (JSONException e) {
1204-
// throw new RuntimeException(e);
1205-
// }
1206-
// final Integer ID = newJSONObject.optInt("id");
1207-
// final NetworkLogSnapshot modifiedSnapshot = new NetworkLogSnapshot(
1208-
// newJSONObject.optString("url"),
1209-
// null,
1210-
// null,
1211-
// null,
1212-
// null,
1213-
// newJSONObject.optInt("responseCode")
1214-
// );
1215-
//
1216-
// final OnCompleteCallback<NetworkLogSnapshot> callback = callbackMap.get(ID);
1217-
// if (callback != null) {
1218-
// callback.onComplete(null);
1219-
// }
1220-
// callbackMap.remove(ID);
1221-
//
1222-
// }
12231170
}

android/src/main/java/com/instabug/reactlibrary/RNInstabugReactnativePackage.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public List<NativeModule> createNativeModules(@NonNull ReactApplicationContext r
2929
modules.add(new RNInstabugRepliesModule(reactContext));
3030
modules.add(new RNInstabugAPMModule(reactContext));
3131
modules.add(new RNInstabugSessionReplayModule(reactContext));
32+
modules.add(new RNInstabugNetworkLoggerModule(reactContext));
3233
return modules;
3334
}
3435

examples/default/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"postinstall": "patch-package"
1111
},
1212
"dependencies": {
13+
"@apollo/client": "^3.7.0",
1314
"@react-native-community/clipboard": "^1.5.1",
1415
"@react-native-community/slider": "^4.4.3",
1516
"@react-navigation/bottom-tabs": "^6.5.7",

examples/default/src/App.tsx

Lines changed: 5 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import Instabug, {
88
InvocationEvent,
99
LogLevel,
1010
NetworkInterceptionMode,
11-
NetworkLogger,
1211
ReproStepsMode,
1312
} from 'instabug-reactnative';
1413
import { NativeBaseProvider } from 'native-base';
@@ -18,27 +17,11 @@ import { nativeBaseTheme } from './theme/nativeBaseTheme';
1817
import { navigationTheme } from './theme/navigationTheme';
1918

2019
// import { QueryClient } from 'react-query';
21-
import {
22-
ApolloClient,
23-
ApolloLink,
24-
ApolloProvider,
25-
from,
26-
HttpLink,
27-
InMemoryCache,
28-
} from '@apollo/client';
29-
// import { NativeInstabug } from '../../../src/native/NativeInstabug';
30-
//
31-
// const queryClient = new QueryClient();
20+
import { QueryClient, QueryClientProvider } from 'react-query';
3221

33-
//Setting up the handler
34-
const IBGApolloLink = new ApolloLink(NetworkLogger.apolloLinkRequestHandler);
22+
const queryClient = new QueryClient();
3523

36-
//Sample code
37-
const httpLink = new HttpLink({ uri: 'https://countries.trevorblades.com/graphql' });
38-
const apolloQueryClient = new ApolloClient({
39-
cache: new InMemoryCache(),
40-
link: from([IBGApolloLink, httpLink]),
41-
});
24+
//Setting up the handler
4225

4326
export const App: React.FC = () => {
4427
useEffect(() => {
@@ -51,13 +34,6 @@ export const App: React.FC = () => {
5134
});
5235
CrashReporting.setNDKCrashesEnabled(true);
5336

54-
// NetworkLogger.setNetworkDataObfuscationHandler(async (networkData) => {
55-
// networkData.url = `${networkData.url}/RN/obfuscated`;
56-
// return networkData;
57-
// });
58-
59-
// NetworkLogger.setRequestFilterExpression('true');
60-
6137
Instabug.setReproStepsConfig({
6238
all: ReproStepsMode.enabled,
6339
});
@@ -66,13 +42,11 @@ export const App: React.FC = () => {
6642
return (
6743
<GestureHandlerRootView style={styles.root}>
6844
<NativeBaseProvider theme={nativeBaseTheme}>
69-
{/*<QueryClientProvider client={queryClient}>*/}
70-
<ApolloProvider client={apolloQueryClient}>
45+
<QueryClientProvider client={queryClient}>
7146
<NavigationContainer onStateChange={Instabug.onStateChange} theme={navigationTheme}>
7247
<RootTabNavigator />
7348
</NavigationContainer>
74-
</ApolloProvider>
75-
{/*</QueryClientProvider>*/}
49+
</QueryClientProvider>
7650
</NativeBaseProvider>
7751
</GestureHandlerRootView>
7852
);

0 commit comments

Comments
 (0)