@@ -2,7 +2,13 @@ import type { RequestHandler } from '@apollo/client';
22
33import InstabugConstants from '../utils/InstabugConstants' ;
44import xhr , { NetworkData , ProgressCallback } from '../utils/XhrNetworkInterceptor' ;
5- import { isContentTypeNotAllowed , reportNetworkLog } from '../utils/InstabugUtils' ;
5+ import {
6+ isContentTypeNotAllowed ,
7+ registerFilteringAndObfuscationListener ,
8+ registerFilteringListener ,
9+ registerObfuscationListener ,
10+ reportNetworkLog ,
11+ } from '../utils/InstabugUtils' ;
612import {
713 NativeNetworkLogger ,
814 NativeNetworkLoggerEvent ,
@@ -18,6 +24,7 @@ let _networkDataObfuscationHandler: NetworkDataObfuscationHandler | null | undef
1824let _requestFilterExpression = 'false' ;
1925let _isNativeInterceptionEnabled = false ;
2026let _networkListener : NetworkListenerType | null = null ;
27+ let hasFilterExpression = false ;
2128
2229/**
2330 * Sets whether network logs should be sent with bug reports.
@@ -34,6 +41,9 @@ export const setEnabled = (isEnabled: boolean) => {
3441 try {
3542 if ( _networkDataObfuscationHandler ) {
3643 network = await _networkDataObfuscationHandler ( network ) ;
44+ console . log (
45+ `Andrew: xhr.setOnDoneCallback -> _networkDataObfuscationHandler ${ network . url } ` ,
46+ ) ;
3747 }
3848
3949 if ( network . requestBodySize > InstabugConstants . MAX_NETWORK_BODY_SIZE_IN_BYTES ) {
@@ -82,6 +92,12 @@ export const setNativeInterceptionEnabled = (isEnabled: boolean) => {
8292 _isNativeInterceptionEnabled = isEnabled ;
8393} ;
8494
95+ export const getNetworkDataObfuscationHandler = ( ) => _networkDataObfuscationHandler ;
96+
97+ export const getRequestFilterExpression = ( ) => _requestFilterExpression ;
98+
99+ export const hasRequestFilterExpression = ( ) => hasFilterExpression ;
100+
85101/**
86102 * Obfuscates any response data.
87103 * @param handler
@@ -90,13 +106,16 @@ export const setNetworkDataObfuscationHandler = (
90106 handler ?: NetworkDataObfuscationHandler | null | undefined ,
91107) => {
92108 _networkDataObfuscationHandler = handler ;
93- if ( _isNativeInterceptionEnabled ) {
94- _registerNetworkLogsListener ( NetworkListenerType . obfuscation , async ( networkSnapshot ) => {
95- if ( _networkDataObfuscationHandler ) {
96- networkSnapshot = await _networkDataObfuscationHandler ( networkSnapshot ) ;
97- }
98- NativeNetworkLogger . updateNetworkLogSnapshot ( JSON . stringify ( networkSnapshot ) ) ;
99- } ) ;
109+ if ( _isNativeInterceptionEnabled && Platform . OS === 'ios' ) {
110+ if ( hasFilterExpression ) {
111+ console . log (
112+ 'Andrew: setNetworkDataObfuscationHandler -> registerFilteringAndObfuscationListenerV2' ,
113+ ) ;
114+ registerFilteringAndObfuscationListener ( _requestFilterExpression ) ;
115+ } else {
116+ console . log ( 'Andrew: setNetworkDataObfuscationHandler -> registerObfuscationListener' ) ;
117+ registerObfuscationListener ( ) ;
118+ }
100119 }
101120} ;
102121
@@ -106,23 +125,18 @@ export const setNetworkDataObfuscationHandler = (
106125 */
107126export const setRequestFilterExpression = ( expression : string ) => {
108127 _requestFilterExpression = expression ;
109-
110- if ( _isNativeInterceptionEnabled ) {
111- _registerNetworkLogsListener ( NetworkListenerType . filtering , async ( networkSnapshot ) => {
112- // eslint-disable-next-line no-new-func
113- const predicate = Function ( 'network' , 'return ' + _requestFilterExpression ) ;
114- const value = predicate ( networkSnapshot ) ;
115- if ( Platform . OS === 'ios' ) {
116- // For iOS True == Request will be saved, False == will be ignored
117- NativeNetworkLogger . setNetworkLoggingRequestFilterPredicateIOS ( networkSnapshot . id , ! value ) ;
118- } else {
119- // For Android Setting the [url] to an empty string will ignore the request;
120- if ( value ) {
121- networkSnapshot . url = '' ;
122- NativeNetworkLogger . updateNetworkLogSnapshot ( JSON . stringify ( networkSnapshot ) ) ;
123- }
124- }
125- } ) ;
128+ hasFilterExpression = true ;
129+
130+ if ( _isNativeInterceptionEnabled && Platform . OS === 'ios' ) {
131+ if ( _networkDataObfuscationHandler ) {
132+ console . log (
133+ 'Andrew: setRequestFilterExpression -> registerFilteringAndObfuscationListenerV2' ,
134+ ) ;
135+ registerFilteringAndObfuscationListener ( _requestFilterExpression ) ;
136+ } else {
137+ console . log ( 'Andrew: setRequestFilterExpression -> registerFilteringListener' ) ;
138+ registerFilteringListener ( _requestFilterExpression ) ;
139+ }
126140 }
127141} ;
128142
@@ -148,23 +162,6 @@ export const apolloLinkRequestHandler: RequestHandler = (operation, forward) =>
148162 return forward ( operation ) ;
149163} ;
150164
151- /**
152- * @internal
153- * Exported for internal/testing purposes only.
154- */
155- export function registerNetworkLogsListener (
156- type : NetworkListenerType ,
157- handler ?: ( networkSnapshot : NetworkData ) => void ,
158- ) {
159- if ( process . env . NODE_ENV === 'test' ) {
160- _registerNetworkLogsListener ( type , handler ) ;
161- } else {
162- console . error (
163- `${ InstabugConstants . IBG_APM_TAG } : The \`registerNetworkLogsListener()\` method is intended solely for testing purposes.` ,
164- ) ;
165- }
166- }
167-
168165/**
169166 * @internal
170167 * Exported for internal/testing purposes only.
@@ -179,7 +176,11 @@ export const resetNetworkListener = () => {
179176 }
180177} ;
181178
182- const _registerNetworkLogsListener = (
179+ /**
180+ * @internal
181+ * Exported for internal/testing purposes only.
182+ */
183+ export const registerNetworkLogsListener = (
183184 type : NetworkListenerType ,
184185 handler ?: ( networkSnapshot : NetworkData ) => void ,
185186) => {
0 commit comments