Skip to content

Commit 1658da2

Browse files
committed
feat: add error handling for device shake functionality and integrate useCopyToClipboard prop
1 parent 1b9adeb commit 1658da2

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

src/NetworkLoggerOverlay.tsx

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,25 @@ import {
1313
} from 'react-native';
1414

1515
import NetworkLogItem from './NetworkLogItem';
16-
import RNShake from 'react-native-shake';
1716
import type { NetworkLog, NetworkLogger } from './types';
1817
import FloatingButton from './FloatingButton';
1918
import 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+
2128
interface NetworkLoggerOverlayProps {
2229
networkLogger: NetworkLogger;
2330
enableDeviceShake?: boolean;
2431
showRequestHeader?: boolean;
2532
showResponseHeader?: boolean;
2633
draggable?: boolean;
34+
useCopyToClipboard?: boolean;
2735
}
2836

2937
export 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

Comments
 (0)