@@ -13,17 +13,25 @@ import {
1313} from 'react-native' ;
1414
1515import NetworkLogItem from './NetworkLogItem' ;
16- import RNShake from 'react-native-shake' ;
1716import type { NetworkLog , NetworkLogger } from './types' ;
1817import FloatingButton from './FloatingButton' ;
1918import NonFloatingButton from './NonFloatingButton' ;
2019
20+ let RNShake : any = null ;
21+
22+ try {
23+ RNShake = require ( 'react-native-shake' ) . default ;
24+ } catch ( error ) {
25+ RNShake = null ;
26+ }
27+
2128interface NetworkLoggerOverlayProps {
2229 networkLogger : NetworkLogger ;
2330 enableDeviceShake ?: boolean ;
2431 showRequestHeader ?: boolean ;
2532 showResponseHeader ?: boolean ;
2633 draggable ?: boolean ;
34+ useCopyToClipboard ?: boolean ;
2735}
2836
2937export const NetworkLoggerOverlay : React . FC < NetworkLoggerOverlayProps > = ( {
@@ -32,6 +40,7 @@ export const NetworkLoggerOverlay: React.FC<NetworkLoggerOverlayProps> = ({
3240 enableDeviceShake,
3341 showRequestHeader,
3442 showResponseHeader,
43+ useCopyToClipboard,
3544} ) => {
3645 const [ visible , setVisible ] = useState < boolean > ( false ) ;
3746 const [ logs , setLogs ] = useState < NetworkLog [ ] > ( [ ] ) ;
@@ -42,6 +51,12 @@ export const NetworkLoggerOverlay: React.FC<NetworkLoggerOverlayProps> = ({
4251 useEffect ( ( ) => {
4352 const unsubscribe = networkLogger . subscribe ( setLogs ) ;
4453
54+ if ( enableDeviceShake && ! RNShake ) {
55+ throw new Error (
56+ 'react-native-shake is required to enableDeviceShake but module is not installed. Please install it with: npm install react-native-shake'
57+ ) ;
58+ }
59+
4560 if ( ! enableDeviceShake ) {
4661 return ;
4762 }
@@ -100,6 +115,7 @@ export const NetworkLoggerOverlay: React.FC<NetworkLoggerOverlayProps> = ({
100115 const renderLogItem : ListRenderItem < NetworkLog > = ( { item } ) => (
101116 < NetworkLogItem
102117 log = { item }
118+ useCopyToClipboard = { useCopyToClipboard }
103119 showResponseHeader = { showResponseHeader }
104120 showRequestHeader = { showRequestHeader }
105121 />
@@ -112,6 +128,7 @@ export const NetworkLoggerOverlay: React.FC<NetworkLoggerOverlayProps> = ({
112128 const keyExtractor = ( item : NetworkLog ) : string => item . id . toString ( ) ;
113129
114130 const buttonProps = {
131+ draggable,
115132 enableDeviceShake,
116133 hideIcon : handleCloseIcon ,
117134 openModal : handleModalOpen ,
0 commit comments