react-native-inapp-inspector 2.3.14 → 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/AnimatedEntrance.js +3 -3
- package/dist/commonjs/components/ConsoleLogCard.js +174 -100
- package/dist/commonjs/components/Inspector/AnalyticsTab.js +0 -22
- package/dist/commonjs/components/Inspector/ConsoleTab.js +25 -38
- package/dist/commonjs/components/Inspector/CrashTab.js +19 -28
- package/dist/commonjs/components/Inspector/DeviceInfoTab.js +198 -98
- 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 +58 -6
- package/dist/commonjs/components/Inspector/MainScreen.js +100 -58
- package/dist/commonjs/components/Inspector/NetworkTab.js +26 -371
- 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 +40 -7
- package/dist/commonjs/components/Inspector/ReduxTab.js +3 -23
- package/dist/commonjs/components/Inspector/SettingsPanel.js +1035 -173
- package/dist/commonjs/components/Inspector/StorageTab.js +23 -28
- package/dist/commonjs/components/Inspector/TabBar.js +50 -15
- package/dist/commonjs/components/JsonViewer.js +14 -2
- package/dist/commonjs/components/LogCard.js +428 -227
- 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/customHooks/analyticsLogger.js +1 -1
- package/dist/commonjs/customHooks/consoleLogger.js +34 -2
- package/dist/commonjs/customHooks/crashHandler.js +1 -1
- package/dist/commonjs/customHooks/networkLogger.js +184 -26
- 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.d.ts +1 -1
- package/dist/commonjs/helpers/searchQueryParser.js +39 -291
- 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 +173 -29
- 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/AnimatedEntrance.js +3 -3
- package/dist/esm/components/ConsoleLogCard.js +141 -100
- package/dist/esm/components/Inspector/AnalyticsTab.js +1 -23
- package/dist/esm/components/Inspector/ConsoleTab.js +26 -39
- package/dist/esm/components/Inspector/CrashTab.js +20 -29
- package/dist/esm/components/Inspector/DeviceInfoTab.js +198 -98
- 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 +60 -8
- package/dist/esm/components/Inspector/MainScreen.js +101 -59
- package/dist/esm/components/Inspector/NetworkTab.js +27 -372
- 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 +40 -7
- package/dist/esm/components/Inspector/ReduxTab.js +4 -24
- package/dist/esm/components/Inspector/SettingsPanel.js +1038 -176
- package/dist/esm/components/Inspector/StorageTab.js +23 -28
- package/dist/esm/components/Inspector/TabBar.js +50 -15
- package/dist/esm/components/JsonViewer.js +14 -2
- package/dist/esm/components/LogCard.js +422 -221
- 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/customHooks/analyticsLogger.js +1 -1
- package/dist/esm/customHooks/consoleLogger.js +34 -2
- package/dist/esm/customHooks/crashHandler.js +1 -1
- package/dist/esm/customHooks/networkLogger.js +184 -26
- 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.d.ts +1 -1
- package/dist/esm/helpers/searchQueryParser.js +39 -291
- 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 +171 -29
- 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/AnimatedEntrance.tsx +3 -3
- package/src/components/ConsoleLogCard.tsx +154 -103
- package/src/components/Inspector/AnalyticsTab.tsx +0 -23
- package/src/components/Inspector/ConsoleTab.tsx +27 -41
- package/src/components/Inspector/CrashTab.tsx +19 -28
- package/src/components/Inspector/DeviceInfoTab.tsx +224 -102
- package/src/components/Inspector/FeedbackModal.tsx +626 -0
- package/src/components/Inspector/InspectorHeader.tsx +83 -5
- package/src/components/Inspector/MainScreen.tsx +61 -6
- package/src/components/Inspector/NetworkTab.tsx +70 -480
- package/src/components/Inspector/NpmStarPrompt.tsx +532 -0
- package/src/components/Inspector/PerformanceTab.tsx +44 -8
- package/src/components/Inspector/ReduxTab.tsx +9 -24
- package/src/components/Inspector/SettingsPanel.tsx +1162 -197
- package/src/components/Inspector/StorageTab.tsx +27 -30
- package/src/components/Inspector/TabBar.tsx +57 -20
- package/src/components/JsonViewer.tsx +15 -2
- package/src/components/LogCard.tsx +528 -339
- package/src/components/NetworkIcons.tsx +92 -0
- package/src/constants/version.ts +1 -1
- package/src/customHooks/analyticsLogger.ts +1 -1
- package/src/customHooks/consoleLogger.ts +36 -3
- package/src/customHooks/crashHandler.ts +1 -1
- package/src/customHooks/networkLogger.ts +214 -26
- package/src/helpers/index.ts +1 -0
- package/src/helpers/remoteConfig.ts +212 -0
- package/src/helpers/searchQueryParser.ts +42 -284
- package/src/helpers/telemetry.ts +381 -10
- package/src/index.tsx +374 -211
- 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
|
@@ -227,94 +227,6 @@ const NetworkTab = React.memo(() => {
|
|
|
227
227
|
[quickCounts],
|
|
228
228
|
);
|
|
229
229
|
|
|
230
|
-
const SEARCH_SCOPES: Array<{
|
|
231
|
-
id: SearchScope;
|
|
232
|
-
label: string;
|
|
233
|
-
icon: (color: string) => React.JSX.Element;
|
|
234
|
-
}> = [
|
|
235
|
-
{
|
|
236
|
-
id: 'all',
|
|
237
|
-
label: 'All',
|
|
238
|
-
icon: color => <LayersIcon size={9.5} color={color} />,
|
|
239
|
-
},
|
|
240
|
-
{
|
|
241
|
-
id: 'url',
|
|
242
|
-
label: 'URL / Path',
|
|
243
|
-
icon: color => <GlobeIcon size={9.5} color={color} />,
|
|
244
|
-
},
|
|
245
|
-
{
|
|
246
|
-
id: 'reqBody',
|
|
247
|
-
label: 'Payload',
|
|
248
|
-
icon: color => <RequestIcon size={9.5} color={color} />,
|
|
249
|
-
},
|
|
250
|
-
{
|
|
251
|
-
id: 'resBody',
|
|
252
|
-
label: 'Response',
|
|
253
|
-
icon: color => <ResponseIcon size={9.5} color={color} />,
|
|
254
|
-
},
|
|
255
|
-
{
|
|
256
|
-
id: 'headers',
|
|
257
|
-
label: 'Headers',
|
|
258
|
-
icon: color => <HeadersIcon size={9.5} color={color} />,
|
|
259
|
-
},
|
|
260
|
-
];
|
|
261
|
-
|
|
262
|
-
const QUICK_API_QUERY_TAGS = useMemo(
|
|
263
|
-
() => [
|
|
264
|
-
{
|
|
265
|
-
label: 'Failed',
|
|
266
|
-
query: 'is:error',
|
|
267
|
-
icon: (color: string) => <CircleXIcon size={9.5} color={color} />,
|
|
268
|
-
},
|
|
269
|
-
{
|
|
270
|
-
label: 'Slow (>1s)',
|
|
271
|
-
query: 'slow:>1s',
|
|
272
|
-
icon: (color: string) => <ClockIcon size={9.5} color={color} />,
|
|
273
|
-
},
|
|
274
|
-
{
|
|
275
|
-
label: 'POST',
|
|
276
|
-
query: 'm:POST',
|
|
277
|
-
icon: (color: string) => <RequestIcon size={9.5} color={color} />,
|
|
278
|
-
},
|
|
279
|
-
{
|
|
280
|
-
label: 'GET',
|
|
281
|
-
query: 'm:GET',
|
|
282
|
-
icon: (color: string) => <ResponseIcon size={9.5} color={color} />,
|
|
283
|
-
},
|
|
284
|
-
{
|
|
285
|
-
label: 'GraphQL',
|
|
286
|
-
query: 'is:graphql',
|
|
287
|
-
icon: (color: string) => <AtomIcon size={9.5} color={color} />,
|
|
288
|
-
},
|
|
289
|
-
{
|
|
290
|
-
label: 'Axios',
|
|
291
|
-
query: 'client:axios',
|
|
292
|
-
icon: (color: string) => <BoltIcon size={9.5} color={color} />,
|
|
293
|
-
},
|
|
294
|
-
{
|
|
295
|
-
label: '200 OK',
|
|
296
|
-
query: 'status:200',
|
|
297
|
-
icon: (color: string) => <CircleCheckIcon size={9.5} color={color} />,
|
|
298
|
-
},
|
|
299
|
-
{
|
|
300
|
-
label: '404',
|
|
301
|
-
query: 'status:404',
|
|
302
|
-
icon: (color: string) => <CircleAlertIcon size={9.5} color={color} />,
|
|
303
|
-
},
|
|
304
|
-
{
|
|
305
|
-
label: '500',
|
|
306
|
-
query: 'status:500',
|
|
307
|
-
icon: (color: string) => <CircleXIcon size={9.5} color={color} />,
|
|
308
|
-
},
|
|
309
|
-
{
|
|
310
|
-
label: 'HTTPS',
|
|
311
|
-
query: 'is:https',
|
|
312
|
-
icon: (color: string) => <ShieldAlertIcon size={9.5} color={color} />,
|
|
313
|
-
},
|
|
314
|
-
],
|
|
315
|
-
[],
|
|
316
|
-
);
|
|
317
|
-
|
|
318
230
|
const networkMetrics = useMemo(() => {
|
|
319
231
|
if (!logs || logs.length === 0) return null;
|
|
320
232
|
let successCount = 0;
|
|
@@ -523,7 +435,7 @@ const NetworkTab = React.memo(() => {
|
|
|
523
435
|
size={15}
|
|
524
436
|
/>
|
|
525
437
|
<TextInput
|
|
526
|
-
placeholder="Search
|
|
438
|
+
placeholder="Search URL, status, method, headers, body..."
|
|
527
439
|
placeholderTextColor={AppColors.grayTextWeak}
|
|
528
440
|
value={search}
|
|
529
441
|
onChangeText={setSearch}
|
|
@@ -534,69 +446,6 @@ const NetworkTab = React.memo(() => {
|
|
|
534
446
|
autoCapitalize="none"
|
|
535
447
|
/>
|
|
536
448
|
|
|
537
|
-
{/* Match Case (Aa) & Regex (.*) Quick Toggles */}
|
|
538
|
-
<View
|
|
539
|
-
style={{
|
|
540
|
-
flexDirection: 'row',
|
|
541
|
-
alignItems: 'center',
|
|
542
|
-
gap: 3,
|
|
543
|
-
marginRight: 2,
|
|
544
|
-
}}>
|
|
545
|
-
<Pressable
|
|
546
|
-
hitSlop={8}
|
|
547
|
-
onPress={() => setIsCaseSensitive(prev => !prev)}
|
|
548
|
-
style={{
|
|
549
|
-
paddingHorizontal: 4.5,
|
|
550
|
-
paddingVertical: 2,
|
|
551
|
-
borderRadius: 4,
|
|
552
|
-
backgroundColor: isCaseSensitive
|
|
553
|
-
? AppColors.purple
|
|
554
|
-
: 'transparent',
|
|
555
|
-
borderWidth: 1,
|
|
556
|
-
borderColor: isCaseSensitive
|
|
557
|
-
? AppColors.purple
|
|
558
|
-
: `${AppColors.grayBorderSecondary}`,
|
|
559
|
-
}}>
|
|
560
|
-
<Text
|
|
561
|
-
style={{
|
|
562
|
-
fontFamily: AppFonts.interBold,
|
|
563
|
-
fontSize: 9.5,
|
|
564
|
-
color: isCaseSensitive
|
|
565
|
-
? AppColors.white
|
|
566
|
-
: AppColors.grayTextWeak,
|
|
567
|
-
}}>
|
|
568
|
-
Aa
|
|
569
|
-
</Text>
|
|
570
|
-
</Pressable>
|
|
571
|
-
|
|
572
|
-
<Pressable
|
|
573
|
-
hitSlop={8}
|
|
574
|
-
onPress={() => setIsRegexSearch(prev => !prev)}
|
|
575
|
-
style={{
|
|
576
|
-
paddingHorizontal: 4.5,
|
|
577
|
-
paddingVertical: 2,
|
|
578
|
-
borderRadius: 4,
|
|
579
|
-
backgroundColor: isRegexSearch
|
|
580
|
-
? AppColors.purple
|
|
581
|
-
: 'transparent',
|
|
582
|
-
borderWidth: 1,
|
|
583
|
-
borderColor: isRegexSearch
|
|
584
|
-
? AppColors.purple
|
|
585
|
-
: `${AppColors.grayBorderSecondary}`,
|
|
586
|
-
}}>
|
|
587
|
-
<Text
|
|
588
|
-
style={{
|
|
589
|
-
fontFamily: AppFonts.interBold,
|
|
590
|
-
fontSize: 9.5,
|
|
591
|
-
color: isRegexSearch
|
|
592
|
-
? AppColors.white
|
|
593
|
-
: AppColors.grayTextWeak,
|
|
594
|
-
}}>
|
|
595
|
-
.*
|
|
596
|
-
</Text>
|
|
597
|
-
</Pressable>
|
|
598
|
-
</View>
|
|
599
|
-
|
|
600
449
|
{search.length > 0 && (
|
|
601
450
|
<View
|
|
602
451
|
style={{
|
|
@@ -721,123 +570,24 @@ const NetworkTab = React.memo(() => {
|
|
|
721
570
|
</View>
|
|
722
571
|
</View>
|
|
723
572
|
|
|
724
|
-
{/* Quick
|
|
725
|
-
<View
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
gap: 5,
|
|
734
|
-
paddingVertical: 2,
|
|
735
|
-
}}>
|
|
736
|
-
{/* Search Scopes */}
|
|
737
|
-
{SEARCH_SCOPES.map(s => {
|
|
738
|
-
const isActive = searchScope === s.id;
|
|
739
|
-
return (
|
|
740
|
-
<TouchableScale
|
|
741
|
-
key={`scope_${s.id}`}
|
|
742
|
-
onPress={() => setSearchScope(s.id)}
|
|
743
|
-
hitSlop={6}
|
|
744
|
-
style={{
|
|
745
|
-
flexDirection: 'row',
|
|
746
|
-
alignItems: 'center',
|
|
747
|
-
gap: 3.5,
|
|
748
|
-
paddingHorizontal: 7.5,
|
|
749
|
-
paddingVertical: 3.5,
|
|
750
|
-
borderRadius: 6,
|
|
751
|
-
backgroundColor: isActive
|
|
752
|
-
? AppColors.purple
|
|
753
|
-
: AppColors.grayBackground,
|
|
754
|
-
borderWidth: 1,
|
|
755
|
-
borderColor: isActive
|
|
756
|
-
? AppColors.purple
|
|
757
|
-
: AppColors.grayBorderSecondary,
|
|
758
|
-
}}>
|
|
759
|
-
{s.icon(isActive ? AppColors.white : AppColors.grayTextWeak)}
|
|
760
|
-
<Text
|
|
761
|
-
style={{
|
|
762
|
-
fontFamily: AppFonts.interBold,
|
|
763
|
-
fontSize: 10,
|
|
764
|
-
color: isActive ? AppColors.white : AppColors.grayText,
|
|
765
|
-
}}>
|
|
766
|
-
{s.label}
|
|
767
|
-
</Text>
|
|
768
|
-
</TouchableScale>
|
|
769
|
-
);
|
|
770
|
-
})}
|
|
771
|
-
|
|
772
|
-
<View
|
|
773
|
-
style={{
|
|
774
|
-
width: 1,
|
|
775
|
-
height: 14,
|
|
776
|
-
backgroundColor: AppColors.dividerColor,
|
|
777
|
-
marginHorizontal: 3,
|
|
778
|
-
}}
|
|
779
|
-
/>
|
|
780
|
-
|
|
781
|
-
{/* Quick Query Suggestions */}
|
|
782
|
-
{QUICK_API_QUERY_TAGS.map(q => {
|
|
783
|
-
const isActive = search.includes(q.query);
|
|
784
|
-
return (
|
|
785
|
-
<TouchableScale
|
|
786
|
-
key={`quick_${q.query}`}
|
|
787
|
-
onPress={() => {
|
|
788
|
-
setSearch(prev => {
|
|
789
|
-
if (prev.includes(q.query)) {
|
|
790
|
-
return prev
|
|
791
|
-
.replace(q.query, '')
|
|
792
|
-
.replace(/\s+/g, ' ')
|
|
793
|
-
.trim();
|
|
794
|
-
}
|
|
795
|
-
return `${prev} ${q.query}`.trim();
|
|
796
|
-
});
|
|
797
|
-
}}
|
|
798
|
-
hitSlop={6}
|
|
799
|
-
style={{
|
|
800
|
-
flexDirection: 'row',
|
|
801
|
-
alignItems: 'center',
|
|
802
|
-
gap: 3.5,
|
|
803
|
-
paddingHorizontal: 7.5,
|
|
804
|
-
paddingVertical: 3.5,
|
|
805
|
-
borderRadius: 6,
|
|
806
|
-
backgroundColor: isActive
|
|
807
|
-
? `${AppColors.purple}20`
|
|
808
|
-
: AppColors.grayBackground,
|
|
809
|
-
borderWidth: 1,
|
|
810
|
-
borderColor: isActive
|
|
811
|
-
? AppColors.purple
|
|
812
|
-
: AppColors.grayBorderSecondary,
|
|
813
|
-
}}>
|
|
814
|
-
{q.icon(isActive ? AppColors.purple : AppColors.grayTextWeak)}
|
|
815
|
-
<Text
|
|
816
|
-
style={{
|
|
817
|
-
fontFamily: AppFonts.interMedium,
|
|
818
|
-
fontSize: 10,
|
|
819
|
-
color: isActive
|
|
820
|
-
? AppColors.purple
|
|
821
|
-
: AppColors.grayText,
|
|
822
|
-
}}>
|
|
823
|
-
{q.label}
|
|
824
|
-
</Text>
|
|
825
|
-
</TouchableScale>
|
|
826
|
-
);
|
|
827
|
-
})}
|
|
828
|
-
</ScrollView>
|
|
829
|
-
</View>
|
|
830
|
-
|
|
831
|
-
{/* Quick Filter Horizontal Chips Bar with Live Counts */}
|
|
832
|
-
<View style={{marginBottom: 8}}>
|
|
573
|
+
{/* Quick Filter Horizontal Chips Bar with Sticky "More Filters" on Right */}
|
|
574
|
+
<View
|
|
575
|
+
style={{
|
|
576
|
+
flexDirection: 'row',
|
|
577
|
+
alignItems: 'center',
|
|
578
|
+
marginBottom: 8,
|
|
579
|
+
paddingHorizontal: 12,
|
|
580
|
+
gap: 6,
|
|
581
|
+
}}>
|
|
833
582
|
<ScrollView
|
|
834
583
|
horizontal
|
|
835
584
|
showsHorizontalScrollIndicator={false}
|
|
585
|
+
style={{flex: 1}}
|
|
836
586
|
contentContainerStyle={{
|
|
837
|
-
paddingHorizontal: 12,
|
|
838
587
|
flexDirection: 'row',
|
|
839
588
|
alignItems: 'center',
|
|
840
589
|
gap: 6,
|
|
590
|
+
paddingRight: 6,
|
|
841
591
|
}}>
|
|
842
592
|
{QUICK_CHIPS.map(chip => {
|
|
843
593
|
const isActive = quickFilter === chip.id;
|
|
@@ -904,200 +654,74 @@ const NetworkTab = React.memo(() => {
|
|
|
904
654
|
</TouchableScale>
|
|
905
655
|
);
|
|
906
656
|
})}
|
|
907
|
-
|
|
908
|
-
<TouchableScale
|
|
909
|
-
onPress={() => setIsFilterModalOpen(true)}>
|
|
910
|
-
<View
|
|
911
|
-
style={{
|
|
912
|
-
flexDirection: 'row',
|
|
913
|
-
alignItems: 'center',
|
|
914
|
-
paddingHorizontal: 10,
|
|
915
|
-
paddingVertical: 4.5,
|
|
916
|
-
borderRadius: 8,
|
|
917
|
-
backgroundColor:
|
|
918
|
-
statusFilters.size > 0 || methodFilters.size > 0
|
|
919
|
-
? `${AppColors.purple}20`
|
|
920
|
-
: AppColors.grayBackground,
|
|
921
|
-
borderWidth: 1,
|
|
922
|
-
borderColor:
|
|
923
|
-
statusFilters.size > 0 || methodFilters.size > 0
|
|
924
|
-
? AppColors.purple
|
|
925
|
-
: AppColors.grayBorderSecondary,
|
|
926
|
-
gap: 5,
|
|
927
|
-
}}>
|
|
928
|
-
<FilterIcon
|
|
929
|
-
size={11}
|
|
930
|
-
color={
|
|
931
|
-
statusFilters.size > 0 || methodFilters.size > 0
|
|
932
|
-
? AppColors.purple
|
|
933
|
-
: AppColors.grayText
|
|
934
|
-
}
|
|
935
|
-
/>
|
|
936
|
-
<Text
|
|
937
|
-
style={{
|
|
938
|
-
fontFamily: AppFonts.interBold,
|
|
939
|
-
fontSize: 10.5,
|
|
940
|
-
color:
|
|
941
|
-
statusFilters.size > 0 || methodFilters.size > 0
|
|
942
|
-
? AppColors.purple
|
|
943
|
-
: AppColors.grayText,
|
|
944
|
-
}}>
|
|
945
|
-
More Filters
|
|
946
|
-
</Text>
|
|
947
|
-
{(statusFilters.size > 0 || methodFilters.size > 0) && (
|
|
948
|
-
<View
|
|
949
|
-
style={{
|
|
950
|
-
backgroundColor: AppColors.purple,
|
|
951
|
-
paddingHorizontal: 4.5,
|
|
952
|
-
paddingVertical: 1,
|
|
953
|
-
borderRadius: 6,
|
|
954
|
-
}}>
|
|
955
|
-
<Text
|
|
956
|
-
style={{
|
|
957
|
-
fontFamily: AppFonts.interBold,
|
|
958
|
-
fontSize: 8.5,
|
|
959
|
-
color: AppColors.white,
|
|
960
|
-
}}>
|
|
961
|
-
{statusFilters.size + methodFilters.size}
|
|
962
|
-
</Text>
|
|
963
|
-
</View>
|
|
964
|
-
)}
|
|
965
|
-
</View>
|
|
966
|
-
</TouchableScale>
|
|
967
657
|
</ScrollView>
|
|
968
|
-
</View>
|
|
969
658
|
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
flexDirection: 'row',
|
|
975
|
-
alignItems: 'center',
|
|
976
|
-
paddingHorizontal: 12,
|
|
977
|
-
marginBottom: 6,
|
|
978
|
-
gap: 6,
|
|
979
|
-
}}>
|
|
980
|
-
<Text
|
|
659
|
+
<TouchableScale
|
|
660
|
+
onPress={() => setIsFilterModalOpen(true)}
|
|
661
|
+
style={{flexShrink: 0}}>
|
|
662
|
+
<View
|
|
981
663
|
style={{
|
|
982
|
-
fontFamily: AppFonts.interBold,
|
|
983
|
-
fontSize: 9.5,
|
|
984
|
-
color: AppColors.grayTextWeak,
|
|
985
|
-
textTransform: 'uppercase',
|
|
986
|
-
letterSpacing: 0.5,
|
|
987
|
-
}}>
|
|
988
|
-
Scope:
|
|
989
|
-
</Text>
|
|
990
|
-
<ScrollView
|
|
991
|
-
horizontal
|
|
992
|
-
showsHorizontalScrollIndicator={false}
|
|
993
|
-
contentContainerStyle={{
|
|
994
664
|
flexDirection: 'row',
|
|
995
665
|
alignItems: 'center',
|
|
666
|
+
paddingHorizontal: 10,
|
|
667
|
+
paddingVertical: 4.5,
|
|
668
|
+
borderRadius: 8,
|
|
669
|
+
backgroundColor:
|
|
670
|
+
statusFilters.size > 0 || methodFilters.size > 0
|
|
671
|
+
? `${AppColors.purple}20`
|
|
672
|
+
: AppColors.grayBackground,
|
|
673
|
+
borderWidth: 1,
|
|
674
|
+
borderColor:
|
|
675
|
+
statusFilters.size > 0 || methodFilters.size > 0
|
|
676
|
+
? AppColors.purple
|
|
677
|
+
: AppColors.grayBorderSecondary,
|
|
996
678
|
gap: 5,
|
|
679
|
+
shadowColor: AppColors.black,
|
|
680
|
+
shadowOpacity: 0.04,
|
|
681
|
+
shadowRadius: 2,
|
|
682
|
+
shadowOffset: {width: 0, height: 1},
|
|
683
|
+
elevation: 1,
|
|
997
684
|
}}>
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
fontFamily: AppFonts.interBold,
|
|
1025
|
-
fontSize: 9.5,
|
|
1026
|
-
color: isSelected
|
|
1027
|
-
? AppColors.white
|
|
1028
|
-
: AppColors.grayText,
|
|
1029
|
-
}}>
|
|
1030
|
-
{s.label}
|
|
1031
|
-
</Text>
|
|
1032
|
-
</View>
|
|
1033
|
-
</TouchableScale>
|
|
1034
|
-
);
|
|
1035
|
-
})}
|
|
1036
|
-
</ScrollView>
|
|
1037
|
-
</View>
|
|
1038
|
-
)}
|
|
1039
|
-
|
|
1040
|
-
{/* Advanced Search Quick Query Suggestions Bar */}
|
|
1041
|
-
{(isSearchFocused || search.length > 0) && (
|
|
1042
|
-
<ScrollView
|
|
1043
|
-
horizontal
|
|
1044
|
-
showsHorizontalScrollIndicator={false}
|
|
1045
|
-
style={{marginBottom: 8, maxHeight: 28}}
|
|
1046
|
-
contentContainerStyle={{
|
|
1047
|
-
paddingHorizontal: 12,
|
|
1048
|
-
flexDirection: 'row',
|
|
1049
|
-
alignItems: 'center',
|
|
1050
|
-
gap: 5,
|
|
1051
|
-
}}>
|
|
1052
|
-
{QUICK_API_QUERY_TAGS.map(item => {
|
|
1053
|
-
const isSelected = search.includes(item.query);
|
|
1054
|
-
return (
|
|
1055
|
-
<TouchableScale
|
|
1056
|
-
key={item.query}
|
|
1057
|
-
onPress={() => {
|
|
1058
|
-
if (isSelected) {
|
|
1059
|
-
setSearch(prev =>
|
|
1060
|
-
prev.replace(item.query, '').trim(),
|
|
1061
|
-
);
|
|
1062
|
-
} else {
|
|
1063
|
-
setSearch(prev =>
|
|
1064
|
-
prev ? `${prev} ${item.query}`.trim() : item.query,
|
|
1065
|
-
);
|
|
1066
|
-
}
|
|
685
|
+
<FilterIcon
|
|
686
|
+
size={11}
|
|
687
|
+
color={
|
|
688
|
+
statusFilters.size > 0 || methodFilters.size > 0
|
|
689
|
+
? AppColors.purple
|
|
690
|
+
: AppColors.grayText
|
|
691
|
+
}
|
|
692
|
+
/>
|
|
693
|
+
<Text
|
|
694
|
+
style={{
|
|
695
|
+
fontFamily: AppFonts.interBold,
|
|
696
|
+
fontSize: 10.5,
|
|
697
|
+
color:
|
|
698
|
+
statusFilters.size > 0 || methodFilters.size > 0
|
|
699
|
+
? AppColors.purple
|
|
700
|
+
: AppColors.grayText,
|
|
701
|
+
}}>
|
|
702
|
+
More Filters
|
|
703
|
+
</Text>
|
|
704
|
+
{(statusFilters.size > 0 || methodFilters.size > 0) && (
|
|
705
|
+
<View
|
|
706
|
+
style={{
|
|
707
|
+
backgroundColor: AppColors.purple,
|
|
708
|
+
paddingHorizontal: 4.5,
|
|
709
|
+
paddingVertical: 1,
|
|
710
|
+
borderRadius: 6,
|
|
1067
711
|
}}>
|
|
1068
|
-
<
|
|
712
|
+
<Text
|
|
1069
713
|
style={{
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
paddingHorizontal: 7,
|
|
1074
|
-
paddingVertical: 2.5,
|
|
1075
|
-
borderRadius: 5,
|
|
1076
|
-
backgroundColor: isSelected
|
|
1077
|
-
? AppColors.purple
|
|
1078
|
-
: `${AppColors.purple}14`,
|
|
1079
|
-
borderWidth: 1,
|
|
1080
|
-
borderColor: isSelected
|
|
1081
|
-
? AppColors.purple
|
|
1082
|
-
: `${AppColors.purple}30`,
|
|
714
|
+
fontFamily: AppFonts.interBold,
|
|
715
|
+
fontSize: 8.5,
|
|
716
|
+
color: AppColors.white,
|
|
1083
717
|
}}>
|
|
1084
|
-
{
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
: AppColors.purple,
|
|
1092
|
-
}}>
|
|
1093
|
-
{item.label}
|
|
1094
|
-
</Text>
|
|
1095
|
-
</View>
|
|
1096
|
-
</TouchableScale>
|
|
1097
|
-
);
|
|
1098
|
-
})}
|
|
1099
|
-
</ScrollView>
|
|
1100
|
-
)}
|
|
718
|
+
{statusFilters.size + methodFilters.size}
|
|
719
|
+
</Text>
|
|
720
|
+
</View>
|
|
721
|
+
)}
|
|
722
|
+
</View>
|
|
723
|
+
</TouchableScale>
|
|
724
|
+
</View>
|
|
1101
725
|
|
|
1102
726
|
{/* Active Filter Helper Status Bar */}
|
|
1103
727
|
{(quickFilter !== 'all' ||
|
|
@@ -1145,17 +769,6 @@ const NetworkTab = React.memo(() => {
|
|
|
1145
769
|
</TouchableScale>
|
|
1146
770
|
</View>
|
|
1147
771
|
)}
|
|
1148
|
-
|
|
1149
|
-
{(search ||
|
|
1150
|
-
statusFilters.size > 0 ||
|
|
1151
|
-
methodFilters.size > 0 ||
|
|
1152
|
-
quickFilter !== 'all') && (
|
|
1153
|
-
<Text style={styles.resultCount}>
|
|
1154
|
-
{filteredLogs.length === logs.length
|
|
1155
|
-
? `${logs.length} requests`
|
|
1156
|
-
: `${filteredLogs.length} of ${logs.length} filtered requests`}
|
|
1157
|
-
</Text>
|
|
1158
|
-
)}
|
|
1159
772
|
</View>
|
|
1160
773
|
}
|
|
1161
774
|
ListEmptyComponent={
|
|
@@ -1192,29 +805,6 @@ const NetworkTab = React.memo(() => {
|
|
|
1192
805
|
]}
|
|
1193
806
|
keyboardShouldPersistTaps="handled"
|
|
1194
807
|
/>
|
|
1195
|
-
{/* #2 — always-visible scroll-to-top, bottom right */}
|
|
1196
|
-
<TouchableScale
|
|
1197
|
-
onPress={() => {
|
|
1198
|
-
try {
|
|
1199
|
-
apisListRef.current?.scrollToOffset({
|
|
1200
|
-
offset: 0,
|
|
1201
|
-
animated: true,
|
|
1202
|
-
});
|
|
1203
|
-
} catch {
|
|
1204
|
-
try {
|
|
1205
|
-
apisListRef.current?.scrollToIndex({
|
|
1206
|
-
index: 0,
|
|
1207
|
-
animated: true,
|
|
1208
|
-
});
|
|
1209
|
-
} catch {}
|
|
1210
|
-
}
|
|
1211
|
-
}}
|
|
1212
|
-
hitSlop={12}
|
|
1213
|
-
style={styles.scrollTopBtn}>
|
|
1214
|
-
<View style={{transform: [{rotate: '180deg'}]}}>
|
|
1215
|
-
<ChevronIcon color={AppColors.white} size={18} />
|
|
1216
|
-
</View>
|
|
1217
|
-
</TouchableScale>
|
|
1218
808
|
|
|
1219
809
|
{/* Modern Network Filter Modal */}
|
|
1220
810
|
<NetworkFilterModal
|