@@ -15,24 +15,29 @@ import {
1515import NetworkLogItem from './NetworkLogItem' ;
1616import RNShake from 'react-native-shake' ;
1717import type { NetworkLog , NetworkLogger } from './types' ;
18- import Icon from './Icon' ;
18+ import FloatingButton from './FloatingButton' ;
19+ import NonFloatingButton from './NonFloatingButton' ;
1920
2021interface NetworkLoggerOverlayProps {
2122 networkLogger : NetworkLogger ;
2223 enableDeviceShake ?: boolean ;
24+ showRequestHeader ?: boolean ;
25+ showResponseHeader ?: boolean ;
26+ draggable ?: boolean ;
2327}
2428
2529export const NetworkLoggerOverlay : React . FC < NetworkLoggerOverlayProps > = ( {
30+ draggable,
2631 networkLogger,
2732 enableDeviceShake,
33+ showRequestHeader,
34+ showResponseHeader,
2835} ) => {
2936 const [ visible , setVisible ] = useState < boolean > ( false ) ;
3037 const [ logs , setLogs ] = useState < NetworkLog [ ] > ( [ ] ) ;
3138 const [ searchTerm , setSearchTerm ] = useState < string > ( '' ) ;
3239 const [ apiFilterActive , setApiFilterActive ] = useState < boolean > ( false ) ;
33- const [ showButton , setShowButton ] = useState < boolean > (
34- enableDeviceShake ? false : true
35- ) ;
40+ const [ showButton , setShowButton ] = useState < boolean > ( ! enableDeviceShake ) ;
3641
3742 useEffect ( ( ) => {
3843 const unsubscribe = networkLogger . subscribe ( setLogs ) ;
@@ -93,7 +98,11 @@ export const NetworkLoggerOverlay: React.FC<NetworkLoggerOverlayProps> = ({
9398 } ;
9499
95100 const renderLogItem : ListRenderItem < NetworkLog > = ( { item } ) => (
96- < NetworkLogItem log = { item } />
101+ < NetworkLogItem
102+ log = { item }
103+ showResponseHeader = { showResponseHeader }
104+ showRequestHeader = { showRequestHeader }
105+ />
97106 ) ;
98107
99108 const renderEmptyList = ( ) : React . ReactElement => (
@@ -102,27 +111,21 @@ export const NetworkLoggerOverlay: React.FC<NetworkLoggerOverlayProps> = ({
102111
103112 const keyExtractor = ( item : NetworkLog ) : string => item . id . toString ( ) ;
104113
114+ const buttonProps = {
115+ enableDeviceShake,
116+ hideIcon : handleCloseIcon ,
117+ openModal : handleModalOpen ,
118+ logsLength : logs . length ,
119+ } ;
120+
105121 return (
106122 < >
107- { showButton && (
108- < View >
109- { enableDeviceShake && (
110- < TouchableOpacity
111- onPress = { handleCloseIcon }
112- style = { [ styles . floatingCloseIcon ] }
113- >
114- < Icon type = "close" />
115- </ TouchableOpacity >
116- ) }
117- < TouchableOpacity
118- style = { styles . floatingButton }
119- onPress = { handleModalOpen }
120- activeOpacity = { 0.8 }
121- >
122- < Text style = { styles . floatingButtonText } > 📊 { logs . length } </ Text >
123- </ TouchableOpacity >
124- </ View >
125- ) }
123+ { showButton &&
124+ ( draggable ? (
125+ < FloatingButton { ...buttonProps } />
126+ ) : (
127+ < NonFloatingButton { ...buttonProps } />
128+ ) ) }
126129 < Modal
127130 visible = { visible }
128131 animationType = "slide"
0 commit comments