react-native-inapp-inspector 2.3.15 → 2.3.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/commonjs/components/Inspector/AnalyticsTab.js +0 -22
- package/dist/commonjs/components/Inspector/ConsoleTab.js +0 -22
- package/dist/commonjs/components/Inspector/CrashTab.js +0 -23
- package/dist/commonjs/components/Inspector/FeedbackModal.d.ts +7 -0
- package/dist/commonjs/components/Inspector/FeedbackModal.js +552 -0
- package/dist/commonjs/components/Inspector/InspectorHeader.js +56 -4
- package/dist/commonjs/components/Inspector/MainScreen.js +45 -3
- package/dist/commonjs/components/Inspector/NetworkTab.js +27 -38
- package/dist/commonjs/components/Inspector/NpmStarPrompt.d.ts +3 -0
- package/dist/commonjs/components/Inspector/NpmStarPrompt.js +494 -0
- package/dist/commonjs/components/Inspector/PerformanceTab.js +8 -1
- package/dist/commonjs/components/Inspector/ReduxTab.js +0 -22
- package/dist/commonjs/components/Inspector/SettingsPanel.js +1035 -173
- package/dist/commonjs/components/Inspector/StorageTab.js +0 -23
- package/dist/commonjs/components/Inspector/TabBar.js +50 -15
- package/dist/commonjs/components/NetworkIcons.d.ts +5 -0
- package/dist/commonjs/components/NetworkIcons.js +33 -2
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/helpers/index.d.ts +1 -0
- package/dist/commonjs/helpers/index.js +1 -0
- package/dist/commonjs/helpers/remoteConfig.d.ts +4 -0
- package/dist/commonjs/helpers/remoteConfig.js +165 -0
- package/dist/commonjs/helpers/searchQueryParser.js +2 -0
- package/dist/commonjs/helpers/telemetry.d.ts +5 -0
- package/dist/commonjs/helpers/telemetry.js +339 -8
- package/dist/commonjs/index.d.ts +1 -0
- package/dist/commonjs/index.js +32 -2
- package/dist/commonjs/styles/AppFonts.d.ts +2 -0
- package/dist/commonjs/styles/AppFonts.js +1 -0
- package/dist/commonjs/styles/index.d.ts +22 -0
- package/dist/commonjs/styles/index.js +19 -0
- package/dist/commonjs/types/enums.d.ts +1 -0
- package/dist/commonjs/types/enums.js +1 -0
- package/dist/commonjs/types/interfaces.d.ts +12 -0
- package/dist/esm/components/Inspector/AnalyticsTab.js +1 -23
- package/dist/esm/components/Inspector/ConsoleTab.js +1 -23
- package/dist/esm/components/Inspector/CrashTab.js +1 -24
- package/dist/esm/components/Inspector/FeedbackModal.d.ts +7 -0
- package/dist/esm/components/Inspector/FeedbackModal.js +515 -0
- package/dist/esm/components/Inspector/InspectorHeader.js +57 -5
- package/dist/esm/components/Inspector/MainScreen.js +46 -4
- package/dist/esm/components/Inspector/NetworkTab.js +28 -39
- package/dist/esm/components/Inspector/NpmStarPrompt.d.ts +3 -0
- package/dist/esm/components/Inspector/NpmStarPrompt.js +454 -0
- package/dist/esm/components/Inspector/PerformanceTab.js +8 -1
- package/dist/esm/components/Inspector/ReduxTab.js +1 -23
- package/dist/esm/components/Inspector/SettingsPanel.js +1038 -176
- package/dist/esm/components/Inspector/StorageTab.js +0 -23
- package/dist/esm/components/Inspector/TabBar.js +50 -15
- package/dist/esm/components/NetworkIcons.d.ts +5 -0
- package/dist/esm/components/NetworkIcons.js +26 -0
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/helpers/index.d.ts +1 -0
- package/dist/esm/helpers/index.js +1 -0
- package/dist/esm/helpers/remoteConfig.d.ts +4 -0
- package/dist/esm/helpers/remoteConfig.js +160 -0
- package/dist/esm/helpers/searchQueryParser.js +2 -0
- package/dist/esm/helpers/telemetry.d.ts +5 -0
- package/dist/esm/helpers/telemetry.js +332 -9
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +30 -2
- package/dist/esm/styles/AppFonts.d.ts +2 -0
- package/dist/esm/styles/AppFonts.js +1 -0
- package/dist/esm/styles/index.d.ts +22 -0
- package/dist/esm/styles/index.js +19 -0
- package/dist/esm/types/enums.d.ts +1 -0
- package/dist/esm/types/enums.js +1 -0
- package/dist/esm/types/interfaces.d.ts +12 -0
- package/package.json +1 -1
- package/src/components/Inspector/AnalyticsTab.tsx +0 -23
- package/src/components/Inspector/ConsoleTab.tsx +0 -23
- package/src/components/Inspector/CrashTab.tsx +0 -23
- package/src/components/Inspector/FeedbackModal.tsx +626 -0
- package/src/components/Inspector/InspectorHeader.tsx +78 -2
- package/src/components/Inspector/MainScreen.tsx +59 -3
- package/src/components/Inspector/NetworkTab.tsx +69 -78
- package/src/components/Inspector/NpmStarPrompt.tsx +532 -0
- package/src/components/Inspector/PerformanceTab.tsx +8 -1
- package/src/components/Inspector/ReduxTab.tsx +0 -23
- package/src/components/Inspector/SettingsPanel.tsx +1162 -197
- package/src/components/Inspector/StorageTab.tsx +0 -23
- package/src/components/Inspector/TabBar.tsx +57 -20
- package/src/components/NetworkIcons.tsx +92 -0
- package/src/constants/version.ts +1 -1
- package/src/helpers/index.ts +1 -0
- package/src/helpers/remoteConfig.ts +212 -0
- package/src/helpers/searchQueryParser.ts +3 -0
- package/src/helpers/telemetry.ts +381 -10
- package/src/index.tsx +42 -0
- package/src/styles/AppFonts.ts +2 -0
- package/src/styles/index.ts +20 -1
- package/src/types/enums.ts +1 -0
- package/src/types/interfaces.ts +12 -0
|
@@ -12,9 +12,9 @@ import { LIB_VERSION } from '../../constants';
|
|
|
12
12
|
import { getStatusColor, getAppName, formatTime, getSize, getAppVersionAndBuild, } from '../../helpers';
|
|
13
13
|
import { getNativeDeviceMetrics } from '../../native/NativeInspector';
|
|
14
14
|
import { UpdateAvailableModal } from './UpdateAvailableModal';
|
|
15
|
-
import { WhiteBackNavigation, TrashIcon, SettingsIcon, CloseWhite, ClockIcon, SizeIcon, AppleIcon, AndroidIcon, NpmIcon, ResetIcon, BoltIcon, } from '../NetworkIcons';
|
|
15
|
+
import { WhiteBackNavigation, TrashIcon, SettingsIcon, CloseWhite, ClockIcon, SizeIcon, AppleIcon, AndroidIcon, NpmIcon, ResetIcon, BoltIcon, InfoCircleIcon, } from '../NetworkIcons';
|
|
16
16
|
const InspectorHeader = React.memo(() => {
|
|
17
|
-
const { modalHeightPercent, appIcon, selected, setSelected, selectedEvent, setSelectedEvent, selectedLog, setSelectedLog, selectedReduxSlice, setSelectedReduxSlice, selectedReduxAction, setSelectedReduxAction, reduxState, reduxLastActionMap, showHeaderInfo, setShowHeaderInfo, updateAvailable, latestNpmVersion, clearAnim, activePulseAnim, unreadPulseAnim, runClearAllWithAnimation, settingsPage, setSettingsPage, resetToDefaults, closeModal, detailTitle, activeTab, environment, visible, selectedCrash, setSelectedCrash, } = useInspector();
|
|
17
|
+
const { modalHeightPercent, appIcon, selected, setSelected, selectedEvent, setSelectedEvent, selectedLog, setSelectedLog, selectedReduxSlice, setSelectedReduxSlice, selectedReduxAction, setSelectedReduxAction, reduxState, reduxLastActionMap, showHeaderInfo, setShowHeaderInfo, updateAvailable, latestNpmVersion, clearAnim, activePulseAnim, unreadPulseAnim, runClearAllWithAnimation, settingsPage, setSettingsPage, setSettingsActiveSubTab, isFeedbackOpen, setIsFeedbackOpen, resetToDefaults, closeModal, detailTitle, activeTab, environment, visible, selectedCrash, setSelectedCrash, } = useInspector();
|
|
18
18
|
const { width: windowWidth } = useWindowDimensions();
|
|
19
19
|
const isNarrow = windowWidth < 360;
|
|
20
20
|
const isCompact = windowWidth < 400;
|
|
@@ -75,7 +75,7 @@ const InspectorHeader = React.memo(() => {
|
|
|
75
75
|
(selectedReduxSlice != null || selectedReduxAction != null)) ||
|
|
76
76
|
(activeTab === 'crash' && selectedCrash != null);
|
|
77
77
|
const isSettingsView = settingsPage !== null;
|
|
78
|
-
const isAnySelected = isDetailView || isSettingsView;
|
|
78
|
+
const isAnySelected = isDetailView || isSettingsView || isFeedbackOpen;
|
|
79
79
|
const settingsModuleTitle = useMemo(() => {
|
|
80
80
|
switch (settingsPage) {
|
|
81
81
|
case 'apis':
|
|
@@ -121,6 +121,10 @@ const InspectorHeader = React.memo(() => {
|
|
|
121
121
|
},
|
|
122
122
|
]}>
|
|
123
123
|
<TouchableScale onPress={() => {
|
|
124
|
+
if (isFeedbackOpen) {
|
|
125
|
+
setIsFeedbackOpen(false);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
124
128
|
if (isSettingsView) {
|
|
125
129
|
if (settingsPage === 'main') {
|
|
126
130
|
setSettingsPage(null);
|
|
@@ -161,7 +165,41 @@ const InspectorHeader = React.memo(() => {
|
|
|
161
165
|
<WhiteBackNavigation />
|
|
162
166
|
</TouchableScale>
|
|
163
167
|
|
|
164
|
-
{
|
|
168
|
+
{isFeedbackOpen ? (<View style={{ gap: 2, flex: 1, minWidth: 0 }}>
|
|
169
|
+
<View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
|
|
170
|
+
<Text style={{
|
|
171
|
+
fontFamily: AppFonts.interBold,
|
|
172
|
+
fontSize: isNarrow ? 14 : 16,
|
|
173
|
+
color: AppColors.white,
|
|
174
|
+
letterSpacing: -0.2,
|
|
175
|
+
}} numberOfLines={1}>
|
|
176
|
+
Support & Feedback
|
|
177
|
+
</Text>
|
|
178
|
+
<View style={{
|
|
179
|
+
backgroundColor: `${AppColors.white}26`,
|
|
180
|
+
paddingHorizontal: isNarrow ? 4 : 6,
|
|
181
|
+
paddingVertical: 1.5,
|
|
182
|
+
borderRadius: 10,
|
|
183
|
+
borderWidth: 1,
|
|
184
|
+
borderColor: `${AppColors.white}20`,
|
|
185
|
+
}}>
|
|
186
|
+
<Text style={{
|
|
187
|
+
fontFamily: AppFonts.interBold,
|
|
188
|
+
fontSize: isNarrow ? 8 : 9,
|
|
189
|
+
color: AppColors.white,
|
|
190
|
+
}}>
|
|
191
|
+
v{LIB_VERSION}
|
|
192
|
+
</Text>
|
|
193
|
+
</View>
|
|
194
|
+
</View>
|
|
195
|
+
<Text style={{
|
|
196
|
+
fontFamily: AppFonts.interRegular,
|
|
197
|
+
fontSize: isNarrow ? 9.5 : 10.5,
|
|
198
|
+
color: `${AppColors.white}CC`,
|
|
199
|
+
}} numberOfLines={1}>
|
|
200
|
+
Direct line to maintainers & developers
|
|
201
|
+
</Text>
|
|
202
|
+
</View>) : isSettingsView ? (<View style={{ gap: 2, flex: 1, minWidth: 0 }}>
|
|
165
203
|
<View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
|
|
166
204
|
<Text style={{
|
|
167
205
|
fontFamily: AppFonts.interBold,
|
|
@@ -753,7 +791,7 @@ const InspectorHeader = React.memo(() => {
|
|
|
753
791
|
</Animated.View>
|
|
754
792
|
</TouchableScale>)}
|
|
755
793
|
|
|
756
|
-
{!isAnySelected && (<TouchableScale onPress={() => setSettingsPage('main')} hitSlop={15} style={[
|
|
794
|
+
{!isAnySelected && (<TouchableScale accessible={true} accessibilityRole="button" accessibilityLabel="Settings" onPress={() => setSettingsPage('main')} hitSlop={15} style={[
|
|
757
795
|
styles.closeButtonSquare,
|
|
758
796
|
{
|
|
759
797
|
width: buttonSize,
|
|
@@ -764,6 +802,20 @@ const InspectorHeader = React.memo(() => {
|
|
|
764
802
|
<SettingsIcon color={AppColors.white} size={isNarrow ? 12 : 14}/>
|
|
765
803
|
</TouchableScale>)}
|
|
766
804
|
|
|
805
|
+
{!isAnySelected && (<TouchableScale accessible={true} accessibilityRole="button" accessibilityLabel="About and System Specifications" onPress={() => {
|
|
806
|
+
setSettingsActiveSubTab('about');
|
|
807
|
+
setSettingsPage('main');
|
|
808
|
+
}} hitSlop={15} style={[
|
|
809
|
+
styles.closeButtonSquare,
|
|
810
|
+
{
|
|
811
|
+
width: buttonSize,
|
|
812
|
+
height: buttonSize,
|
|
813
|
+
borderRadius: isNarrow ? 6 : 7,
|
|
814
|
+
},
|
|
815
|
+
]}>
|
|
816
|
+
<InfoCircleIcon color={AppColors.white} size={isNarrow ? 12 : 14}/>
|
|
817
|
+
</TouchableScale>)}
|
|
818
|
+
|
|
767
819
|
<TouchableOpacity onPress={closeModal} hitSlop={{ top: 12, bottom: 12, left: 12, right: 12 }} activeOpacity={0.6} style={[
|
|
768
820
|
styles.closeButtonSquare,
|
|
769
821
|
{
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useEffect, useRef } from 'react';
|
|
2
|
-
import { Animated, Modal, Platform, Pressable, StatusBar, StyleSheet, View, } from 'react-native';
|
|
2
|
+
import { Animated, Modal, Platform, Pressable, StatusBar, StyleSheet, TouchableOpacity, View, } from 'react-native';
|
|
3
3
|
import { useInspector } from './InspectorContext';
|
|
4
4
|
import ErrorBoundary from '../ErrorBoundary';
|
|
5
5
|
import FabLauncher from './FabLauncher';
|
|
@@ -22,13 +22,16 @@ import StorageTab from './StorageTab';
|
|
|
22
22
|
import DebuggingTab from './DebuggingTab';
|
|
23
23
|
import SettingsPanel from './SettingsPanel';
|
|
24
24
|
import NpmUpdateToast from './NpmUpdateToast';
|
|
25
|
+
import NpmStarPrompt from './NpmStarPrompt';
|
|
26
|
+
import FeedbackModal from './FeedbackModal';
|
|
25
27
|
import Toast from '../Toast';
|
|
28
|
+
import { HeadphonesIcon } from '../NetworkIcons';
|
|
26
29
|
import styles from '../../styles';
|
|
27
30
|
import { AppColors } from '../../styles/AppColors';
|
|
28
31
|
import NavigationTracker from './NavigationTracker';
|
|
29
32
|
import { isLocalDebugEnvironment } from '../../helpers';
|
|
30
33
|
const MainScreen = () => {
|
|
31
|
-
const { visible, modalAnimationType, closeModal, modalHeightPercent, selected, selectedEvent, selectedLog, selectedReduxSlice, selectedReduxAction, selectedCrash, settingsPage, activeTab, isReady, enabled, useNativeFab, hasNavigationContext, setNavState, } = useInspector();
|
|
34
|
+
const { visible, modalAnimationType, closeModal, modalHeightPercent, selected, selectedEvent, selectedLog, selectedReduxSlice, selectedReduxAction, selectedCrash, settingsPage, isFeedbackOpen, setIsFeedbackOpen, activeTab, isReady, enabled, useNativeFab, hasNavigationContext, setNavState, } = useInspector();
|
|
32
35
|
const isDetailActive = (activeTab === 'apis' && selected != null) ||
|
|
33
36
|
(activeTab === 'analytics' && selectedEvent != null) ||
|
|
34
37
|
(activeTab === 'logs' && selectedLog != null) ||
|
|
@@ -58,6 +61,18 @@ const MainScreen = () => {
|
|
|
58
61
|
}).start();
|
|
59
62
|
}
|
|
60
63
|
}, [settingsPage !== null]);
|
|
64
|
+
const feedbackAnim = useRef(new Animated.Value(0)).current;
|
|
65
|
+
useEffect(() => {
|
|
66
|
+
if (isFeedbackOpen) {
|
|
67
|
+
feedbackAnim.setValue(0);
|
|
68
|
+
Animated.spring(feedbackAnim, {
|
|
69
|
+
toValue: 1,
|
|
70
|
+
friction: 8,
|
|
71
|
+
tension: 65,
|
|
72
|
+
useNativeDriver: true,
|
|
73
|
+
}).start();
|
|
74
|
+
}
|
|
75
|
+
}, [isFeedbackOpen]);
|
|
61
76
|
const tabAnim = useRef(new Animated.Value(1)).current;
|
|
62
77
|
useEffect(() => {
|
|
63
78
|
tabAnim.setValue(0);
|
|
@@ -90,7 +105,7 @@ const MainScreen = () => {
|
|
|
90
105
|
|
|
91
106
|
<View style={{ flex: 1 }}>
|
|
92
107
|
|
|
93
|
-
{!isDetailActive && <TabBar />}
|
|
108
|
+
{!isDetailActive && settingsPage === null && !isFeedbackOpen && <TabBar />}
|
|
94
109
|
|
|
95
110
|
{isReady ? (<View style={{ flex: 1 }}>
|
|
96
111
|
|
|
@@ -107,7 +122,7 @@ const MainScreen = () => {
|
|
|
107
122
|
},
|
|
108
123
|
],
|
|
109
124
|
},
|
|
110
|
-
(isDetailActive || settingsPage !== null) && {
|
|
125
|
+
(isDetailActive || settingsPage !== null || isFeedbackOpen) && {
|
|
111
126
|
pointerEvents: 'none',
|
|
112
127
|
},
|
|
113
128
|
]}>
|
|
@@ -167,6 +182,30 @@ const MainScreen = () => {
|
|
|
167
182
|
]}>
|
|
168
183
|
<SettingsPanel />
|
|
169
184
|
</Animated.View>)}
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
{isFeedbackOpen && (<Animated.View style={[
|
|
188
|
+
StyleSheet.absoluteFill,
|
|
189
|
+
{
|
|
190
|
+
backgroundColor: AppColors.primaryLight,
|
|
191
|
+
opacity: feedbackAnim,
|
|
192
|
+
transform: [
|
|
193
|
+
{
|
|
194
|
+
translateY: feedbackAnim.interpolate({
|
|
195
|
+
inputRange: [0, 1],
|
|
196
|
+
outputRange: [24, 0],
|
|
197
|
+
}),
|
|
198
|
+
},
|
|
199
|
+
],
|
|
200
|
+
},
|
|
201
|
+
]}>
|
|
202
|
+
<FeedbackModal onClose={() => setIsFeedbackOpen(false)}/>
|
|
203
|
+
</Animated.View>)}
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
{!isDetailActive && settingsPage === null && !isFeedbackOpen && (<TouchableOpacity activeOpacity={0.8} onPress={() => setIsFeedbackOpen(true)} hitSlop={{ top: 10, bottom: 10, left: 10, right: 10 }} style={styles.supportFab}>
|
|
207
|
+
<HeadphonesIcon color={AppColors.white} size={20}/>
|
|
208
|
+
</TouchableOpacity>)}
|
|
170
209
|
</View>
|
|
171
210
|
|
|
172
211
|
|
|
@@ -174,6 +213,9 @@ const MainScreen = () => {
|
|
|
174
213
|
|
|
175
214
|
|
|
176
215
|
<NpmUpdateToast />
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
<NpmStarPrompt />
|
|
177
219
|
</View>
|
|
178
220
|
</View>
|
|
179
221
|
</ErrorBoundary>
|
|
@@ -13,7 +13,7 @@ import { AppColors } from '../../styles/AppColors';
|
|
|
13
13
|
import { AppFonts } from '../../styles/AppFonts';
|
|
14
14
|
import { METHOD_COLORS } from '../../constants';
|
|
15
15
|
import { useTranslation } from '../../i18n';
|
|
16
|
-
import { SearchIcon, ClearIcon, TrashIcon, SortArrowIcon, FilterIcon,
|
|
16
|
+
import { SearchIcon, ClearIcon, TrashIcon, SortArrowIcon, FilterIcon, CircleCheckIcon, CircleXIcon, LayersIcon, HeaderPauseIcon, ClockIcon, RequestIcon, ResponseIcon, AtomIcon, } from '../NetworkIcons';
|
|
17
17
|
const NetworkTab = React.memo(() => {
|
|
18
18
|
const { groupedData, search, setSearch, searchScope, setSearchScope, isRegexSearch, setIsRegexSearch, isCaseSensitive, setIsCaseSensitive, quickFilter, setQuickFilter, handleDelete, selectedLogs, sortOrder, setSortOrder, statusFilters, setStatusFilters, methodFilters, setMethodFilters, availableMethods, filteredLogs, logs, toggleSectionFilter, toggleSectionCollapse, minStart, totalRange, newLogIds, toggleSelect, setSelected, isNetworkPaused, setIsNetworkPaused, } = useInspector();
|
|
19
19
|
const { t } = useTranslation();
|
|
@@ -356,12 +356,18 @@ const NetworkTab = React.memo(() => {
|
|
|
356
356
|
</View>
|
|
357
357
|
|
|
358
358
|
|
|
359
|
-
<View style={{
|
|
360
|
-
|
|
359
|
+
<View style={{
|
|
360
|
+
flexDirection: 'row',
|
|
361
|
+
alignItems: 'center',
|
|
362
|
+
marginBottom: 8,
|
|
361
363
|
paddingHorizontal: 12,
|
|
364
|
+
gap: 6,
|
|
365
|
+
}}>
|
|
366
|
+
<ScrollView horizontal showsHorizontalScrollIndicator={false} style={{ flex: 1 }} contentContainerStyle={{
|
|
362
367
|
flexDirection: 'row',
|
|
363
368
|
alignItems: 'center',
|
|
364
369
|
gap: 6,
|
|
370
|
+
paddingRight: 6,
|
|
365
371
|
}}>
|
|
366
372
|
{QUICK_CHIPS.map(chip => {
|
|
367
373
|
const isActive = quickFilter === chip.id;
|
|
@@ -420,9 +426,10 @@ const NetworkTab = React.memo(() => {
|
|
|
420
426
|
</View>
|
|
421
427
|
</TouchableScale>);
|
|
422
428
|
})}
|
|
429
|
+
</ScrollView>
|
|
423
430
|
|
|
424
|
-
|
|
425
|
-
|
|
431
|
+
<TouchableScale onPress={() => setIsFilterModalOpen(true)} style={{ flexShrink: 0 }}>
|
|
432
|
+
<View style={{
|
|
426
433
|
flexDirection: 'row',
|
|
427
434
|
alignItems: 'center',
|
|
428
435
|
paddingHorizontal: 10,
|
|
@@ -436,36 +443,40 @@ const NetworkTab = React.memo(() => {
|
|
|
436
443
|
? AppColors.purple
|
|
437
444
|
: AppColors.grayBorderSecondary,
|
|
438
445
|
gap: 5,
|
|
446
|
+
shadowColor: AppColors.black,
|
|
447
|
+
shadowOpacity: 0.04,
|
|
448
|
+
shadowRadius: 2,
|
|
449
|
+
shadowOffset: { width: 0, height: 1 },
|
|
450
|
+
elevation: 1,
|
|
439
451
|
}}>
|
|
440
|
-
|
|
452
|
+
<FilterIcon size={11} color={statusFilters.size > 0 || methodFilters.size > 0
|
|
441
453
|
? AppColors.purple
|
|
442
454
|
: AppColors.grayText}/>
|
|
443
|
-
|
|
455
|
+
<Text style={{
|
|
444
456
|
fontFamily: AppFonts.interBold,
|
|
445
457
|
fontSize: 10.5,
|
|
446
458
|
color: statusFilters.size > 0 || methodFilters.size > 0
|
|
447
459
|
? AppColors.purple
|
|
448
460
|
: AppColors.grayText,
|
|
449
461
|
}}>
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
462
|
+
More Filters
|
|
463
|
+
</Text>
|
|
464
|
+
{(statusFilters.size > 0 || methodFilters.size > 0) && (<View style={{
|
|
453
465
|
backgroundColor: AppColors.purple,
|
|
454
466
|
paddingHorizontal: 4.5,
|
|
455
467
|
paddingVertical: 1,
|
|
456
468
|
borderRadius: 6,
|
|
457
469
|
}}>
|
|
458
|
-
|
|
470
|
+
<Text style={{
|
|
459
471
|
fontFamily: AppFonts.interBold,
|
|
460
472
|
fontSize: 8.5,
|
|
461
473
|
color: AppColors.white,
|
|
462
474
|
}}>
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
</ScrollView>
|
|
475
|
+
{statusFilters.size + methodFilters.size}
|
|
476
|
+
</Text>
|
|
477
|
+
</View>)}
|
|
478
|
+
</View>
|
|
479
|
+
</TouchableScale>
|
|
469
480
|
</View>
|
|
470
481
|
|
|
471
482
|
|
|
@@ -523,28 +534,6 @@ const NetworkTab = React.memo(() => {
|
|
|
523
534
|
styles.listContent,
|
|
524
535
|
filteredLogs.length === 0 && { flexGrow: 1 },
|
|
525
536
|
]} keyboardShouldPersistTaps="handled"/>
|
|
526
|
-
|
|
527
|
-
<TouchableScale onPress={() => {
|
|
528
|
-
try {
|
|
529
|
-
apisListRef.current?.scrollToOffset({
|
|
530
|
-
offset: 0,
|
|
531
|
-
animated: true,
|
|
532
|
-
});
|
|
533
|
-
}
|
|
534
|
-
catch {
|
|
535
|
-
try {
|
|
536
|
-
apisListRef.current?.scrollToIndex({
|
|
537
|
-
index: 0,
|
|
538
|
-
animated: true,
|
|
539
|
-
});
|
|
540
|
-
}
|
|
541
|
-
catch { }
|
|
542
|
-
}
|
|
543
|
-
}} hitSlop={12} style={styles.scrollTopBtn}>
|
|
544
|
-
<View style={{ transform: [{ rotate: '180deg' }] }}>
|
|
545
|
-
<ChevronIcon color={AppColors.white} size={18}/>
|
|
546
|
-
</View>
|
|
547
|
-
</TouchableScale>
|
|
548
537
|
|
|
549
538
|
|
|
550
539
|
<NetworkFilterModal visible={isFilterModalOpen} onClose={() => setIsFilterModalOpen(false)} filters={modalFilterState} onApply={handleApplyNetworkFilters} searchQuery={search}/>
|