Skip to content

Commit da27777

Browse files
committed
feat: enhance NetworkLoggerOverlay with draggable button options
1 parent 8a2396d commit da27777

File tree

1 file changed

+27
-24
lines changed

1 file changed

+27
-24
lines changed

src/NetworkLoggerOverlay.tsx

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,24 +15,29 @@ import {
1515
import NetworkLogItem from './NetworkLogItem';
1616
import RNShake from 'react-native-shake';
1717
import type { NetworkLog, NetworkLogger } from './types';
18-
import Icon from './Icon';
18+
import FloatingButton from './FloatingButton';
19+
import NonFloatingButton from './NonFloatingButton';
1920

2021
interface NetworkLoggerOverlayProps {
2122
networkLogger: NetworkLogger;
2223
enableDeviceShake?: boolean;
24+
showRequestHeader?: boolean;
25+
showResponseHeader?: boolean;
26+
draggable?: boolean;
2327
}
2428

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

Comments
 (0)