react-native-inapp-inspector 2.3.5 → 2.3.6
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/dist/commonjs/analytics.d.ts +0 -4
- package/dist/commonjs/analytics.js +0 -4
- package/dist/commonjs/bundle.d.ts +0 -4
- package/dist/commonjs/bundle.js +0 -4
- package/dist/commonjs/components/AnalyticsDetail.js +18 -27
- package/dist/commonjs/components/AnalyticsEventCard.js +9 -12
- package/dist/commonjs/components/AnalyticsGraph.js +10 -15
- package/dist/commonjs/components/AppHeaderLogo.js +0 -3
- package/dist/commonjs/components/BrandCircleIcon.js +15 -15
- package/dist/commonjs/components/BrandSquareIcon.js +20 -20
- package/dist/commonjs/components/CodeSnippet.js +6 -19
- package/dist/commonjs/components/ConsoleLogCard.js +0 -1
- package/dist/commonjs/components/CopyButton.js +0 -4
- package/dist/commonjs/components/DiffViewer.js +0 -2
- package/dist/commonjs/components/DomainHeader.js +0 -4
- package/dist/commonjs/components/EmptyState.js +0 -3
- package/dist/commonjs/components/ErrorBoundary.js +5 -10
- package/dist/commonjs/components/HeadersSection.js +0 -5
- package/dist/commonjs/components/HighlightText.js +1 -4
- package/dist/commonjs/components/Inspector/AnalyticsFilterModal.js +11 -26
- package/dist/commonjs/components/Inspector/AnalyticsTab.js +34 -40
- package/dist/commonjs/components/Inspector/BundleTab.js +56 -84
- package/dist/commonjs/components/Inspector/ConsoleTab.js +7 -7
- package/dist/commonjs/components/Inspector/CrashDetail.js +18 -20
- package/dist/commonjs/components/Inspector/CrashFilterModal.js +0 -1
- package/dist/commonjs/components/Inspector/CrashTab.js +11 -20
- package/dist/commonjs/components/Inspector/DeviceInfoTab.js +12 -24
- package/dist/commonjs/components/Inspector/FabLauncher.js +1 -1
- package/dist/commonjs/components/Inspector/InspectorContext.js +0 -2
- package/dist/commonjs/components/Inspector/InspectorHeader.js +7 -8
- package/dist/commonjs/components/Inspector/LogDetail.js +27 -29
- package/dist/commonjs/components/Inspector/MainScreen.js +9 -10
- package/dist/commonjs/components/Inspector/NetworkDetail.js +10 -11
- package/dist/commonjs/components/Inspector/NetworkTab.js +14 -14
- package/dist/commonjs/components/Inspector/NpmUpdateToast.js +6 -9
- package/dist/commonjs/components/Inspector/PerformanceTab.js +30 -43
- package/dist/commonjs/components/Inspector/ReduxDetail.js +18 -34
- package/dist/commonjs/components/Inspector/ReduxTab.js +11 -20
- package/dist/commonjs/components/Inspector/SettingsPanel.js +32 -36
- package/dist/commonjs/components/Inspector/SkeletonPlaceholder.js +6 -6
- package/dist/commonjs/components/Inspector/StorageTab.js +14 -26
- package/dist/commonjs/components/Inspector/UpdateAvailableModal.js +5 -6
- package/dist/commonjs/components/JsonViewer.js +3 -10
- package/dist/commonjs/components/LogCard.js +7 -7
- package/dist/commonjs/components/MetaAccordion.js +1 -7
- package/dist/commonjs/components/NetworkIcons.js +12 -16
- package/dist/commonjs/components/SectionHeader.js +0 -4
- package/dist/commonjs/components/SkeletonPlaceholder.js +6 -6
- package/dist/commonjs/components/Slider.js +6 -6
- package/dist/commonjs/components/SourcePageCard.js +0 -4
- package/dist/commonjs/components/TreeNode.js +0 -4
- package/dist/commonjs/console.d.ts +0 -4
- package/dist/commonjs/console.js +0 -4
- package/dist/commonjs/constants/index.js +6 -9
- package/dist/commonjs/constants/telemetryConfig.d.ts +7 -0
- package/dist/commonjs/constants/telemetryConfig.js +10 -0
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -3
- package/dist/commonjs/crash.d.ts +0 -4
- package/dist/commonjs/crash.js +0 -4
- package/dist/commonjs/customHooks/analyticsLogger.d.ts +0 -7
- package/dist/commonjs/customHooks/analyticsLogger.js +3 -59
- package/dist/commonjs/customHooks/bundleAnalyzer.d.ts +0 -9
- package/dist/commonjs/customHooks/bundleAnalyzer.js +3 -86
- package/dist/commonjs/customHooks/consoleLogger.js +0 -16
- package/dist/commonjs/customHooks/crashHandler.d.ts +0 -28
- package/dist/commonjs/customHooks/crashHandler.js +0 -55
- package/dist/commonjs/customHooks/logFilters.d.ts +0 -4
- package/dist/commonjs/customHooks/logFilters.js +0 -11
- package/dist/commonjs/customHooks/networkLogger.js +2 -13
- package/dist/commonjs/customHooks/performanceTracker.d.ts +0 -27
- package/dist/commonjs/customHooks/performanceTracker.js +0 -31
- package/dist/commonjs/customHooks/reduxLogger.d.ts +0 -12
- package/dist/commonjs/customHooks/reduxLogger.js +0 -51
- package/dist/commonjs/customHooks/storageInspector.d.ts +0 -40
- package/dist/commonjs/customHooks/storageInspector.js +1 -56
- package/dist/commonjs/decorators/index.d.ts +0 -37
- package/dist/commonjs/decorators/index.js +0 -42
- package/dist/commonjs/helpers/gaAnalyticsRegistry.d.ts +0 -10
- package/dist/commonjs/helpers/gaAnalyticsRegistry.js +0 -26
- package/dist/commonjs/helpers/index.d.ts +0 -7
- package/dist/commonjs/helpers/index.js +1 -42
- package/dist/commonjs/helpers/memoryManager.d.ts +0 -11
- package/dist/commonjs/helpers/memoryManager.js +0 -13
- package/dist/commonjs/helpers/searchQueryParser.d.ts +0 -4
- package/dist/commonjs/helpers/searchQueryParser.js +0 -18
- package/dist/commonjs/helpers/settingsStore.js +0 -8
- package/dist/commonjs/helpers/telemetry.d.ts +2 -0
- package/dist/commonjs/helpers/telemetry.js +302 -0
- package/dist/commonjs/i18n/index.d.ts +0 -9
- package/dist/commonjs/i18n/index.js +0 -15
- package/dist/commonjs/index.js +15 -97
- package/dist/commonjs/native/NativeInspector.d.ts +0 -54
- package/dist/commonjs/native/NativeInspector.js +0 -56
- package/dist/commonjs/network.d.ts +0 -4
- package/dist/commonjs/network.js +0 -4
- package/dist/commonjs/performance.d.ts +0 -4
- package/dist/commonjs/performance.js +0 -4
- package/dist/commonjs/redux.d.ts +0 -4
- package/dist/commonjs/redux.js +0 -4
- package/dist/commonjs/storage.d.ts +0 -4
- package/dist/commonjs/storage.js +0 -4
- package/dist/commonjs/styles/AppColors.d.ts +0 -3
- package/dist/commonjs/styles/AppColors.js +15 -30
- package/dist/commonjs/styles/AppFonts.d.ts +0 -4
- package/dist/commonjs/styles/AppFonts.js +0 -4
- package/dist/commonjs/styles/common.js +0 -11
- package/dist/commonjs/styles/index.js +0 -8
- package/dist/commonjs/types/enums.js +0 -3
- package/dist/commonjs/types/interfaces.d.ts +3 -3
- package/dist/esm/analytics.d.ts +0 -4
- package/dist/esm/analytics.js +0 -4
- package/dist/esm/bundle.d.ts +0 -4
- package/dist/esm/bundle.js +0 -4
- package/dist/esm/components/AnalyticsDetail.js +18 -27
- package/dist/esm/components/AnalyticsEventCard.js +9 -12
- package/dist/esm/components/AnalyticsGraph.js +10 -15
- package/dist/esm/components/AppHeaderLogo.js +0 -3
- package/dist/esm/components/BrandCircleIcon.js +15 -15
- package/dist/esm/components/BrandSquareIcon.js +20 -20
- package/dist/esm/components/CodeSnippet.js +6 -19
- package/dist/esm/components/ConsoleLogCard.js +0 -1
- package/dist/esm/components/CopyButton.js +0 -4
- package/dist/esm/components/DiffViewer.js +0 -2
- package/dist/esm/components/DomainHeader.js +0 -4
- package/dist/esm/components/EmptyState.js +0 -3
- package/dist/esm/components/ErrorBoundary.js +5 -10
- package/dist/esm/components/HeadersSection.js +0 -5
- package/dist/esm/components/HighlightText.js +1 -4
- package/dist/esm/components/Inspector/AnalyticsFilterModal.js +11 -26
- package/dist/esm/components/Inspector/AnalyticsTab.js +34 -40
- package/dist/esm/components/Inspector/BundleTab.js +56 -84
- package/dist/esm/components/Inspector/ConsoleTab.js +7 -7
- package/dist/esm/components/Inspector/CrashDetail.js +18 -20
- package/dist/esm/components/Inspector/CrashFilterModal.js +0 -1
- package/dist/esm/components/Inspector/CrashTab.js +11 -20
- package/dist/esm/components/Inspector/DeviceInfoTab.js +12 -24
- package/dist/esm/components/Inspector/FabLauncher.js +1 -1
- package/dist/esm/components/Inspector/InspectorContext.js +0 -2
- package/dist/esm/components/Inspector/InspectorHeader.js +7 -8
- package/dist/esm/components/Inspector/LogDetail.js +27 -29
- package/dist/esm/components/Inspector/MainScreen.js +9 -10
- package/dist/esm/components/Inspector/NetworkDetail.js +10 -11
- package/dist/esm/components/Inspector/NetworkTab.js +14 -14
- package/dist/esm/components/Inspector/NpmUpdateToast.js +6 -9
- package/dist/esm/components/Inspector/PerformanceTab.js +30 -43
- package/dist/esm/components/Inspector/ReduxDetail.js +18 -34
- package/dist/esm/components/Inspector/ReduxTab.js +11 -20
- package/dist/esm/components/Inspector/SettingsPanel.js +32 -36
- package/dist/esm/components/Inspector/SkeletonPlaceholder.js +6 -6
- package/dist/esm/components/Inspector/StorageTab.js +14 -26
- package/dist/esm/components/Inspector/UpdateAvailableModal.js +5 -6
- package/dist/esm/components/JsonViewer.js +3 -10
- package/dist/esm/components/LogCard.js +7 -7
- package/dist/esm/components/MetaAccordion.js +1 -7
- package/dist/esm/components/NetworkIcons.js +12 -16
- package/dist/esm/components/SectionHeader.js +0 -4
- package/dist/esm/components/SkeletonPlaceholder.js +6 -6
- package/dist/esm/components/Slider.js +6 -6
- package/dist/esm/components/SourcePageCard.js +0 -4
- package/dist/esm/components/TreeNode.js +0 -4
- package/dist/esm/console.d.ts +0 -4
- package/dist/esm/console.js +0 -4
- package/dist/esm/constants/index.js +6 -9
- package/dist/esm/constants/telemetryConfig.d.ts +7 -0
- package/dist/esm/constants/telemetryConfig.js +7 -0
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -3
- package/dist/esm/crash.d.ts +0 -4
- package/dist/esm/crash.js +0 -4
- package/dist/esm/customHooks/analyticsLogger.d.ts +0 -7
- package/dist/esm/customHooks/analyticsLogger.js +3 -59
- package/dist/esm/customHooks/bundleAnalyzer.d.ts +0 -9
- package/dist/esm/customHooks/bundleAnalyzer.js +3 -86
- package/dist/esm/customHooks/consoleLogger.js +0 -16
- package/dist/esm/customHooks/crashHandler.d.ts +0 -28
- package/dist/esm/customHooks/crashHandler.js +0 -55
- package/dist/esm/customHooks/logFilters.d.ts +0 -4
- package/dist/esm/customHooks/logFilters.js +0 -11
- package/dist/esm/customHooks/networkLogger.js +2 -13
- package/dist/esm/customHooks/performanceTracker.d.ts +0 -27
- package/dist/esm/customHooks/performanceTracker.js +0 -31
- package/dist/esm/customHooks/reduxLogger.d.ts +0 -12
- package/dist/esm/customHooks/reduxLogger.js +0 -51
- package/dist/esm/customHooks/storageInspector.d.ts +0 -40
- package/dist/esm/customHooks/storageInspector.js +1 -56
- package/dist/esm/decorators/index.d.ts +0 -37
- package/dist/esm/decorators/index.js +0 -42
- package/dist/esm/helpers/gaAnalyticsRegistry.d.ts +0 -10
- package/dist/esm/helpers/gaAnalyticsRegistry.js +0 -26
- package/dist/esm/helpers/index.d.ts +0 -7
- package/dist/esm/helpers/index.js +1 -42
- package/dist/esm/helpers/memoryManager.d.ts +0 -11
- package/dist/esm/helpers/memoryManager.js +0 -13
- package/dist/esm/helpers/searchQueryParser.d.ts +0 -4
- package/dist/esm/helpers/searchQueryParser.js +0 -18
- package/dist/esm/helpers/settingsStore.js +0 -8
- package/dist/esm/helpers/telemetry.d.ts +2 -0
- package/dist/esm/helpers/telemetry.js +298 -0
- package/dist/esm/i18n/index.d.ts +0 -9
- package/dist/esm/i18n/index.js +0 -15
- package/dist/esm/index.js +15 -97
- package/dist/esm/native/NativeInspector.d.ts +0 -54
- package/dist/esm/native/NativeInspector.js +0 -56
- package/dist/esm/network.d.ts +0 -4
- package/dist/esm/network.js +0 -4
- package/dist/esm/performance.d.ts +0 -4
- package/dist/esm/performance.js +0 -4
- package/dist/esm/redux.d.ts +0 -4
- package/dist/esm/redux.js +0 -4
- package/dist/esm/storage.d.ts +0 -4
- package/dist/esm/storage.js +0 -4
- package/dist/esm/styles/AppColors.d.ts +0 -3
- package/dist/esm/styles/AppColors.js +15 -30
- package/dist/esm/styles/AppFonts.d.ts +0 -4
- package/dist/esm/styles/AppFonts.js +0 -4
- package/dist/esm/styles/common.js +0 -11
- package/dist/esm/styles/index.js +0 -8
- package/dist/esm/types/enums.js +0 -3
- package/dist/esm/types/interfaces.d.ts +3 -3
- package/package.json +2 -2
- package/src/constants/telemetryConfig.ts +16 -0
- package/src/constants/version.ts +1 -1
- package/src/helpers/telemetry.ts +341 -0
- package/src/index.tsx +15 -1
- package/src/types/interfaces.ts +3 -0
|
@@ -69,8 +69,6 @@ const CrashDetail = react_1.default.memo(() => {
|
|
|
69
69
|
}
|
|
70
70
|
return [];
|
|
71
71
|
}, [selectedCrash]);
|
|
72
|
-
// Strip keys holding explicit undefined values (e.g. componentStack) so the
|
|
73
|
-
// Raw JSON tab never renders a literal "undefined".
|
|
74
72
|
const rawCrashData = (0, react_1.useMemo)(() => {
|
|
75
73
|
try {
|
|
76
74
|
return JSON.parse(JSON.stringify(selectedCrash));
|
|
@@ -126,12 +124,12 @@ const CrashDetail = react_1.default.memo(() => {
|
|
|
126
124
|
},
|
|
127
125
|
];
|
|
128
126
|
return (<react_native_1.View style={{ flex: 1, backgroundColor: AppColors_1.AppColors.grayBackground }}>
|
|
129
|
-
|
|
127
|
+
|
|
130
128
|
<react_native_1.View style={{ paddingHorizontal: 8, paddingTop: 6 }}>
|
|
131
129
|
<react_native_1.View style={localStyles.infoBar}>
|
|
132
|
-
|
|
130
|
+
|
|
133
131
|
<react_native_1.View style={localStyles.badgeRow}>
|
|
134
|
-
|
|
132
|
+
|
|
135
133
|
<react_native_1.View style={[
|
|
136
134
|
localStyles.pillBadge,
|
|
137
135
|
{
|
|
@@ -163,7 +161,7 @@ const CrashDetail = react_1.default.memo(() => {
|
|
|
163
161
|
</react_native_1.Text>
|
|
164
162
|
</react_native_1.View>
|
|
165
163
|
|
|
166
|
-
|
|
164
|
+
|
|
167
165
|
<react_native_1.View style={[
|
|
168
166
|
localStyles.pillBadge,
|
|
169
167
|
{
|
|
@@ -178,7 +176,7 @@ const CrashDetail = react_1.default.memo(() => {
|
|
|
178
176
|
|
|
179
177
|
<react_native_1.View style={{ flex: 1 }}/>
|
|
180
178
|
|
|
181
|
-
|
|
179
|
+
|
|
182
180
|
<TouchableScale_1.default onPress={handleCopyReport} hitSlop={10} style={[
|
|
183
181
|
localStyles.actionButton,
|
|
184
182
|
copiedSuccess && { backgroundColor: AppColors_1.AppColors.mintGreenBg, borderColor: AppColors_1.AppColors.mintGreenBorder },
|
|
@@ -193,12 +191,12 @@ const CrashDetail = react_1.default.memo(() => {
|
|
|
193
191
|
</TouchableScale_1.default>
|
|
194
192
|
</react_native_1.View>
|
|
195
193
|
|
|
196
|
-
|
|
194
|
+
|
|
197
195
|
<react_native_1.Text style={localStyles.titleText}>
|
|
198
196
|
{selectedCrash.message}
|
|
199
197
|
</react_native_1.Text>
|
|
200
198
|
|
|
201
|
-
|
|
199
|
+
|
|
202
200
|
<react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={localStyles.metaRow}>
|
|
203
201
|
{originFrame && (<react_native_1.View style={localStyles.metaChip}>
|
|
204
202
|
<NetworkIcons_1.TerminalIcon color={AppColors_1.AppColors.grayText} size={11}/>
|
|
@@ -224,12 +222,12 @@ const CrashDetail = react_1.default.memo(() => {
|
|
|
224
222
|
</react_native_1.View>
|
|
225
223
|
</react_native_1.View>
|
|
226
224
|
|
|
227
|
-
|
|
225
|
+
|
|
228
226
|
<react_native_1.View style={{ paddingHorizontal: 8, paddingTop: 6, paddingBottom: 4 }}>
|
|
229
227
|
<SegmentedTabs_1.default tabs={tabsConfig} activeKey={activeSubTab} onChange={tab => setActiveSubTab(tab)}/>
|
|
230
228
|
</react_native_1.View>
|
|
231
229
|
|
|
232
|
-
|
|
230
|
+
|
|
233
231
|
{(activeSubTab === 'stack' || activeSubTab === 'raw') && (<react_native_1.View style={{ paddingHorizontal: 12, paddingBottom: 6 }}>
|
|
234
232
|
<react_native_1.View style={localStyles.searchContainer}>
|
|
235
233
|
<NetworkIcons_1.SearchIcon color={AppColors_1.AppColors.grayText} size={14}/>
|
|
@@ -240,11 +238,11 @@ const CrashDetail = react_1.default.memo(() => {
|
|
|
240
238
|
</react_native_1.View>
|
|
241
239
|
</react_native_1.View>)}
|
|
242
240
|
|
|
243
|
-
|
|
241
|
+
|
|
244
242
|
<react_native_1.ScrollView style={{ flex: 1 }} contentContainerStyle={{ padding: 12, paddingBottom: 40, gap: 12 }}>
|
|
245
|
-
|
|
243
|
+
|
|
246
244
|
{activeSubTab === 'stack' && (<react_native_1.View style={{ gap: 10 }}>
|
|
247
|
-
|
|
245
|
+
|
|
248
246
|
<react_native_1.View style={localStyles.filterChipsRow}>
|
|
249
247
|
<TouchableScale_1.default onPress={() => setStackFilter('app')} style={[
|
|
250
248
|
localStyles.filterChip,
|
|
@@ -277,7 +275,7 @@ const CrashDetail = react_1.default.memo(() => {
|
|
|
277
275
|
</TouchableScale_1.default>
|
|
278
276
|
</react_native_1.View>
|
|
279
277
|
|
|
280
|
-
|
|
278
|
+
|
|
281
279
|
{displayedFrames.length > 0 ? (displayedFrames
|
|
282
280
|
.filter(frame => {
|
|
283
281
|
if (!searchQuery.trim())
|
|
@@ -363,9 +361,9 @@ const CrashDetail = react_1.default.memo(() => {
|
|
|
363
361
|
</react_native_1.View>)}
|
|
364
362
|
</react_native_1.View>)}
|
|
365
363
|
|
|
366
|
-
|
|
364
|
+
|
|
367
365
|
{activeSubTab === 'diagnostics' && (<react_native_1.View style={{ gap: 12 }}>
|
|
368
|
-
|
|
366
|
+
|
|
369
367
|
<react_native_1.View style={localStyles.sectionCard}>
|
|
370
368
|
<react_native_1.View style={[
|
|
371
369
|
localStyles.sectionCardHeader,
|
|
@@ -428,7 +426,7 @@ const CrashDetail = react_1.default.memo(() => {
|
|
|
428
426
|
</react_native_1.View>
|
|
429
427
|
</react_native_1.View>
|
|
430
428
|
|
|
431
|
-
|
|
429
|
+
|
|
432
430
|
{selectedCrash.memoryInfo && (<react_native_1.View style={localStyles.sectionCard}>
|
|
433
431
|
<react_native_1.View style={[
|
|
434
432
|
localStyles.sectionCardHeader,
|
|
@@ -461,7 +459,7 @@ const CrashDetail = react_1.default.memo(() => {
|
|
|
461
459
|
</react_native_1.View>)}
|
|
462
460
|
</react_native_1.View>)}
|
|
463
461
|
|
|
464
|
-
|
|
462
|
+
|
|
465
463
|
{activeSubTab === 'breadcrumbs' && (<react_native_1.View style={{ gap: 10 }}>
|
|
466
464
|
{selectedCrash.breadcrumbs && selectedCrash.breadcrumbs.length > 0 && (<react_native_1.View style={{
|
|
467
465
|
flexDirection: 'row',
|
|
@@ -499,7 +497,7 @@ const CrashDetail = react_1.default.memo(() => {
|
|
|
499
497
|
</react_native_1.View>)}
|
|
500
498
|
</react_native_1.View>)}
|
|
501
499
|
|
|
502
|
-
|
|
500
|
+
|
|
503
501
|
{activeSubTab === 'raw' && (<react_native_1.View style={localStyles.rawContainer}>
|
|
504
502
|
<JsonViewer_1.default data={rawCrashData} search={searchQuery} wrap/>
|
|
505
503
|
</react_native_1.View>)}
|
|
@@ -72,7 +72,6 @@ const CrashTab = react_1.default.memo(() => {
|
|
|
72
72
|
const [crashFilters, setCrashFilters] = (0, react_1.useState)(CrashFilterModal_1.DEFAULT_CRASH_FILTERS);
|
|
73
73
|
const [isFilterModalOpen, setIsFilterModalOpen] = (0, react_1.useState)(false);
|
|
74
74
|
const [detailSubTab, setDetailSubTab] = (0, react_1.useState)('stack');
|
|
75
|
-
// Calculate statistics
|
|
76
75
|
const stats = (0, react_1.useMemo)(() => {
|
|
77
76
|
const total = crashRecords.length;
|
|
78
77
|
let fatalCount = 0;
|
|
@@ -94,10 +93,8 @@ const CrashTab = react_1.default.memo(() => {
|
|
|
94
93
|
});
|
|
95
94
|
return { total, fatalCount, jsCount, promiseCount, renderCount, nativeCount };
|
|
96
95
|
}, [crashRecords]);
|
|
97
|
-
// Filtered crash list
|
|
98
96
|
const filteredList = (0, react_1.useMemo)(() => {
|
|
99
97
|
let list = crashRecords.filter(item => {
|
|
100
|
-
// Type filter
|
|
101
98
|
if (filterType === 'fatal' && !item.isFatal)
|
|
102
99
|
return false;
|
|
103
100
|
if (filterType === 'js' && item.type !== 'js')
|
|
@@ -108,7 +105,6 @@ const CrashTab = react_1.default.memo(() => {
|
|
|
108
105
|
return false;
|
|
109
106
|
if (filterType === 'native' && item.type !== 'native')
|
|
110
107
|
return false;
|
|
111
|
-
// Modal filters: crash types
|
|
112
108
|
if (crashFilters.types.size > 0 && !crashFilters.types.has('all')) {
|
|
113
109
|
const matches = (crashFilters.types.has('fatal') && item.isFatal) ||
|
|
114
110
|
(crashFilters.types.has('js') && item.type === 'js') ||
|
|
@@ -118,7 +114,6 @@ const CrashTab = react_1.default.memo(() => {
|
|
|
118
114
|
if (!matches)
|
|
119
115
|
return false;
|
|
120
116
|
}
|
|
121
|
-
// Modal filters: time window
|
|
122
117
|
if (crashFilters.timeWindow !== 'all') {
|
|
123
118
|
const now = Date.now();
|
|
124
119
|
const cutoff = crashFilters.timeWindow === '15m'
|
|
@@ -131,13 +126,11 @@ const CrashTab = react_1.default.memo(() => {
|
|
|
131
126
|
if (item.timestamp < cutoff)
|
|
132
127
|
return false;
|
|
133
128
|
}
|
|
134
|
-
// Modal filters: platform
|
|
135
129
|
if (crashFilters.platform !== 'all') {
|
|
136
130
|
const platform = (item.deviceInfo?.platform || '').toLowerCase();
|
|
137
131
|
if (platform !== crashFilters.platform)
|
|
138
132
|
return false;
|
|
139
133
|
}
|
|
140
|
-
// Modal filters: engine
|
|
141
134
|
if (crashFilters.engine !== 'all') {
|
|
142
135
|
const isHermes = item.deviceInfo?.isHermes;
|
|
143
136
|
if (crashFilters.engine === 'hermes' && isHermes !== true)
|
|
@@ -145,7 +138,6 @@ const CrashTab = react_1.default.memo(() => {
|
|
|
145
138
|
if (crashFilters.engine === 'jsc' && (isHermes === true))
|
|
146
139
|
return false;
|
|
147
140
|
}
|
|
148
|
-
// Search filter
|
|
149
141
|
if (searchQuery.trim().length > 0) {
|
|
150
142
|
const queryTokens = searchQuery.trim().toLowerCase().split(/\s+/).filter(Boolean);
|
|
151
143
|
const searchTarget = [
|
|
@@ -160,7 +152,6 @@ const CrashTab = react_1.default.memo(() => {
|
|
|
160
152
|
}
|
|
161
153
|
return true;
|
|
162
154
|
});
|
|
163
|
-
// Modal filters: sort order
|
|
164
155
|
if (crashFilters.sortBy === 'time_asc') {
|
|
165
156
|
list = [...list].sort((a, b) => a.timestamp - b.timestamp);
|
|
166
157
|
}
|
|
@@ -201,7 +192,7 @@ const CrashTab = react_1.default.memo(() => {
|
|
|
201
192
|
localStyles.cardContainer,
|
|
202
193
|
isFatal && localStyles.fatalCardBorder,
|
|
203
194
|
]}>
|
|
204
|
-
|
|
195
|
+
|
|
205
196
|
<react_native_1.View style={localStyles.cardHeader}>
|
|
206
197
|
<react_native_1.View style={localStyles.badgeRow}>
|
|
207
198
|
<react_native_1.View style={localStyles.sNoBadge}>
|
|
@@ -239,12 +230,12 @@ const CrashTab = react_1.default.memo(() => {
|
|
|
239
230
|
</react_native_1.View>
|
|
240
231
|
</react_native_1.View>
|
|
241
232
|
|
|
242
|
-
|
|
233
|
+
|
|
243
234
|
<react_native_1.View style={{ marginVertical: 6 }}>
|
|
244
235
|
<HighlightText_1.default text={item.message || t('crash.unknownException')} highlight={searchQuery} numberOfLines={3} style={localStyles.errorMessageText}/>
|
|
245
236
|
</react_native_1.View>
|
|
246
237
|
|
|
247
|
-
|
|
238
|
+
|
|
248
239
|
{topFrame && (<react_native_1.View style={localStyles.locationRow}>
|
|
249
240
|
<NetworkIcons_1.TerminalIcon size={12} color={AppColors_1.AppColors.grayTextWeak}/>
|
|
250
241
|
<react_native_1.Text numberOfLines={1} ellipsizeMode="middle" style={localStyles.locationText}>
|
|
@@ -255,7 +246,7 @@ const CrashTab = react_1.default.memo(() => {
|
|
|
255
246
|
</react_native_1.Text>
|
|
256
247
|
</react_native_1.View>)}
|
|
257
248
|
|
|
258
|
-
|
|
249
|
+
|
|
259
250
|
<react_native_1.View style={localStyles.cardFooter}>
|
|
260
251
|
<react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 6, flexWrap: 'wrap' }}>
|
|
261
252
|
{item.deviceInfo && (<react_native_1.View style={localStyles.metaPill}>
|
|
@@ -294,7 +285,7 @@ const CrashTab = react_1.default.memo(() => {
|
|
|
294
285
|
}, [searchQuery, setSelectedCrash]);
|
|
295
286
|
return (<react_native_1.View style={localStyles.container}>
|
|
296
287
|
{crashRecords.length > 0 && (<>
|
|
297
|
-
|
|
288
|
+
|
|
298
289
|
<react_native_1.View style={localStyles.statsBar}>
|
|
299
290
|
<react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={localStyles.statsScrollContent}>
|
|
300
291
|
<react_native_1.View style={[localStyles.statChip, localStyles.statChipActive]}>
|
|
@@ -339,7 +330,7 @@ const CrashTab = react_1.default.memo(() => {
|
|
|
339
330
|
</react_native_1.ScrollView>
|
|
340
331
|
</react_native_1.View>
|
|
341
332
|
|
|
342
|
-
|
|
333
|
+
|
|
343
334
|
<react_native_1.View style={localStyles.controlsContainer}>
|
|
344
335
|
<react_native_1.View style={localStyles.searchRow}>
|
|
345
336
|
<react_native_1.View style={localStyles.searchInputWrapper}>
|
|
@@ -366,7 +357,7 @@ const CrashTab = react_1.default.memo(() => {
|
|
|
366
357
|
</react_native_1.View>)}
|
|
367
358
|
</react_native_1.View>
|
|
368
359
|
|
|
369
|
-
|
|
360
|
+
|
|
370
361
|
<TouchableScale_1.default onPress={() => setIsFilterModalOpen(true)} style={[
|
|
371
362
|
localStyles.filterButton,
|
|
372
363
|
!(0, CrashFilterModal_1.isCrashFiltersDefault)(crashFilters) && {
|
|
@@ -390,13 +381,13 @@ const CrashTab = react_1.default.memo(() => {
|
|
|
390
381
|
}}/>)}
|
|
391
382
|
</TouchableScale_1.default>
|
|
392
383
|
|
|
393
|
-
|
|
384
|
+
|
|
394
385
|
<TouchableScale_1.default onPress={handleClearAll} style={localStyles.clearButton}>
|
|
395
386
|
<NetworkIcons_1.TrashIcon size={14} color={AppColors_1.AppColors.errorColor}/>
|
|
396
387
|
</TouchableScale_1.default>
|
|
397
388
|
</react_native_1.View>
|
|
398
389
|
|
|
399
|
-
|
|
390
|
+
|
|
400
391
|
<react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={localStyles.filterScrollContent}>
|
|
401
392
|
{[
|
|
402
393
|
{ key: 'all', label: t('crash.filterAll'), Icon: NetworkIcons_1.LayersIcon },
|
|
@@ -424,7 +415,7 @@ const CrashTab = react_1.default.memo(() => {
|
|
|
424
415
|
</react_native_1.View>
|
|
425
416
|
</>)}
|
|
426
417
|
|
|
427
|
-
|
|
418
|
+
|
|
428
419
|
{filteredList.length === 0 ? (<react_native_1.ScrollView contentContainerStyle={localStyles.emptyContainer} showsVerticalScrollIndicator={false}>
|
|
429
420
|
<react_native_1.View style={localStyles.emptyIconCircle}>
|
|
430
421
|
<NetworkIcons_1.ShieldAlertIcon size={38} color={AppColors_1.AppColors.greenColor}/>
|
|
@@ -452,7 +443,7 @@ const CrashTab = react_1.default.memo(() => {
|
|
|
452
443
|
</TouchableScale_1.default>)}
|
|
453
444
|
</react_native_1.ScrollView>) : (<react_native_1.FlatList data={filteredList} keyExtractor={item => item.id} renderItem={renderCard} initialNumToRender={12} maxToRenderPerBatch={8} windowSize={5} removeClippedSubviews={true} renderToHardwareTextureAndroid={true} contentContainerStyle={localStyles.listContent} showsVerticalScrollIndicator={false} ListFooterComponent={<EndOfListFooter_1.default />}/>)}
|
|
454
445
|
|
|
455
|
-
|
|
446
|
+
|
|
456
447
|
<CrashFilterModal_1.default visible={isFilterModalOpen} onClose={() => setIsFilterModalOpen(false)} filters={crashFilters} onApply={setCrashFilters} searchQuery={searchQuery}/>
|
|
457
448
|
</react_native_1.View>);
|
|
458
449
|
});
|
|
@@ -109,7 +109,6 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
109
109
|
const [ipAddress, setIpAddress] = (0, react_1.useState)('Detecting...');
|
|
110
110
|
const [deviceUptime, setDeviceUptime] = (0, react_1.useState)('0s');
|
|
111
111
|
const startTimeRef = react_1.default.useRef(Date.now());
|
|
112
|
-
// Load hardware metrics and IP
|
|
113
112
|
const fetchMetrics = (0, react_1.useCallback)(async () => {
|
|
114
113
|
try {
|
|
115
114
|
const [devMetrics, sysMetrics] = await Promise.all([
|
|
@@ -120,7 +119,6 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
120
119
|
setSystemMetrics(sysMetrics);
|
|
121
120
|
}
|
|
122
121
|
catch {
|
|
123
|
-
// Fallback
|
|
124
122
|
}
|
|
125
123
|
finally {
|
|
126
124
|
setIsLoading(false);
|
|
@@ -131,11 +129,9 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
131
129
|
const interval = setInterval(fetchMetrics, 3000);
|
|
132
130
|
return () => clearInterval(interval);
|
|
133
131
|
}, [fetchMetrics]);
|
|
134
|
-
// Probe local IP address
|
|
135
132
|
(0, react_1.useEffect)(() => {
|
|
136
133
|
let isMounted = true;
|
|
137
134
|
const probeIp = async () => {
|
|
138
|
-
// 1. Try NativeModules or PlatformConstants
|
|
139
135
|
try {
|
|
140
136
|
const serverHost = react_native_1.NativeModules?.PlatformConstants?.serverHost ||
|
|
141
137
|
react_native_1.NativeModules?.AndroidConstants?.serverHost ||
|
|
@@ -150,7 +146,6 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
150
146
|
}
|
|
151
147
|
}
|
|
152
148
|
catch { }
|
|
153
|
-
// 2. Query dynamic candidate ip endpoints
|
|
154
149
|
try {
|
|
155
150
|
const controller = new AbortController();
|
|
156
151
|
const timer = setTimeout(() => controller.abort(), 1200);
|
|
@@ -176,7 +171,6 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
176
171
|
isMounted = false;
|
|
177
172
|
};
|
|
178
173
|
}, []);
|
|
179
|
-
// Calculate Uptime
|
|
180
174
|
(0, react_1.useEffect)(() => {
|
|
181
175
|
const updateUptime = () => {
|
|
182
176
|
const diffSec = Math.floor((Date.now() - startTimeRef.current) / 1000);
|
|
@@ -197,7 +191,6 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
197
191
|
updateUptime();
|
|
198
192
|
return () => clearInterval(timer);
|
|
199
193
|
}, []);
|
|
200
|
-
// Screen Geometry
|
|
201
194
|
const windowDims = react_native_1.Dimensions.get('window');
|
|
202
195
|
const screenDims = react_native_1.Dimensions.get('screen');
|
|
203
196
|
const pixelRatio = react_native_1.PixelRatio.get();
|
|
@@ -207,7 +200,6 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
207
200
|
const statusBarHeight = react_native_1.Platform.OS === 'android'
|
|
208
201
|
? react_native_1.StatusBar.currentHeight || 24
|
|
209
202
|
: (windowDims.height >= 812 ? 44 : 20);
|
|
210
|
-
// Pseudo-UDID deterministic identifier
|
|
211
203
|
const pseudoUDID = (0, react_1.useMemo)(() => {
|
|
212
204
|
const raw = `${react_native_1.Platform.OS}-${react_native_1.Platform.Version}-${screenDims.width}x${screenDims.height}-${pixelRatio}-${react_native_1.Platform.constants?.Brand || 'generic'}`;
|
|
213
205
|
let hash = 0;
|
|
@@ -218,7 +210,6 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
218
210
|
const hex = Math.abs(hash).toString(16).padStart(8, '0');
|
|
219
211
|
return `UDID-${react_native_1.Platform.OS.toUpperCase()}-${hex.slice(0, 4)}-${hex.slice(4, 8)}-${Date.now().toString(16).slice(-4)}`.toUpperCase();
|
|
220
212
|
}, [screenDims.width, screenDims.height, pixelRatio]);
|
|
221
|
-
// Hermes & TurboModule engine status
|
|
222
213
|
const isHermes = Boolean(global?.HermesInternal);
|
|
223
214
|
const isTurboModule = Boolean(globalThis?.__turboModuleProxy);
|
|
224
215
|
const reactNativeVersion = (0, react_1.useMemo)(() => {
|
|
@@ -242,7 +233,6 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
242
233
|
const freeStorageGb = deviceMetrics?.freeStorage
|
|
243
234
|
? (deviceMetrics.freeStorage / (1024 * 1024 * 1024)).toFixed(1)
|
|
244
235
|
: '64.2';
|
|
245
|
-
// Sub-Tab Definitions
|
|
246
236
|
const subTabs = (0, react_1.useMemo)(() => [
|
|
247
237
|
{
|
|
248
238
|
key: 'overview',
|
|
@@ -275,7 +265,6 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
275
265
|
icon: (c) => <NetworkIcons_1.KeyIcon size={12} color={c}/>,
|
|
276
266
|
},
|
|
277
267
|
], []);
|
|
278
|
-
// Full device JSON export
|
|
279
268
|
const fullDeviceData = (0, react_1.useMemo)(() => ({
|
|
280
269
|
identifiers: {
|
|
281
270
|
pseudoUDID,
|
|
@@ -388,7 +377,6 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
388
377
|
(0, helpers_1.copyToClipboard)(md, 'Device Markdown Report');
|
|
389
378
|
(0, toast_1.showToast)('Copied Markdown Report to Clipboard!');
|
|
390
379
|
};
|
|
391
|
-
// Filter items matching search
|
|
392
380
|
const isMatch = (text) => {
|
|
393
381
|
if (!search.trim())
|
|
394
382
|
return true;
|
|
@@ -403,7 +391,7 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
403
391
|
pseudoUDID.toLowerCase().includes(query));
|
|
404
392
|
}, [search, fullDeviceData, ipAddress, pseudoUDID]);
|
|
405
393
|
return (<react_native_1.View style={styles.container}>
|
|
406
|
-
|
|
394
|
+
|
|
407
395
|
<react_native_1.View style={styles.subTabsWrapper}>
|
|
408
396
|
<react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={styles.subTabsContainer}>
|
|
409
397
|
{subTabs.map(tab => {
|
|
@@ -422,7 +410,7 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
422
410
|
</react_native_1.ScrollView>
|
|
423
411
|
</react_native_1.View>
|
|
424
412
|
|
|
425
|
-
|
|
413
|
+
|
|
426
414
|
<react_native_1.View style={styles.actionBar}>
|
|
427
415
|
<react_native_1.View style={styles.searchBar}>
|
|
428
416
|
<NetworkIcons_1.SearchIcon size={14} color={AppColors_1.AppColors.grayTextWeak}/>
|
|
@@ -443,9 +431,9 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
443
431
|
</TouchableScale_1.default>
|
|
444
432
|
</react_native_1.View>
|
|
445
433
|
|
|
446
|
-
|
|
434
|
+
|
|
447
435
|
<react_native_1.ScrollView style={styles.scrollArea} contentContainerStyle={styles.scrollContent} showsVerticalScrollIndicator={false}>
|
|
448
|
-
|
|
436
|
+
|
|
449
437
|
<react_native_1.View style={styles.heroCard}>
|
|
450
438
|
<react_native_1.View style={styles.heroHeader}>
|
|
451
439
|
<react_native_1.View style={styles.heroIconWrap}>
|
|
@@ -465,7 +453,7 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
465
453
|
</react_native_1.View>
|
|
466
454
|
</react_native_1.View>
|
|
467
455
|
|
|
468
|
-
|
|
456
|
+
|
|
469
457
|
<react_native_1.View style={styles.heroMetricsStrip}>
|
|
470
458
|
<react_native_1.View style={styles.heroMetricItem}>
|
|
471
459
|
<react_native_1.Text style={styles.heroMetricLabel} numberOfLines={1} ellipsizeMode="tail">IP ADDRESS</react_native_1.Text>
|
|
@@ -488,7 +476,7 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
488
476
|
</react_native_1.View>
|
|
489
477
|
</react_native_1.View>
|
|
490
478
|
|
|
491
|
-
|
|
479
|
+
|
|
492
480
|
{(activeSubTab === 'overview' || search.length > 0) && (<react_native_1.View style={styles.sectionCard}>
|
|
493
481
|
<react_native_1.Text style={styles.sectionTitle}>DEVICE OVERVIEW</react_native_1.Text>
|
|
494
482
|
{isMatch('Device Model') && (<InfoRow label="Device Model" value={fullDeviceData.hardware.model}/>)}
|
|
@@ -504,7 +492,7 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
504
492
|
{isMatch('UDID Identifier') && (<InfoRow label="Pseudo-UDID" value={pseudoUDID} isLast/>)}
|
|
505
493
|
</react_native_1.View>)}
|
|
506
494
|
|
|
507
|
-
|
|
495
|
+
|
|
508
496
|
{(activeSubTab === 'hardware' || search.length > 0) && (<react_native_1.View style={styles.sectionCard}>
|
|
509
497
|
<react_native_1.Text style={styles.sectionTitle}>HARDWARE & SYSTEM SPECIFICATIONS</react_native_1.Text>
|
|
510
498
|
{isMatch('CPU Architecture') && (<InfoRow label="CPU Architecture / ABI" value={fullDeviceData.hardware.cpuAbi} badge={{ text: '64-BIT', color: AppColors_1.AppColors.purple, bg: `${AppColors_1.AppColors.purple}18` }}/>)}
|
|
@@ -525,7 +513,7 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
525
513
|
{isMatch('Thermal State') && (<InfoRow label="Thermal State" value="Nominal (Cool)" badge={{ text: 'OPTIMAL', color: AppColors_1.AppColors.emerald500, bg: `${AppColors_1.AppColors.emerald500}18` }} isLast/>)}
|
|
526
514
|
</react_native_1.View>)}
|
|
527
515
|
|
|
528
|
-
|
|
516
|
+
|
|
529
517
|
{(activeSubTab === 'network' || search.length > 0) && (<react_native_1.View style={styles.sectionCard}>
|
|
530
518
|
<react_native_1.Text style={styles.sectionTitle}>NETWORK & CONNECTIVITY</react_native_1.Text>
|
|
531
519
|
{isMatch('IP Address') && (<InfoRow label="Local Device IP" value={ipAddress} badge={{ text: 'IPV4', color: AppColors_1.AppColors.blue500, bg: `${AppColors_1.AppColors.blue500}18` }}/>)}
|
|
@@ -538,7 +526,7 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
538
526
|
{isMatch('Network Inspector Interceptor') && (<InfoRow label="Network Interceptor Status" value="Intercepting XHR & Fetch" badge={{ text: 'MONITORING', color: AppColors_1.AppColors.purple, bg: `${AppColors_1.AppColors.purple}18` }} isLast/>)}
|
|
539
527
|
</react_native_1.View>)}
|
|
540
528
|
|
|
541
|
-
|
|
529
|
+
|
|
542
530
|
{(activeSubTab === 'display' || search.length > 0) && (<react_native_1.View style={styles.sectionCard}>
|
|
543
531
|
<react_native_1.Text style={styles.sectionTitle}>DISPLAY & SCREEN GEOMETRY</react_native_1.Text>
|
|
544
532
|
{isMatch('Window Resolution') && (<InfoRow label="Window Logical Size" value={`${windowDims.width.toFixed(0)} × ${windowDims.height.toFixed(0)} pt`}/>)}
|
|
@@ -554,7 +542,7 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
554
542
|
{isMatch('Status Bar Height') && (<InfoRow label="Status Bar Inset" value={`${statusBarHeight} pt`} isLast/>)}
|
|
555
543
|
</react_native_1.View>)}
|
|
556
544
|
|
|
557
|
-
|
|
545
|
+
|
|
558
546
|
{(activeSubTab === 'runtime' || search.length > 0) && (<react_native_1.View style={styles.sectionCard}>
|
|
559
547
|
<react_native_1.Text style={styles.sectionTitle}>RUNTIME & APPLICATION</react_native_1.Text>
|
|
560
548
|
{isMatch('App Name') && (<InfoRow label="Application Name" value={fullDeviceData.runtime.appName}/>)}
|
|
@@ -582,7 +570,7 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
582
570
|
{isMatch('Session Uptime') && (<InfoRow label="Inspector Session Uptime" value={deviceUptime} isLast/>)}
|
|
583
571
|
</react_native_1.View>)}
|
|
584
572
|
|
|
585
|
-
|
|
573
|
+
|
|
586
574
|
{(activeSubTab === 'security' || search.length > 0) && (<react_native_1.View style={styles.sectionCard}>
|
|
587
575
|
<react_native_1.Text style={styles.sectionTitle}>DEVICE IDENTIFIERS & SECURITY</react_native_1.Text>
|
|
588
576
|
{isMatch('Pseudo-UDID') && (<InfoRow label="Deterministic Pseudo-UDID" value={pseudoUDID} subtext="Stable hardware signature hash for testing & diagnostics" badge={{ text: 'PERSISTENT', color: AppColors_1.AppColors.purple, bg: `${AppColors_1.AppColors.purple}18` }}/>)}
|
|
@@ -596,7 +584,7 @@ exports.DeviceInfoTab = react_1.default.memo(() => {
|
|
|
596
584
|
{isMatch('Sandbox Integrity') && (<InfoRow label="App Sandbox File Isolation" value="Enforced by OS Kernel" isLast/>)}
|
|
597
585
|
</react_native_1.View>)}
|
|
598
586
|
|
|
599
|
-
|
|
587
|
+
|
|
600
588
|
{search.trim().length > 0 && !hasAnyMatch && (<react_native_1.View style={styles.emptySearchCard}>
|
|
601
589
|
<NetworkIcons_1.SearchIcon size={26} color={AppColors_1.AppColors.grayTextWeak}/>
|
|
602
590
|
<react_native_1.Text style={styles.emptySearchTitle}>No matching device specifications</react_native_1.Text>
|
|
@@ -21,7 +21,7 @@ const FabLauncher = () => {
|
|
|
21
21
|
}} hitSlop={10}>
|
|
22
22
|
<react_native_1.Animated.View style={[styles_1.default.fabPulseRing, { transform: [{ scale: pulseAnim }] }]}/>
|
|
23
23
|
<BrandCircleIcon_1.default size={62}/>
|
|
24
|
-
|
|
24
|
+
|
|
25
25
|
<react_native_1.View pointerEvents="none" style={styles_1.default.fabShineClip}>
|
|
26
26
|
<react_native_1.Animated.View style={[
|
|
27
27
|
styles_1.default.fabShineStreak,
|
|
@@ -17,7 +17,5 @@ const useInspector = () => {
|
|
|
17
17
|
};
|
|
18
18
|
exports.useInspector = useInspector;
|
|
19
19
|
const animateNextLayout = () => {
|
|
20
|
-
// Disabled LayoutAnimation to prevent iOS NSRangeException crashes under Fabric
|
|
21
|
-
// and Android rendering performance freezes.
|
|
22
20
|
};
|
|
23
21
|
exports.animateNextLayout = animateNextLayout;
|
|
@@ -74,7 +74,7 @@ const InspectorHeader = react_1.default.memo(() => {
|
|
|
74
74
|
if (clean === 'DEV' || clean.includes('DEV') || clean === 'LOCAL') {
|
|
75
75
|
return {
|
|
76
76
|
label: rawEnv,
|
|
77
|
-
bg: `${AppColors_1.AppColors.emerald500}40`,
|
|
77
|
+
bg: `${AppColors_1.AppColors.emerald500}40`,
|
|
78
78
|
border: `${AppColors_1.AppColors.emerald400}8C`,
|
|
79
79
|
text: AppColors_1.AppColors.mintGreenBorder,
|
|
80
80
|
};
|
|
@@ -82,7 +82,7 @@ const InspectorHeader = react_1.default.memo(() => {
|
|
|
82
82
|
if (clean === 'UAT' || clean === 'QA' || clean === 'TEST') {
|
|
83
83
|
return {
|
|
84
84
|
label: rawEnv,
|
|
85
|
-
bg: `${AppColors_1.AppColors.amber500}47`,
|
|
85
|
+
bg: `${AppColors_1.AppColors.amber500}47`,
|
|
86
86
|
border: `${AppColors_1.AppColors.amber400}99`,
|
|
87
87
|
text: AppColors_1.AppColors.amberWarmBorder,
|
|
88
88
|
};
|
|
@@ -90,15 +90,14 @@ const InspectorHeader = react_1.default.memo(() => {
|
|
|
90
90
|
if (clean === 'PREPROD' || clean === 'STAGE' || clean === 'STAGING') {
|
|
91
91
|
return {
|
|
92
92
|
label: rawEnv,
|
|
93
|
-
bg: `${AppColors_1.AppColors.purple500}47`,
|
|
93
|
+
bg: `${AppColors_1.AppColors.purple500}47`,
|
|
94
94
|
border: `${AppColors_1.AppColors.purple400}99`,
|
|
95
95
|
text: AppColors_1.AppColors.violetSoftBorder,
|
|
96
96
|
};
|
|
97
97
|
}
|
|
98
|
-
// PROD / Live
|
|
99
98
|
return {
|
|
100
99
|
label: rawEnv,
|
|
101
|
-
bg: `${AppColors_1.AppColors.rose500}40`,
|
|
100
|
+
bg: `${AppColors_1.AppColors.rose500}40`,
|
|
102
101
|
border: `${AppColors_1.AppColors.roseBorder}8C`,
|
|
103
102
|
text: AppColors_1.AppColors.errorBorder,
|
|
104
103
|
};
|
|
@@ -177,7 +176,7 @@ const InspectorHeader = react_1.default.memo(() => {
|
|
|
177
176
|
},
|
|
178
177
|
!isAnySelected && { display: 'none' },
|
|
179
178
|
]}>
|
|
180
|
-
|
|
179
|
+
|
|
181
180
|
<react_native_1.View style={{
|
|
182
181
|
position: 'absolute',
|
|
183
182
|
width: 48,
|
|
@@ -292,7 +291,7 @@ const InspectorHeader = react_1.default.memo(() => {
|
|
|
292
291
|
</react_native_1.Pressable>)}
|
|
293
292
|
</react_native_1.View>
|
|
294
293
|
|
|
295
|
-
|
|
294
|
+
|
|
296
295
|
<react_native_1.View style={{
|
|
297
296
|
flexDirection: 'row',
|
|
298
297
|
alignItems: 'center',
|
|
@@ -701,7 +700,7 @@ const InspectorHeader = react_1.default.memo(() => {
|
|
|
701
700
|
</react_native_1.View>
|
|
702
701
|
</react_native_linear_gradient_1.default>
|
|
703
702
|
|
|
704
|
-
|
|
703
|
+
|
|
705
704
|
<UpdateAvailableModal_1.UpdateAvailableModal visible={showUpdateModal} latestVersion={latestNpmVersion} onClose={() => setShowUpdateModal(false)}/>
|
|
706
705
|
</>);
|
|
707
706
|
});
|