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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { useMemo, useState, useEffect, useRef } from 'react';
|
|
2
|
-
import { Alert, Animated, Platform, ScrollView, StatusBar, StyleSheet, Text, TextInput, View, } from 'react-native';
|
|
2
|
+
import { Alert, Animated, DevSettings, Dimensions, Linking, PixelRatio, Platform, ScrollView, StatusBar, StyleSheet, Text, TextInput, View, } from 'react-native';
|
|
3
3
|
import Svg, { Path } from 'react-native-svg';
|
|
4
4
|
import { animateNextLayout, useInspector } from './InspectorContext';
|
|
5
5
|
import TouchableScale from '../TouchableScale';
|
|
@@ -17,14 +17,14 @@ import { clearPerformanceEvents } from '../../customHooks/performanceTracker';
|
|
|
17
17
|
import { isReduxConnected } from '../../customHooks/reduxLogger';
|
|
18
18
|
import { isAnalyticsConnected } from '../../customHooks/analyticsLogger';
|
|
19
19
|
import { useTranslation } from '../../i18n';
|
|
20
|
-
import { SignalIcon, TerminalIcon, AnalyticsIcon, SettingsIcon, SunIcon, MoonIcon, ScreenIcon, MotionIcon, LayersIcon, EyeIcon, CheckIcon, TrashIcon, PackageIcon, ReduxIcon, PerformanceIcon, CrashIcon, ShieldAlertIcon, ForwardChevronIcon, ChevronDownIcon, NpmIcon, BoltIcon, BrainIcon, SmartphoneIcon, DatabaseIcon, QrCodeIcon, } from '../NetworkIcons';
|
|
20
|
+
import { SignalIcon, TerminalIcon, AnalyticsIcon, SettingsIcon, SunIcon, MoonIcon, ScreenIcon, MotionIcon, LayersIcon, EyeIcon, CheckIcon, TrashIcon, PackageIcon, ReduxIcon, PerformanceIcon, CrashIcon, ShieldAlertIcon, ForwardChevronIcon, ChevronDownIcon, NpmIcon, BoltIcon, BrainIcon, SmartphoneIcon, DatabaseIcon, QrCodeIcon, GitHubIcon, InfoCircleIcon, CopyIcon, } from '../NetworkIcons';
|
|
21
21
|
import { LIB_VERSION } from '../../constants';
|
|
22
|
-
import { copyToClipboard, isLocalDebugEnvironment } from '../../helpers';
|
|
22
|
+
import { copyToClipboard, isLocalDebugEnvironment, getAppName, getBundleIdentifier, getAppVersionAndBuild, } from '../../helpers';
|
|
23
23
|
import { showToast } from '../../helpers/toast';
|
|
24
24
|
import { pruneAllLogs } from '../../helpers/memoryManager';
|
|
25
25
|
const SettingsPanel = () => {
|
|
26
26
|
const { t } = useTranslation();
|
|
27
|
-
const { settingsPage, setSettingsPage, settingsActiveSubTab, setSettingsActiveSubTab, tabVisibility, toggleTabVisibility, defaultTab, setDefaultTab, isDark, setIsDark, modalHeightPercent, setModalHeightPercent, modalAnimationType, setModalAnimationType, showDuplicateLogs, setShowDuplicateLogs, showUpdateToast, setShowUpdateToast, showConsoleLevels, setShowConsoleLevels, resetToDefaults, storage, logs, consoleLogs, analyticsEvents, reduxState, maxNetworkLogs, setMaxNetworkLogs, maxConsoleLogs, setMaxConsoleLogs, maxAnalyticsEventsLimit, setMaxAnalyticsEventsLimit, isAutoRamLimitEnabled, setIsAutoRamLimitEnabled, deviceFreeRamMb, reduxAutoRefresh, setReduxAutoRefreshState, reduxExpandDepth, setReduxExpandDepth, switchActiveTab, setSelected, setSelectedEvent, setReduxState, crashRecords, maxCrashLogs, setMaxCrashLogs, updateAvailable, latestNpmVersion, } = useInspector();
|
|
27
|
+
const { settingsPage, setSettingsPage, settingsActiveSubTab, setSettingsActiveSubTab, tabVisibility, toggleTabVisibility, defaultTab, setDefaultTab, isDark, setIsDark, modalHeightPercent, setModalHeightPercent, modalAnimationType, setModalAnimationType, showDuplicateLogs, setShowDuplicateLogs, showUpdateToast, setShowUpdateToast, showConsoleLevels, setShowConsoleLevels, resetToDefaults, closeModal, storage, logs, consoleLogs, analyticsEvents, reduxState, maxNetworkLogs, setMaxNetworkLogs, maxConsoleLogs, setMaxConsoleLogs, maxAnalyticsEventsLimit, setMaxAnalyticsEventsLimit, isAutoRamLimitEnabled, setIsAutoRamLimitEnabled, deviceFreeRamMb, reduxAutoRefresh, setReduxAutoRefreshState, reduxExpandDepth, setReduxExpandDepth, switchActiveTab, setSelected, setSelectedEvent, setReduxState, crashRecords, maxCrashLogs, setMaxCrashLogs, updateAvailable, latestNpmVersion, } = useInspector();
|
|
28
28
|
const [stagedHeight, setStagedHeight] = useState(modalHeightPercent);
|
|
29
29
|
useEffect(() => {
|
|
30
30
|
setStagedHeight(modalHeightPercent);
|
|
@@ -35,6 +35,7 @@ const SettingsPanel = () => {
|
|
|
35
35
|
const headerTopPadding = modalHeightPercent >= 95 ? statusBarHeight : 0;
|
|
36
36
|
const allModules = useMemo(() => [
|
|
37
37
|
{
|
|
38
|
+
id: 1,
|
|
38
39
|
key: 'apis',
|
|
39
40
|
label: 'APIs (Network)',
|
|
40
41
|
category: 'core',
|
|
@@ -42,6 +43,7 @@ const SettingsPanel = () => {
|
|
|
42
43
|
desc: 'HTTP/HTTPS requests, GraphQL, Axios & WebSocket inspector',
|
|
43
44
|
},
|
|
44
45
|
{
|
|
46
|
+
id: 2,
|
|
45
47
|
key: 'logs',
|
|
46
48
|
label: 'Console Logs',
|
|
47
49
|
category: 'core',
|
|
@@ -49,27 +51,7 @@ const SettingsPanel = () => {
|
|
|
49
51
|
desc: 'Terminal console logs, warnings, errors & stack traces',
|
|
50
52
|
},
|
|
51
53
|
{
|
|
52
|
-
|
|
53
|
-
label: 'Performance Tracker',
|
|
54
|
-
category: 'diagnostic',
|
|
55
|
-
icon: 'performance',
|
|
56
|
-
desc: '60 FPS monitor, Hermes memory telemetry & re-render profiler',
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
key: 'bundle',
|
|
60
|
-
label: 'Bundle Analyzer',
|
|
61
|
-
category: 'diagnostic',
|
|
62
|
-
icon: 'bundle',
|
|
63
|
-
desc: 'Metro packager dependencies, source maps & asset breakdown',
|
|
64
|
-
},
|
|
65
|
-
{
|
|
66
|
-
key: 'crash',
|
|
67
|
-
label: 'Crash Protection',
|
|
68
|
-
category: 'diagnostic',
|
|
69
|
-
icon: 'crash',
|
|
70
|
-
desc: 'Runtime exception guard, breadcrumbs & memory snapshot',
|
|
71
|
-
},
|
|
72
|
-
{
|
|
54
|
+
id: 3,
|
|
73
55
|
key: 'analytics',
|
|
74
56
|
label: 'Analytics Logger',
|
|
75
57
|
category: 'telemetry',
|
|
@@ -77,6 +59,7 @@ const SettingsPanel = () => {
|
|
|
77
59
|
desc: 'Firebase & custom analytics events, user properties & params',
|
|
78
60
|
},
|
|
79
61
|
{
|
|
62
|
+
id: 4,
|
|
80
63
|
key: 'redux',
|
|
81
64
|
label: 'Redux Inspector',
|
|
82
65
|
category: 'telemetry',
|
|
@@ -84,6 +67,15 @@ const SettingsPanel = () => {
|
|
|
84
67
|
desc: 'Store state diffing, action history & reducer timeline',
|
|
85
68
|
},
|
|
86
69
|
{
|
|
70
|
+
id: 5,
|
|
71
|
+
key: 'storage',
|
|
72
|
+
label: 'Storage Inspector',
|
|
73
|
+
category: 'telemetry',
|
|
74
|
+
icon: 'storage',
|
|
75
|
+
desc: 'AsyncStorage & MMKV key-value store viewer with full CRUD support',
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
id: 6,
|
|
87
79
|
key: 'device',
|
|
88
80
|
label: 'Device Info',
|
|
89
81
|
category: 'diagnostic',
|
|
@@ -91,13 +83,31 @@ const SettingsPanel = () => {
|
|
|
91
83
|
desc: 'Hardware specs, IP address, screen metrics, UDID & runtime stats',
|
|
92
84
|
},
|
|
93
85
|
{
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
86
|
+
id: 7,
|
|
87
|
+
key: 'crash',
|
|
88
|
+
label: 'Crash Protection',
|
|
89
|
+
category: 'diagnostic',
|
|
90
|
+
icon: 'crash',
|
|
91
|
+
desc: 'Runtime exception guard, breadcrumbs & memory snapshot',
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
id: 8,
|
|
95
|
+
key: 'bundle',
|
|
96
|
+
label: 'Bundle Analyzer',
|
|
97
|
+
category: 'diagnostic',
|
|
98
|
+
icon: 'bundle',
|
|
99
|
+
desc: 'Metro packager dependencies, source maps & asset breakdown',
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
id: 9,
|
|
103
|
+
key: 'performance',
|
|
104
|
+
label: 'Performance & Tracker',
|
|
105
|
+
category: 'diagnostic',
|
|
106
|
+
icon: 'performance',
|
|
107
|
+
desc: '60 FPS monitor, Hermes memory telemetry & re-render profiler',
|
|
99
108
|
},
|
|
100
109
|
{
|
|
110
|
+
id: 10,
|
|
101
111
|
key: 'debugging',
|
|
102
112
|
label: 'Multi-Device Debugging',
|
|
103
113
|
category: 'diagnostic',
|
|
@@ -112,11 +122,11 @@ const SettingsPanel = () => {
|
|
|
112
122
|
logs: Boolean(tabVisibility?.logs),
|
|
113
123
|
analytics: Boolean(tabVisibility?.analytics),
|
|
114
124
|
redux: Boolean(tabVisibility?.redux),
|
|
125
|
+
storage: Boolean(tabVisibility?.storage),
|
|
126
|
+
device: Boolean(tabVisibility?.device),
|
|
127
|
+
crash: Boolean(tabVisibility?.crash),
|
|
115
128
|
bundle: Boolean(tabVisibility?.bundle),
|
|
116
129
|
performance: Boolean(tabVisibility?.performance),
|
|
117
|
-
crash: Boolean(tabVisibility?.crash),
|
|
118
|
-
device: Boolean(tabVisibility?.device),
|
|
119
|
-
storage: Boolean(tabVisibility?.storage),
|
|
120
130
|
debugging: Boolean(tabVisibility?.debugging),
|
|
121
131
|
}));
|
|
122
132
|
useEffect(() => {
|
|
@@ -125,11 +135,11 @@ const SettingsPanel = () => {
|
|
|
125
135
|
logs: Boolean(tabVisibility?.logs),
|
|
126
136
|
analytics: Boolean(tabVisibility?.analytics),
|
|
127
137
|
redux: Boolean(tabVisibility?.redux),
|
|
138
|
+
storage: Boolean(tabVisibility?.storage),
|
|
139
|
+
device: Boolean(tabVisibility?.device),
|
|
140
|
+
crash: Boolean(tabVisibility?.crash),
|
|
128
141
|
bundle: Boolean(tabVisibility?.bundle),
|
|
129
142
|
performance: Boolean(tabVisibility?.performance),
|
|
130
|
-
crash: Boolean(tabVisibility?.crash),
|
|
131
|
-
device: Boolean(tabVisibility?.device),
|
|
132
|
-
storage: Boolean(tabVisibility?.storage),
|
|
133
143
|
debugging: Boolean(tabVisibility?.debugging),
|
|
134
144
|
});
|
|
135
145
|
}, [tabVisibility]);
|
|
@@ -139,17 +149,50 @@ const SettingsPanel = () => {
|
|
|
139
149
|
}, [stagedTabVisibility, tabVisibility, allModules]);
|
|
140
150
|
const stagedActiveCount = allModules.filter(m => m.key === 'apis' || Boolean(stagedTabVisibility[m.key])).length;
|
|
141
151
|
const handleSaveChanges = () => {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
152
|
+
if (!hasUnsavedChanges)
|
|
153
|
+
return;
|
|
154
|
+
Alert.alert('Apply Changes & Reload', 'Are you sure you want to save module changes? The inspector will close and reload the app to apply the new configuration.', [
|
|
155
|
+
{
|
|
156
|
+
text: 'Cancel',
|
|
157
|
+
style: 'cancel',
|
|
158
|
+
onPress: () => {
|
|
159
|
+
setStagedTabVisibility({
|
|
160
|
+
apis: true,
|
|
161
|
+
logs: Boolean(tabVisibility?.logs),
|
|
162
|
+
analytics: Boolean(tabVisibility?.analytics),
|
|
163
|
+
redux: Boolean(tabVisibility?.redux),
|
|
164
|
+
storage: Boolean(tabVisibility?.storage),
|
|
165
|
+
device: Boolean(tabVisibility?.device),
|
|
166
|
+
crash: Boolean(tabVisibility?.crash),
|
|
167
|
+
bundle: Boolean(tabVisibility?.bundle),
|
|
168
|
+
performance: Boolean(tabVisibility?.performance),
|
|
169
|
+
debugging: Boolean(tabVisibility?.debugging),
|
|
170
|
+
});
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
text: 'Save & Reload',
|
|
175
|
+
style: 'default',
|
|
176
|
+
onPress: () => {
|
|
177
|
+
animateNextLayout();
|
|
178
|
+
allModules.forEach(m => {
|
|
179
|
+
if (m.key !== 'apis') {
|
|
180
|
+
const isStagedOn = Boolean(stagedTabVisibility[m.key]);
|
|
181
|
+
const isCurrentOn = Boolean(tabVisibility?.[m.key]);
|
|
182
|
+
if (isStagedOn !== isCurrentOn) {
|
|
183
|
+
toggleTabVisibility(m.key);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
closeModal();
|
|
188
|
+
setTimeout(() => {
|
|
189
|
+
if (__DEV__ && DevSettings && DevSettings.reload) {
|
|
190
|
+
DevSettings.reload();
|
|
191
|
+
}
|
|
192
|
+
}, 350);
|
|
193
|
+
},
|
|
194
|
+
},
|
|
195
|
+
]);
|
|
153
196
|
};
|
|
154
197
|
const [isDefaultTabDropdownOpen, setIsDefaultTabDropdownOpen] = useState(false);
|
|
155
198
|
const goBackToMain = () => {
|
|
@@ -322,6 +365,11 @@ const SettingsPanel = () => {
|
|
|
322
365
|
label: t('settings.ramLimits', 'RAM & Limits'),
|
|
323
366
|
Icon: BrainIcon,
|
|
324
367
|
},
|
|
368
|
+
{
|
|
369
|
+
key: 'about',
|
|
370
|
+
label: t('settings.aboutAndSpecs', 'About & Specs'),
|
|
371
|
+
Icon: InfoCircleIcon,
|
|
372
|
+
},
|
|
325
373
|
].map(tab => {
|
|
326
374
|
const isActive = settingsActiveSubTab === tab.key;
|
|
327
375
|
const IconComp = tab.Icon;
|
|
@@ -531,6 +579,32 @@ const SettingsPanel = () => {
|
|
|
531
579
|
gap: 6,
|
|
532
580
|
flexWrap: 'wrap',
|
|
533
581
|
}}>
|
|
582
|
+
<View style={{
|
|
583
|
+
minWidth: 22,
|
|
584
|
+
height: 22,
|
|
585
|
+
paddingHorizontal: 5,
|
|
586
|
+
borderRadius: 11,
|
|
587
|
+
backgroundColor: isChecked
|
|
588
|
+
? `${AppColors.purple}1C`
|
|
589
|
+
: `${AppColors.grayBorderSecondary}80`,
|
|
590
|
+
borderWidth: 1,
|
|
591
|
+
borderColor: isChecked
|
|
592
|
+
? `${AppColors.purple}44`
|
|
593
|
+
: AppColors.grayBorderSecondary,
|
|
594
|
+
alignItems: 'center',
|
|
595
|
+
justifyContent: 'center',
|
|
596
|
+
}}>
|
|
597
|
+
<Text style={{
|
|
598
|
+
fontFamily: AppFonts.interBold,
|
|
599
|
+
fontSize: 10,
|
|
600
|
+
lineHeight: 13,
|
|
601
|
+
color: isChecked
|
|
602
|
+
? AppColors.purple
|
|
603
|
+
: AppColors.grayText,
|
|
604
|
+
}}>
|
|
605
|
+
#{moduleItem.id}
|
|
606
|
+
</Text>
|
|
607
|
+
</View>
|
|
534
608
|
<Text style={{
|
|
535
609
|
fontFamily: AppFonts.interBold,
|
|
536
610
|
fontSize: 14,
|
|
@@ -1082,8 +1156,9 @@ const SettingsPanel = () => {
|
|
|
1082
1156
|
lineHeight: 18,
|
|
1083
1157
|
color: AppColors.primaryBlack,
|
|
1084
1158
|
}}>
|
|
1085
|
-
{allModules.find(m => m.key === defaultTab)
|
|
1086
|
-
|
|
1159
|
+
{allModules.find(m => m.key === defaultTab)
|
|
1160
|
+
? `#${allModules.find(m => m.key === defaultTab)?.id} ${allModules.find(m => m.key === defaultTab)?.label}`
|
|
1161
|
+
: '#1 APIs (Network)'}
|
|
1087
1162
|
</Text>
|
|
1088
1163
|
<View style={{
|
|
1089
1164
|
backgroundColor: `${AppColors.purple}14`,
|
|
@@ -1167,7 +1242,7 @@ const SettingsPanel = () => {
|
|
|
1167
1242
|
? AppColors.purple
|
|
1168
1243
|
: AppColors.primaryBlack,
|
|
1169
1244
|
}}>
|
|
1170
|
-
{tab.label}
|
|
1245
|
+
#{tab.id} {tab.label}
|
|
1171
1246
|
</Text>
|
|
1172
1247
|
</View>
|
|
1173
1248
|
{isActive && (<CheckIcon size={14} color={AppColors.purple}/>)}
|
|
@@ -1265,132 +1340,6 @@ const SettingsPanel = () => {
|
|
|
1265
1340
|
</TouchableScale>
|
|
1266
1341
|
</View>
|
|
1267
1342
|
</View>
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
<View style={{
|
|
1271
|
-
backgroundColor: AppColors.primaryLight,
|
|
1272
|
-
borderRadius: 14,
|
|
1273
|
-
borderWidth: 1,
|
|
1274
|
-
borderColor: AppColors.grayBorderSecondary,
|
|
1275
|
-
overflow: 'hidden',
|
|
1276
|
-
padding: 14,
|
|
1277
|
-
gap: 12,
|
|
1278
|
-
}}>
|
|
1279
|
-
<Text style={{
|
|
1280
|
-
fontFamily: AppFonts.interBold,
|
|
1281
|
-
fontSize: 11,
|
|
1282
|
-
lineHeight: 14,
|
|
1283
|
-
color: AppColors.grayTextWeak,
|
|
1284
|
-
letterSpacing: 0.8,
|
|
1285
|
-
}}>
|
|
1286
|
-
PACKAGE VERSION & UPDATES
|
|
1287
|
-
</Text>
|
|
1288
|
-
|
|
1289
|
-
<View style={{
|
|
1290
|
-
flexDirection: 'row',
|
|
1291
|
-
alignItems: 'center',
|
|
1292
|
-
justifyContent: 'space-between',
|
|
1293
|
-
}}>
|
|
1294
|
-
<View style={{
|
|
1295
|
-
flexDirection: 'row',
|
|
1296
|
-
alignItems: 'center',
|
|
1297
|
-
gap: 10,
|
|
1298
|
-
flex: 1,
|
|
1299
|
-
marginRight: 8,
|
|
1300
|
-
}}>
|
|
1301
|
-
<View style={{
|
|
1302
|
-
width: 32,
|
|
1303
|
-
height: 32,
|
|
1304
|
-
borderRadius: 8,
|
|
1305
|
-
backgroundColor: '#CB383715',
|
|
1306
|
-
alignItems: 'center',
|
|
1307
|
-
justifyContent: 'center',
|
|
1308
|
-
}}>
|
|
1309
|
-
<NpmIcon color="#CB3837" size={16}/>
|
|
1310
|
-
</View>
|
|
1311
|
-
<View style={{ flex: 1 }}>
|
|
1312
|
-
<View style={{
|
|
1313
|
-
flexDirection: 'row',
|
|
1314
|
-
alignItems: 'center',
|
|
1315
|
-
gap: 6,
|
|
1316
|
-
}}>
|
|
1317
|
-
<Text style={{
|
|
1318
|
-
fontFamily: AppFonts.interBold,
|
|
1319
|
-
fontSize: 13.5,
|
|
1320
|
-
lineHeight: 18,
|
|
1321
|
-
color: AppColors.primaryBlack,
|
|
1322
|
-
}}>
|
|
1323
|
-
v{LIB_VERSION}
|
|
1324
|
-
</Text>
|
|
1325
|
-
{updateAvailable ? (<View style={{
|
|
1326
|
-
flexDirection: 'row',
|
|
1327
|
-
alignItems: 'center',
|
|
1328
|
-
gap: 3,
|
|
1329
|
-
backgroundColor: '#F59E0B20',
|
|
1330
|
-
paddingHorizontal: 6,
|
|
1331
|
-
paddingVertical: 1.5,
|
|
1332
|
-
borderRadius: 5,
|
|
1333
|
-
borderWidth: 1,
|
|
1334
|
-
borderColor: '#F59E0B60',
|
|
1335
|
-
}}>
|
|
1336
|
-
<Text style={{
|
|
1337
|
-
fontFamily: AppFonts.interBold,
|
|
1338
|
-
fontSize: 9.5,
|
|
1339
|
-
color: '#D97706',
|
|
1340
|
-
}}>
|
|
1341
|
-
v{latestNpmVersion} Available
|
|
1342
|
-
</Text>
|
|
1343
|
-
<BoltIcon size={9} color="#D97706"/>
|
|
1344
|
-
</View>) : (<View style={{
|
|
1345
|
-
backgroundColor: `${AppColors.emerald500}20`,
|
|
1346
|
-
paddingHorizontal: 6,
|
|
1347
|
-
paddingVertical: 1.5,
|
|
1348
|
-
borderRadius: 5,
|
|
1349
|
-
borderWidth: 1,
|
|
1350
|
-
borderColor: `${AppColors.emerald500}50`,
|
|
1351
|
-
}}>
|
|
1352
|
-
<Text style={{
|
|
1353
|
-
fontFamily: AppFonts.interBold,
|
|
1354
|
-
fontSize: 9.5,
|
|
1355
|
-
color: AppColors.emerald600,
|
|
1356
|
-
}}>
|
|
1357
|
-
Up to date
|
|
1358
|
-
</Text>
|
|
1359
|
-
</View>)}
|
|
1360
|
-
</View>
|
|
1361
|
-
<Text style={{
|
|
1362
|
-
fontFamily: AppFonts.interRegular,
|
|
1363
|
-
fontSize: 11,
|
|
1364
|
-
lineHeight: 15,
|
|
1365
|
-
color: AppColors.grayText,
|
|
1366
|
-
marginTop: 1,
|
|
1367
|
-
}}>
|
|
1368
|
-
{updateAvailable
|
|
1369
|
-
? `A newer version (v${latestNpmVersion}) is available on npm registry.`
|
|
1370
|
-
: 'You are running the latest version from npm registry.'}
|
|
1371
|
-
</Text>
|
|
1372
|
-
</View>
|
|
1373
|
-
</View>
|
|
1374
|
-
|
|
1375
|
-
{updateAvailable && (<TouchableScale onPress={() => {
|
|
1376
|
-
copyToClipboard('npm install react-native-inapp-inspector@latest', 'Install Command');
|
|
1377
|
-
showToast('Copied npm install command!');
|
|
1378
|
-
}} style={{
|
|
1379
|
-
backgroundColor: AppColors.purple,
|
|
1380
|
-
paddingVertical: 6,
|
|
1381
|
-
paddingHorizontal: 10,
|
|
1382
|
-
borderRadius: 8,
|
|
1383
|
-
}}>
|
|
1384
|
-
<Text style={{
|
|
1385
|
-
fontFamily: AppFonts.interBold,
|
|
1386
|
-
fontSize: 11,
|
|
1387
|
-
color: AppColors.white,
|
|
1388
|
-
}}>
|
|
1389
|
-
Copy Upgrade
|
|
1390
|
-
</Text>
|
|
1391
|
-
</TouchableScale>)}
|
|
1392
|
-
</View>
|
|
1393
|
-
</View>
|
|
1394
1343
|
</View>)}
|
|
1395
1344
|
|
|
1396
1345
|
{settingsActiveSubTab === 'limits' && (<View style={{ gap: 14 }}>
|
|
@@ -1766,6 +1715,919 @@ const SettingsPanel = () => {
|
|
|
1766
1715
|
</View>
|
|
1767
1716
|
</View>
|
|
1768
1717
|
</View>)}
|
|
1718
|
+
{settingsActiveSubTab === 'about' && (<View style={{ gap: 14 }}>
|
|
1719
|
+
|
|
1720
|
+
<View style={{
|
|
1721
|
+
backgroundColor: AppColors.primaryLight,
|
|
1722
|
+
borderRadius: 14,
|
|
1723
|
+
borderWidth: 1,
|
|
1724
|
+
borderColor: AppColors.grayBorderSecondary,
|
|
1725
|
+
padding: 16,
|
|
1726
|
+
gap: 12,
|
|
1727
|
+
}}>
|
|
1728
|
+
<View style={{
|
|
1729
|
+
flexDirection: 'row',
|
|
1730
|
+
alignItems: 'center',
|
|
1731
|
+
justifyContent: 'space-between',
|
|
1732
|
+
}}>
|
|
1733
|
+
<View style={{
|
|
1734
|
+
flexDirection: 'row',
|
|
1735
|
+
alignItems: 'center',
|
|
1736
|
+
gap: 12,
|
|
1737
|
+
flex: 1,
|
|
1738
|
+
}}>
|
|
1739
|
+
<View style={{
|
|
1740
|
+
width: 44,
|
|
1741
|
+
height: 44,
|
|
1742
|
+
borderRadius: 12,
|
|
1743
|
+
backgroundColor: `${AppColors.purple}1A`,
|
|
1744
|
+
alignItems: 'center',
|
|
1745
|
+
justifyContent: 'center',
|
|
1746
|
+
borderWidth: 1,
|
|
1747
|
+
borderColor: `${AppColors.purple}33`,
|
|
1748
|
+
}}>
|
|
1749
|
+
<PackageIcon color={AppColors.purple} size={22}/>
|
|
1750
|
+
</View>
|
|
1751
|
+
<View style={{ flex: 1 }}>
|
|
1752
|
+
<View style={{
|
|
1753
|
+
flexDirection: 'row',
|
|
1754
|
+
alignItems: 'center',
|
|
1755
|
+
gap: 8,
|
|
1756
|
+
flexWrap: 'wrap',
|
|
1757
|
+
}}>
|
|
1758
|
+
<Text style={{
|
|
1759
|
+
fontFamily: AppFonts.interBold,
|
|
1760
|
+
fontSize: 15,
|
|
1761
|
+
lineHeight: 20,
|
|
1762
|
+
color: AppColors.primaryBlack,
|
|
1763
|
+
}}>
|
|
1764
|
+
In-App Inspector
|
|
1765
|
+
</Text>
|
|
1766
|
+
<View style={{
|
|
1767
|
+
backgroundColor: `${AppColors.purple}18`,
|
|
1768
|
+
paddingHorizontal: 7,
|
|
1769
|
+
paddingVertical: 2,
|
|
1770
|
+
borderRadius: 6,
|
|
1771
|
+
borderWidth: 1,
|
|
1772
|
+
borderColor: `${AppColors.purple}33`,
|
|
1773
|
+
}}>
|
|
1774
|
+
<Text style={{
|
|
1775
|
+
fontFamily: AppFonts.interBold,
|
|
1776
|
+
fontSize: 10,
|
|
1777
|
+
color: AppColors.purple,
|
|
1778
|
+
}}>
|
|
1779
|
+
v{LIB_VERSION}
|
|
1780
|
+
</Text>
|
|
1781
|
+
</View>
|
|
1782
|
+
{updateAvailable ? (<View style={{
|
|
1783
|
+
flexDirection: 'row',
|
|
1784
|
+
alignItems: 'center',
|
|
1785
|
+
gap: 3,
|
|
1786
|
+
backgroundColor: '#F59E0B20',
|
|
1787
|
+
paddingHorizontal: 6,
|
|
1788
|
+
paddingVertical: 2,
|
|
1789
|
+
borderRadius: 6,
|
|
1790
|
+
borderWidth: 1,
|
|
1791
|
+
borderColor: '#F59E0B60',
|
|
1792
|
+
}}>
|
|
1793
|
+
<Text style={{
|
|
1794
|
+
fontFamily: AppFonts.interBold,
|
|
1795
|
+
fontSize: 9.5,
|
|
1796
|
+
color: '#D97706',
|
|
1797
|
+
}}>
|
|
1798
|
+
v{latestNpmVersion} Available
|
|
1799
|
+
</Text>
|
|
1800
|
+
<BoltIcon size={9} color="#D97706"/>
|
|
1801
|
+
</View>) : (<View style={{
|
|
1802
|
+
backgroundColor: `${AppColors.emerald500}20`,
|
|
1803
|
+
paddingHorizontal: 6,
|
|
1804
|
+
paddingVertical: 2,
|
|
1805
|
+
borderRadius: 6,
|
|
1806
|
+
borderWidth: 1,
|
|
1807
|
+
borderColor: `${AppColors.emerald500}50`,
|
|
1808
|
+
}}>
|
|
1809
|
+
<Text style={{
|
|
1810
|
+
fontFamily: AppFonts.interBold,
|
|
1811
|
+
fontSize: 9.5,
|
|
1812
|
+
color: AppColors.emerald600,
|
|
1813
|
+
}}>
|
|
1814
|
+
Up to date
|
|
1815
|
+
</Text>
|
|
1816
|
+
</View>)}
|
|
1817
|
+
</View>
|
|
1818
|
+
<Text style={{
|
|
1819
|
+
fontFamily: AppFonts.interRegular,
|
|
1820
|
+
fontSize: 11,
|
|
1821
|
+
lineHeight: 15,
|
|
1822
|
+
color: AppColors.grayText,
|
|
1823
|
+
marginTop: 2,
|
|
1824
|
+
}}>
|
|
1825
|
+
react-native-inapp-inspector
|
|
1826
|
+
</Text>
|
|
1827
|
+
</View>
|
|
1828
|
+
</View>
|
|
1829
|
+
</View>
|
|
1830
|
+
|
|
1831
|
+
<Text style={{
|
|
1832
|
+
fontFamily: AppFonts.interRegular,
|
|
1833
|
+
fontSize: 11.5,
|
|
1834
|
+
lineHeight: 16,
|
|
1835
|
+
color: AppColors.grayText,
|
|
1836
|
+
}}>
|
|
1837
|
+
High-performance in-app debugging, network logging, console inspection, performance profiling, storage viewer & telemetry diagnostics for React Native.
|
|
1838
|
+
</Text>
|
|
1839
|
+
|
|
1840
|
+
{updateAvailable && (<TouchableScale onPress={() => {
|
|
1841
|
+
copyToClipboard('npm install react-native-inapp-inspector@latest', 'Install Command');
|
|
1842
|
+
showToast('Copied npm upgrade command!');
|
|
1843
|
+
}} style={{
|
|
1844
|
+
backgroundColor: AppColors.purple,
|
|
1845
|
+
paddingVertical: 8,
|
|
1846
|
+
paddingHorizontal: 12,
|
|
1847
|
+
borderRadius: 8,
|
|
1848
|
+
flexDirection: 'row',
|
|
1849
|
+
alignItems: 'center',
|
|
1850
|
+
justifyContent: 'center',
|
|
1851
|
+
gap: 6,
|
|
1852
|
+
}}>
|
|
1853
|
+
<BoltIcon size={12} color={AppColors.white}/>
|
|
1854
|
+
<Text style={{
|
|
1855
|
+
fontFamily: AppFonts.interBold,
|
|
1856
|
+
fontSize: 12,
|
|
1857
|
+
color: AppColors.white,
|
|
1858
|
+
}}>
|
|
1859
|
+
Copy Upgrade Command (v{latestNpmVersion})
|
|
1860
|
+
</Text>
|
|
1861
|
+
</TouchableScale>)}
|
|
1862
|
+
</View>
|
|
1863
|
+
|
|
1864
|
+
|
|
1865
|
+
<View style={{
|
|
1866
|
+
flexDirection: 'row',
|
|
1867
|
+
flexWrap: 'wrap',
|
|
1868
|
+
gap: 8,
|
|
1869
|
+
}}>
|
|
1870
|
+
<TouchableScale onPress={() => {
|
|
1871
|
+
Linking.openURL('https://github.com/vengatmacuser/react-native-inapp-inspector').catch(() => { });
|
|
1872
|
+
}} style={{
|
|
1873
|
+
flex: 1,
|
|
1874
|
+
minWidth: '47%',
|
|
1875
|
+
backgroundColor: `${AppColors.purple}0F`,
|
|
1876
|
+
borderRadius: 12,
|
|
1877
|
+
borderWidth: 1,
|
|
1878
|
+
borderColor: `${AppColors.purple}30`,
|
|
1879
|
+
paddingVertical: 10,
|
|
1880
|
+
paddingHorizontal: 12,
|
|
1881
|
+
flexDirection: 'row',
|
|
1882
|
+
alignItems: 'center',
|
|
1883
|
+
gap: 8,
|
|
1884
|
+
}}>
|
|
1885
|
+
<GitHubIcon color={AppColors.purple} size={18}/>
|
|
1886
|
+
<View style={{ flex: 1 }}>
|
|
1887
|
+
<Text style={{
|
|
1888
|
+
fontFamily: AppFonts.interBold,
|
|
1889
|
+
fontSize: 11.5,
|
|
1890
|
+
color: AppColors.primaryBlack,
|
|
1891
|
+
}}>
|
|
1892
|
+
⭐ Star on GitHub
|
|
1893
|
+
</Text>
|
|
1894
|
+
<Text style={{
|
|
1895
|
+
fontFamily: AppFonts.interRegular,
|
|
1896
|
+
fontSize: 9.5,
|
|
1897
|
+
color: AppColors.grayText,
|
|
1898
|
+
}}>
|
|
1899
|
+
Support open source
|
|
1900
|
+
</Text>
|
|
1901
|
+
</View>
|
|
1902
|
+
</TouchableScale>
|
|
1903
|
+
|
|
1904
|
+
<TouchableScale onPress={() => {
|
|
1905
|
+
Linking.openURL('https://www.npmjs.com/package/react-native-inapp-inspector').catch(() => { });
|
|
1906
|
+
}} style={{
|
|
1907
|
+
flex: 1,
|
|
1908
|
+
minWidth: '47%',
|
|
1909
|
+
backgroundColor: AppColors.primaryLight,
|
|
1910
|
+
borderRadius: 12,
|
|
1911
|
+
borderWidth: 1,
|
|
1912
|
+
borderColor: AppColors.grayBorderSecondary,
|
|
1913
|
+
paddingVertical: 10,
|
|
1914
|
+
paddingHorizontal: 12,
|
|
1915
|
+
flexDirection: 'row',
|
|
1916
|
+
alignItems: 'center',
|
|
1917
|
+
gap: 8,
|
|
1918
|
+
}}>
|
|
1919
|
+
<NpmIcon color="#CB3837" size={18}/>
|
|
1920
|
+
<View style={{ flex: 1 }}>
|
|
1921
|
+
<Text style={{
|
|
1922
|
+
fontFamily: AppFonts.interBold,
|
|
1923
|
+
fontSize: 11.5,
|
|
1924
|
+
color: AppColors.primaryBlack,
|
|
1925
|
+
}}>
|
|
1926
|
+
NPM Registry
|
|
1927
|
+
</Text>
|
|
1928
|
+
<Text style={{
|
|
1929
|
+
fontFamily: AppFonts.interRegular,
|
|
1930
|
+
fontSize: 9.5,
|
|
1931
|
+
color: AppColors.grayText,
|
|
1932
|
+
}}>
|
|
1933
|
+
Package repository
|
|
1934
|
+
</Text>
|
|
1935
|
+
</View>
|
|
1936
|
+
</TouchableScale>
|
|
1937
|
+
|
|
1938
|
+
<TouchableScale onPress={() => {
|
|
1939
|
+
Linking.openURL('https://github.com/vengatmacuser/react-native-inapp-inspector#readme').catch(() => { });
|
|
1940
|
+
}} style={{
|
|
1941
|
+
flex: 1,
|
|
1942
|
+
minWidth: '47%',
|
|
1943
|
+
backgroundColor: AppColors.primaryLight,
|
|
1944
|
+
borderRadius: 12,
|
|
1945
|
+
borderWidth: 1,
|
|
1946
|
+
borderColor: AppColors.grayBorderSecondary,
|
|
1947
|
+
paddingVertical: 10,
|
|
1948
|
+
paddingHorizontal: 12,
|
|
1949
|
+
flexDirection: 'row',
|
|
1950
|
+
alignItems: 'center',
|
|
1951
|
+
gap: 8,
|
|
1952
|
+
}}>
|
|
1953
|
+
<Text style={{ fontSize: 16 }}>📖</Text>
|
|
1954
|
+
<View style={{ flex: 1 }}>
|
|
1955
|
+
<Text style={{
|
|
1956
|
+
fontFamily: AppFonts.interBold,
|
|
1957
|
+
fontSize: 11.5,
|
|
1958
|
+
color: AppColors.primaryBlack,
|
|
1959
|
+
}}>
|
|
1960
|
+
Documentation
|
|
1961
|
+
</Text>
|
|
1962
|
+
<Text style={{
|
|
1963
|
+
fontFamily: AppFonts.interRegular,
|
|
1964
|
+
fontSize: 9.5,
|
|
1965
|
+
color: AppColors.grayText,
|
|
1966
|
+
}}>
|
|
1967
|
+
Setup & API guide
|
|
1968
|
+
</Text>
|
|
1969
|
+
</View>
|
|
1970
|
+
</TouchableScale>
|
|
1971
|
+
|
|
1972
|
+
<TouchableScale onPress={() => {
|
|
1973
|
+
Linking.openURL('https://github.com/vengatmacuser/react-native-inapp-inspector/issues').catch(() => { });
|
|
1974
|
+
}} style={{
|
|
1975
|
+
flex: 1,
|
|
1976
|
+
minWidth: '47%',
|
|
1977
|
+
backgroundColor: AppColors.primaryLight,
|
|
1978
|
+
borderRadius: 12,
|
|
1979
|
+
borderWidth: 1,
|
|
1980
|
+
borderColor: AppColors.grayBorderSecondary,
|
|
1981
|
+
paddingVertical: 10,
|
|
1982
|
+
paddingHorizontal: 12,
|
|
1983
|
+
flexDirection: 'row',
|
|
1984
|
+
alignItems: 'center',
|
|
1985
|
+
gap: 8,
|
|
1986
|
+
}}>
|
|
1987
|
+
<Text style={{ fontSize: 16 }}>🐞</Text>
|
|
1988
|
+
<View style={{ flex: 1 }}>
|
|
1989
|
+
<Text style={{
|
|
1990
|
+
fontFamily: AppFonts.interBold,
|
|
1991
|
+
fontSize: 11.5,
|
|
1992
|
+
color: AppColors.primaryBlack,
|
|
1993
|
+
}}>
|
|
1994
|
+
Report Issue
|
|
1995
|
+
</Text>
|
|
1996
|
+
<Text style={{
|
|
1997
|
+
fontFamily: AppFonts.interRegular,
|
|
1998
|
+
fontSize: 9.5,
|
|
1999
|
+
color: AppColors.grayText,
|
|
2000
|
+
}}>
|
|
2001
|
+
Bugs & feature requests
|
|
2002
|
+
</Text>
|
|
2003
|
+
</View>
|
|
2004
|
+
</TouchableScale>
|
|
2005
|
+
|
|
2006
|
+
<TouchableScale onPress={() => {
|
|
2007
|
+
Linking.openURL('https://github.com/vengatmacuser/react-native-inapp-inspector/releases').catch(() => { });
|
|
2008
|
+
}} style={{
|
|
2009
|
+
flex: 1,
|
|
2010
|
+
minWidth: '47%',
|
|
2011
|
+
backgroundColor: AppColors.primaryLight,
|
|
2012
|
+
borderRadius: 12,
|
|
2013
|
+
borderWidth: 1,
|
|
2014
|
+
borderColor: AppColors.grayBorderSecondary,
|
|
2015
|
+
paddingVertical: 10,
|
|
2016
|
+
paddingHorizontal: 12,
|
|
2017
|
+
flexDirection: 'row',
|
|
2018
|
+
alignItems: 'center',
|
|
2019
|
+
gap: 8,
|
|
2020
|
+
}}>
|
|
2021
|
+
<Text style={{ fontSize: 16 }}>🏷️</Text>
|
|
2022
|
+
<View style={{ flex: 1 }}>
|
|
2023
|
+
<Text style={{
|
|
2024
|
+
fontFamily: AppFonts.interBold,
|
|
2025
|
+
fontSize: 11.5,
|
|
2026
|
+
color: AppColors.primaryBlack,
|
|
2027
|
+
}}>
|
|
2028
|
+
Release Notes
|
|
2029
|
+
</Text>
|
|
2030
|
+
<Text style={{
|
|
2031
|
+
fontFamily: AppFonts.interRegular,
|
|
2032
|
+
fontSize: 9.5,
|
|
2033
|
+
color: AppColors.grayText,
|
|
2034
|
+
}}>
|
|
2035
|
+
Version changelog
|
|
2036
|
+
</Text>
|
|
2037
|
+
</View>
|
|
2038
|
+
</TouchableScale>
|
|
2039
|
+
|
|
2040
|
+
<TouchableScale onPress={() => {
|
|
2041
|
+
const win = Dimensions.get('window');
|
|
2042
|
+
const scr = Dimensions.get('screen');
|
|
2043
|
+
const rnVer = Platform.constants?.reactNativeVersion;
|
|
2044
|
+
const specsPayload = {
|
|
2045
|
+
package: {
|
|
2046
|
+
name: 'react-native-inapp-inspector',
|
|
2047
|
+
version: `v${LIB_VERSION}`,
|
|
2048
|
+
latestNpmVersion: latestNpmVersion ? `v${latestNpmVersion}` : 'Checking...',
|
|
2049
|
+
license: 'MIT',
|
|
2050
|
+
repository: 'https://github.com/vengatmacuser/react-native-inapp-inspector',
|
|
2051
|
+
},
|
|
2052
|
+
hostApp: {
|
|
2053
|
+
name: getAppName(),
|
|
2054
|
+
bundleId: getBundleIdentifier(),
|
|
2055
|
+
versionAndBuild: getAppVersionAndBuild().formatted,
|
|
2056
|
+
buildVariant: __DEV__ ? 'Development (Debug)' : 'Production (Release)',
|
|
2057
|
+
metroConnected: isLocalDebugEnvironment(),
|
|
2058
|
+
},
|
|
2059
|
+
runtime: {
|
|
2060
|
+
reactNativeVersion: rnVer ? `${rnVer.major}.${rnVer.minor}.${rnVer.patch}` : '0.74+',
|
|
2061
|
+
reactVersion: React.version,
|
|
2062
|
+
jsEngine: Boolean(global?.HermesInternal) ? 'Hermes' : 'JavaScriptCore (JSC)',
|
|
2063
|
+
architecture: Boolean(global?.nativeFabricUIManager) ? 'Fabric (New Architecture)' : 'Paper (Legacy Bridge)',
|
|
2064
|
+
turboModules: Boolean(global?.__turboModuleProxy || global?.TurboModuleRegistry),
|
|
2065
|
+
},
|
|
2066
|
+
device: {
|
|
2067
|
+
platform: Platform.OS,
|
|
2068
|
+
osVersion: Platform.Version,
|
|
2069
|
+
deviceModel: Platform.constants?.Model || 'Unknown Device',
|
|
2070
|
+
windowDimensions: `${Math.round(win.width)}x${Math.round(win.height)} pt`,
|
|
2071
|
+
screenDimensions: `${Math.round(scr.width)}x${Math.round(scr.height)} pt`,
|
|
2072
|
+
pixelRatio: PixelRatio.get(),
|
|
2073
|
+
fontScale: PixelRatio.getFontScale(),
|
|
2074
|
+
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone || 'Unknown',
|
|
2075
|
+
locale: Intl.DateTimeFormat().resolvedOptions().locale || 'en',
|
|
2076
|
+
},
|
|
2077
|
+
storageAndCapabilities: {
|
|
2078
|
+
storageEngine: isPersistentStorageAvailable() ? 'MMKV (Fast Native Storage)' : 'In-Memory State',
|
|
2079
|
+
hasNativeModule: Boolean(global?.NativeInspectorModule || global?.__IN_APP_INSPECTOR_NATIVE__),
|
|
2080
|
+
reduxConnected: isReduxConnected(),
|
|
2081
|
+
analyticsConnected: isAnalyticsConnected(),
|
|
2082
|
+
},
|
|
2083
|
+
};
|
|
2084
|
+
copyToClipboard(JSON.stringify(specsPayload, null, 2), 'Diagnostic Specifications');
|
|
2085
|
+
showToast('Copied full diagnostic specs to clipboard!');
|
|
2086
|
+
}} style={{
|
|
2087
|
+
flex: 1,
|
|
2088
|
+
minWidth: '47%',
|
|
2089
|
+
backgroundColor: AppColors.primaryLight,
|
|
2090
|
+
borderRadius: 12,
|
|
2091
|
+
borderWidth: 1,
|
|
2092
|
+
borderColor: AppColors.grayBorderSecondary,
|
|
2093
|
+
paddingVertical: 10,
|
|
2094
|
+
paddingHorizontal: 12,
|
|
2095
|
+
flexDirection: 'row',
|
|
2096
|
+
alignItems: 'center',
|
|
2097
|
+
gap: 8,
|
|
2098
|
+
}}>
|
|
2099
|
+
<CopyIcon color={AppColors.purple} size={16}/>
|
|
2100
|
+
<View style={{ flex: 1 }}>
|
|
2101
|
+
<Text style={{
|
|
2102
|
+
fontFamily: AppFonts.interBold,
|
|
2103
|
+
fontSize: 11.5,
|
|
2104
|
+
color: AppColors.primaryBlack,
|
|
2105
|
+
}}>
|
|
2106
|
+
Copy Specs JSON
|
|
2107
|
+
</Text>
|
|
2108
|
+
<Text style={{
|
|
2109
|
+
fontFamily: AppFonts.interRegular,
|
|
2110
|
+
fontSize: 9.5,
|
|
2111
|
+
color: AppColors.grayText,
|
|
2112
|
+
}}>
|
|
2113
|
+
Diagnostics payload
|
|
2114
|
+
</Text>
|
|
2115
|
+
</View>
|
|
2116
|
+
</TouchableScale>
|
|
2117
|
+
</View>
|
|
2118
|
+
|
|
2119
|
+
|
|
2120
|
+
<View style={{
|
|
2121
|
+
backgroundColor: AppColors.primaryLight,
|
|
2122
|
+
borderRadius: 14,
|
|
2123
|
+
borderWidth: 1,
|
|
2124
|
+
borderColor: AppColors.grayBorderSecondary,
|
|
2125
|
+
overflow: 'hidden',
|
|
2126
|
+
padding: 14,
|
|
2127
|
+
gap: 12,
|
|
2128
|
+
}}>
|
|
2129
|
+
<Text style={{
|
|
2130
|
+
fontFamily: AppFonts.interBold,
|
|
2131
|
+
fontSize: 11,
|
|
2132
|
+
lineHeight: 14,
|
|
2133
|
+
color: AppColors.grayTextWeak,
|
|
2134
|
+
letterSpacing: 0.8,
|
|
2135
|
+
}}>
|
|
2136
|
+
PACKAGE VERSION & UPGRADES
|
|
2137
|
+
</Text>
|
|
2138
|
+
|
|
2139
|
+
<View style={{
|
|
2140
|
+
flexDirection: 'row',
|
|
2141
|
+
alignItems: 'center',
|
|
2142
|
+
justifyContent: 'space-between',
|
|
2143
|
+
}}>
|
|
2144
|
+
<View style={{
|
|
2145
|
+
flexDirection: 'row',
|
|
2146
|
+
alignItems: 'center',
|
|
2147
|
+
gap: 10,
|
|
2148
|
+
flex: 1,
|
|
2149
|
+
marginRight: 8,
|
|
2150
|
+
}}>
|
|
2151
|
+
<View style={{
|
|
2152
|
+
width: 34,
|
|
2153
|
+
height: 34,
|
|
2154
|
+
borderRadius: 9,
|
|
2155
|
+
backgroundColor: '#CB383715',
|
|
2156
|
+
alignItems: 'center',
|
|
2157
|
+
justifyContent: 'center',
|
|
2158
|
+
}}>
|
|
2159
|
+
<NpmIcon color="#CB3837" size={17}/>
|
|
2160
|
+
</View>
|
|
2161
|
+
<View style={{ flex: 1 }}>
|
|
2162
|
+
<View style={{
|
|
2163
|
+
flexDirection: 'row',
|
|
2164
|
+
alignItems: 'center',
|
|
2165
|
+
gap: 6,
|
|
2166
|
+
}}>
|
|
2167
|
+
<Text style={{
|
|
2168
|
+
fontFamily: AppFonts.interBold,
|
|
2169
|
+
fontSize: 14,
|
|
2170
|
+
lineHeight: 18,
|
|
2171
|
+
color: AppColors.primaryBlack,
|
|
2172
|
+
}}>
|
|
2173
|
+
v{LIB_VERSION}
|
|
2174
|
+
</Text>
|
|
2175
|
+
{updateAvailable ? (<View style={{
|
|
2176
|
+
flexDirection: 'row',
|
|
2177
|
+
alignItems: 'center',
|
|
2178
|
+
gap: 3,
|
|
2179
|
+
backgroundColor: '#F59E0B20',
|
|
2180
|
+
paddingHorizontal: 6,
|
|
2181
|
+
paddingVertical: 1.5,
|
|
2182
|
+
borderRadius: 5,
|
|
2183
|
+
borderWidth: 1,
|
|
2184
|
+
borderColor: '#F59E0B60',
|
|
2185
|
+
}}>
|
|
2186
|
+
<Text style={{
|
|
2187
|
+
fontFamily: AppFonts.interBold,
|
|
2188
|
+
fontSize: 9.5,
|
|
2189
|
+
color: '#D97706',
|
|
2190
|
+
}}>
|
|
2191
|
+
v{latestNpmVersion} Available
|
|
2192
|
+
</Text>
|
|
2193
|
+
<BoltIcon size={9} color="#D97706"/>
|
|
2194
|
+
</View>) : (<View style={{
|
|
2195
|
+
backgroundColor: `${AppColors.emerald500}20`,
|
|
2196
|
+
paddingHorizontal: 6,
|
|
2197
|
+
paddingVertical: 1.5,
|
|
2198
|
+
borderRadius: 5,
|
|
2199
|
+
borderWidth: 1,
|
|
2200
|
+
borderColor: `${AppColors.emerald500}50`,
|
|
2201
|
+
}}>
|
|
2202
|
+
<Text style={{
|
|
2203
|
+
fontFamily: AppFonts.interBold,
|
|
2204
|
+
fontSize: 9.5,
|
|
2205
|
+
color: AppColors.emerald600,
|
|
2206
|
+
}}>
|
|
2207
|
+
Up to date
|
|
2208
|
+
</Text>
|
|
2209
|
+
</View>)}
|
|
2210
|
+
</View>
|
|
2211
|
+
<Text style={{
|
|
2212
|
+
fontFamily: AppFonts.interRegular,
|
|
2213
|
+
fontSize: 11,
|
|
2214
|
+
lineHeight: 15,
|
|
2215
|
+
color: AppColors.grayText,
|
|
2216
|
+
marginTop: 1,
|
|
2217
|
+
}}>
|
|
2218
|
+
{updateAvailable
|
|
2219
|
+
? `A newer release (v${latestNpmVersion}) is available on npm registry.`
|
|
2220
|
+
: 'You are running the latest version from npm registry.'}
|
|
2221
|
+
</Text>
|
|
2222
|
+
</View>
|
|
2223
|
+
</View>
|
|
2224
|
+
|
|
2225
|
+
<TouchableScale onPress={() => {
|
|
2226
|
+
copyToClipboard('npm install react-native-inapp-inspector@latest', 'Install Command');
|
|
2227
|
+
showToast('Copied npm install command!');
|
|
2228
|
+
}} style={{
|
|
2229
|
+
backgroundColor: updateAvailable ? AppColors.purple : `${AppColors.purple}18`,
|
|
2230
|
+
paddingVertical: 7,
|
|
2231
|
+
paddingHorizontal: 11,
|
|
2232
|
+
borderRadius: 8,
|
|
2233
|
+
flexDirection: 'row',
|
|
2234
|
+
alignItems: 'center',
|
|
2235
|
+
gap: 5,
|
|
2236
|
+
}}>
|
|
2237
|
+
<CopyIcon color={updateAvailable ? AppColors.white : AppColors.purple} size={12}/>
|
|
2238
|
+
<Text style={{
|
|
2239
|
+
fontFamily: AppFonts.interBold,
|
|
2240
|
+
fontSize: 11,
|
|
2241
|
+
color: updateAvailable ? AppColors.white : AppColors.purple,
|
|
2242
|
+
}}>
|
|
2243
|
+
{updateAvailable ? 'Copy Upgrade' : 'Copy Install'}
|
|
2244
|
+
</Text>
|
|
2245
|
+
</TouchableScale>
|
|
2246
|
+
</View>
|
|
2247
|
+
</View>
|
|
2248
|
+
|
|
2249
|
+
|
|
2250
|
+
<View style={{
|
|
2251
|
+
backgroundColor: AppColors.primaryLight,
|
|
2252
|
+
borderRadius: 14,
|
|
2253
|
+
borderWidth: 1,
|
|
2254
|
+
borderColor: AppColors.grayBorderSecondary,
|
|
2255
|
+
padding: 14,
|
|
2256
|
+
gap: 10,
|
|
2257
|
+
}}>
|
|
2258
|
+
<Text style={{
|
|
2259
|
+
fontFamily: AppFonts.interBold,
|
|
2260
|
+
fontSize: 11,
|
|
2261
|
+
lineHeight: 14,
|
|
2262
|
+
color: AppColors.grayTextWeak,
|
|
2263
|
+
letterSpacing: 0.8,
|
|
2264
|
+
}}>
|
|
2265
|
+
HOST APPLICATION & BUILD
|
|
2266
|
+
</Text>
|
|
2267
|
+
|
|
2268
|
+
<View style={{ gap: 8 }}>
|
|
2269
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2270
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2271
|
+
Application Name
|
|
2272
|
+
</Text>
|
|
2273
|
+
<Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
|
|
2274
|
+
{getAppName()}
|
|
2275
|
+
</Text>
|
|
2276
|
+
</View>
|
|
2277
|
+
|
|
2278
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2279
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2280
|
+
Bundle ID / Package
|
|
2281
|
+
</Text>
|
|
2282
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11, color: AppColors.primaryBlack }}>
|
|
2283
|
+
{getBundleIdentifier()}
|
|
2284
|
+
</Text>
|
|
2285
|
+
</View>
|
|
2286
|
+
|
|
2287
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2288
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2289
|
+
Version & Build Number
|
|
2290
|
+
</Text>
|
|
2291
|
+
<Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
|
|
2292
|
+
{getAppVersionAndBuild().formatted}
|
|
2293
|
+
</Text>
|
|
2294
|
+
</View>
|
|
2295
|
+
|
|
2296
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2297
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2298
|
+
Build Variant
|
|
2299
|
+
</Text>
|
|
2300
|
+
<View style={{
|
|
2301
|
+
backgroundColor: __DEV__ ? `${AppColors.amber500}20` : `${AppColors.emerald500}20`,
|
|
2302
|
+
paddingHorizontal: 6,
|
|
2303
|
+
paddingVertical: 1.5,
|
|
2304
|
+
borderRadius: 5,
|
|
2305
|
+
borderWidth: 1,
|
|
2306
|
+
borderColor: __DEV__ ? `${AppColors.amber500}50` : `${AppColors.emerald500}50`,
|
|
2307
|
+
}}>
|
|
2308
|
+
<Text style={{
|
|
2309
|
+
fontFamily: AppFonts.interBold,
|
|
2310
|
+
fontSize: 10,
|
|
2311
|
+
color: __DEV__ ? AppColors.amber500 : AppColors.emerald600,
|
|
2312
|
+
}}>
|
|
2313
|
+
{__DEV__ ? 'Development (Debug)' : 'Production (Release)'}
|
|
2314
|
+
</Text>
|
|
2315
|
+
</View>
|
|
2316
|
+
</View>
|
|
2317
|
+
|
|
2318
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2319
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2320
|
+
Metro Bundler Connection
|
|
2321
|
+
</Text>
|
|
2322
|
+
<Text style={{
|
|
2323
|
+
fontFamily: AppFonts.interBold,
|
|
2324
|
+
fontSize: 11.5,
|
|
2325
|
+
color: isLocalDebugEnvironment() ? AppColors.emerald600 : AppColors.grayText,
|
|
2326
|
+
}}>
|
|
2327
|
+
{isLocalDebugEnvironment() ? 'Connected (Hot Reload Active)' : 'Offline / Standalone'}
|
|
2328
|
+
</Text>
|
|
2329
|
+
</View>
|
|
2330
|
+
</View>
|
|
2331
|
+
</View>
|
|
2332
|
+
|
|
2333
|
+
|
|
2334
|
+
<View style={{
|
|
2335
|
+
backgroundColor: AppColors.primaryLight,
|
|
2336
|
+
borderRadius: 14,
|
|
2337
|
+
borderWidth: 1,
|
|
2338
|
+
borderColor: AppColors.grayBorderSecondary,
|
|
2339
|
+
padding: 14,
|
|
2340
|
+
gap: 10,
|
|
2341
|
+
}}>
|
|
2342
|
+
<Text style={{
|
|
2343
|
+
fontFamily: AppFonts.interBold,
|
|
2344
|
+
fontSize: 11,
|
|
2345
|
+
lineHeight: 14,
|
|
2346
|
+
color: AppColors.grayTextWeak,
|
|
2347
|
+
letterSpacing: 0.8,
|
|
2348
|
+
}}>
|
|
2349
|
+
FRAMEWORK & RUNTIME ENGINE
|
|
2350
|
+
</Text>
|
|
2351
|
+
|
|
2352
|
+
<View style={{ gap: 8 }}>
|
|
2353
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2354
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2355
|
+
React Native Version
|
|
2356
|
+
</Text>
|
|
2357
|
+
<Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
|
|
2358
|
+
v{(Platform.constants?.reactNativeVersion?.major != null)
|
|
2359
|
+
? `${Platform.constants.reactNativeVersion.major}.${Platform.constants.reactNativeVersion.minor}.${Platform.constants.reactNativeVersion.patch}`
|
|
2360
|
+
: '0.74+'}
|
|
2361
|
+
</Text>
|
|
2362
|
+
</View>
|
|
2363
|
+
|
|
2364
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2365
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2366
|
+
React Core Version
|
|
2367
|
+
</Text>
|
|
2368
|
+
<Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
|
|
2369
|
+
v{React.version}
|
|
2370
|
+
</Text>
|
|
2371
|
+
</View>
|
|
2372
|
+
|
|
2373
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2374
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2375
|
+
JavaScript Engine
|
|
2376
|
+
</Text>
|
|
2377
|
+
<View style={{
|
|
2378
|
+
backgroundColor: `${AppColors.purple}15`,
|
|
2379
|
+
paddingHorizontal: 6,
|
|
2380
|
+
paddingVertical: 1.5,
|
|
2381
|
+
borderRadius: 5,
|
|
2382
|
+
borderWidth: 1,
|
|
2383
|
+
borderColor: `${AppColors.purple}40`,
|
|
2384
|
+
}}>
|
|
2385
|
+
<Text style={{ fontFamily: AppFonts.interBold, fontSize: 10.5, color: AppColors.purple }}>
|
|
2386
|
+
{Boolean(global?.HermesInternal) ? 'Hermes Engine (Active)' : 'JavaScriptCore (JSC)'}
|
|
2387
|
+
</Text>
|
|
2388
|
+
</View>
|
|
2389
|
+
</View>
|
|
2390
|
+
|
|
2391
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2392
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2393
|
+
Rendering Architecture
|
|
2394
|
+
</Text>
|
|
2395
|
+
<Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
|
|
2396
|
+
{Boolean(global?.nativeFabricUIManager) ? 'Fabric (New Architecture)' : 'Paper (Legacy Bridge)'}
|
|
2397
|
+
</Text>
|
|
2398
|
+
</View>
|
|
2399
|
+
|
|
2400
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2401
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2402
|
+
TurboModules Support
|
|
2403
|
+
</Text>
|
|
2404
|
+
<Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
|
|
2405
|
+
{Boolean(global?.__turboModuleProxy || global?.TurboModuleRegistry)
|
|
2406
|
+
? 'Enabled (C++ JSI)'
|
|
2407
|
+
: 'Standard Bridge'}
|
|
2408
|
+
</Text>
|
|
2409
|
+
</View>
|
|
2410
|
+
</View>
|
|
2411
|
+
</View>
|
|
2412
|
+
|
|
2413
|
+
|
|
2414
|
+
<View style={{
|
|
2415
|
+
backgroundColor: AppColors.primaryLight,
|
|
2416
|
+
borderRadius: 14,
|
|
2417
|
+
borderWidth: 1,
|
|
2418
|
+
borderColor: AppColors.grayBorderSecondary,
|
|
2419
|
+
padding: 14,
|
|
2420
|
+
gap: 10,
|
|
2421
|
+
}}>
|
|
2422
|
+
<Text style={{
|
|
2423
|
+
fontFamily: AppFonts.interBold,
|
|
2424
|
+
fontSize: 11,
|
|
2425
|
+
lineHeight: 14,
|
|
2426
|
+
color: AppColors.grayTextWeak,
|
|
2427
|
+
letterSpacing: 0.8,
|
|
2428
|
+
}}>
|
|
2429
|
+
DEVICE & DISPLAY METRICS
|
|
2430
|
+
</Text>
|
|
2431
|
+
|
|
2432
|
+
<View style={{ gap: 8 }}>
|
|
2433
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2434
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2435
|
+
Operating System
|
|
2436
|
+
</Text>
|
|
2437
|
+
<Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
|
|
2438
|
+
{Platform.OS === 'ios' ? 'Apple iOS' : Platform.OS === 'android' ? 'Google Android' : Platform.OS}{' '}
|
|
2439
|
+
{Platform.Version}
|
|
2440
|
+
</Text>
|
|
2441
|
+
</View>
|
|
2442
|
+
|
|
2443
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2444
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2445
|
+
Device Hardware Model
|
|
2446
|
+
</Text>
|
|
2447
|
+
<Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
|
|
2448
|
+
{Platform.constants?.Model ||
|
|
2449
|
+
(Platform.OS === 'ios' ? 'Apple Device' : 'Android Device')}
|
|
2450
|
+
</Text>
|
|
2451
|
+
</View>
|
|
2452
|
+
|
|
2453
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2454
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2455
|
+
Window Viewport (Points)
|
|
2456
|
+
</Text>
|
|
2457
|
+
<Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
|
|
2458
|
+
{Math.round(Dimensions.get('window').width)} × {Math.round(Dimensions.get('window').height)} pt
|
|
2459
|
+
</Text>
|
|
2460
|
+
</View>
|
|
2461
|
+
|
|
2462
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2463
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2464
|
+
Native Physical Resolution
|
|
2465
|
+
</Text>
|
|
2466
|
+
<Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
|
|
2467
|
+
{Math.round(Dimensions.get('screen').width * PixelRatio.get())} × {Math.round(Dimensions.get('screen').height * PixelRatio.get())} px
|
|
2468
|
+
</Text>
|
|
2469
|
+
</View>
|
|
2470
|
+
|
|
2471
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2472
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2473
|
+
Pixel Density & Font Scale
|
|
2474
|
+
</Text>
|
|
2475
|
+
<Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
|
|
2476
|
+
{PixelRatio.get().toFixed(1)}x ({PixelRatio.get() >= 3 ? '@3x' : PixelRatio.get() >= 2 ? '@2x' : '@1x'}) • Font: {PixelRatio.getFontScale().toFixed(2)}x
|
|
2477
|
+
</Text>
|
|
2478
|
+
</View>
|
|
2479
|
+
|
|
2480
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2481
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2482
|
+
Timezone & Locale
|
|
2483
|
+
</Text>
|
|
2484
|
+
<Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
|
|
2485
|
+
{Intl.DateTimeFormat().resolvedOptions().timeZone || 'System'} ({Intl.DateTimeFormat().resolvedOptions().locale || 'en'})
|
|
2486
|
+
</Text>
|
|
2487
|
+
</View>
|
|
2488
|
+
</View>
|
|
2489
|
+
</View>
|
|
2490
|
+
|
|
2491
|
+
|
|
2492
|
+
<View style={{
|
|
2493
|
+
backgroundColor: AppColors.primaryLight,
|
|
2494
|
+
borderRadius: 14,
|
|
2495
|
+
borderWidth: 1,
|
|
2496
|
+
borderColor: AppColors.grayBorderSecondary,
|
|
2497
|
+
padding: 14,
|
|
2498
|
+
gap: 10,
|
|
2499
|
+
}}>
|
|
2500
|
+
<Text style={{
|
|
2501
|
+
fontFamily: AppFonts.interBold,
|
|
2502
|
+
fontSize: 11,
|
|
2503
|
+
lineHeight: 14,
|
|
2504
|
+
color: AppColors.grayTextWeak,
|
|
2505
|
+
letterSpacing: 0.8,
|
|
2506
|
+
}}>
|
|
2507
|
+
INSPECTOR STORAGE & CAPABILITIES
|
|
2508
|
+
</Text>
|
|
2509
|
+
|
|
2510
|
+
<View style={{ gap: 8 }}>
|
|
2511
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2512
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2513
|
+
Storage Persistence Engine
|
|
2514
|
+
</Text>
|
|
2515
|
+
<View style={{
|
|
2516
|
+
backgroundColor: isPersistentStorageAvailable() ? `${AppColors.emerald500}18` : `${AppColors.amber500}18`,
|
|
2517
|
+
paddingHorizontal: 6,
|
|
2518
|
+
paddingVertical: 1.5,
|
|
2519
|
+
borderRadius: 5,
|
|
2520
|
+
borderWidth: 1,
|
|
2521
|
+
borderColor: isPersistentStorageAvailable() ? `${AppColors.emerald500}50` : `${AppColors.amber500}50`,
|
|
2522
|
+
}}>
|
|
2523
|
+
<Text style={{
|
|
2524
|
+
fontFamily: AppFonts.interBold,
|
|
2525
|
+
fontSize: 10.5,
|
|
2526
|
+
color: isPersistentStorageAvailable() ? AppColors.emerald600 : AppColors.amber500,
|
|
2527
|
+
}}>
|
|
2528
|
+
{isPersistentStorageAvailable() ? 'MMKV Fast Native Storage' : 'In-Memory State'}
|
|
2529
|
+
</Text>
|
|
2530
|
+
</View>
|
|
2531
|
+
</View>
|
|
2532
|
+
|
|
2533
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2534
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2535
|
+
Native Module Status
|
|
2536
|
+
</Text>
|
|
2537
|
+
<Text style={{
|
|
2538
|
+
fontFamily: AppFonts.interBold,
|
|
2539
|
+
fontSize: 11.5,
|
|
2540
|
+
color: Boolean(global?.NativeInspectorModule) ? AppColors.emerald600 : AppColors.grayText,
|
|
2541
|
+
}}>
|
|
2542
|
+
{Boolean(global?.NativeInspectorModule) ? 'Linked & Active' : 'JavaScript Only'}
|
|
2543
|
+
</Text>
|
|
2544
|
+
</View>
|
|
2545
|
+
|
|
2546
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2547
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2548
|
+
Network Logger Interceptor
|
|
2549
|
+
</Text>
|
|
2550
|
+
<Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.emerald600 }}>
|
|
2551
|
+
Active (XMLHttpRequest & Fetch Hooked)
|
|
2552
|
+
</Text>
|
|
2553
|
+
</View>
|
|
2554
|
+
|
|
2555
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2556
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2557
|
+
Redux & Analytics Watchers
|
|
2558
|
+
</Text>
|
|
2559
|
+
<Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
|
|
2560
|
+
Redux: {isReduxConnected() ? 'Connected' : 'Listening'} • Analytics: {isAnalyticsConnected() ? 'Connected' : 'Listening'}
|
|
2561
|
+
</Text>
|
|
2562
|
+
</View>
|
|
2563
|
+
|
|
2564
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2565
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2566
|
+
Crash & Exception Boundary
|
|
2567
|
+
</Text>
|
|
2568
|
+
<Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.emerald600 }}>
|
|
2569
|
+
Global JS Exception Handler Active
|
|
2570
|
+
</Text>
|
|
2571
|
+
</View>
|
|
2572
|
+
|
|
2573
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2574
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2575
|
+
Memory Management
|
|
2576
|
+
</Text>
|
|
2577
|
+
<Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.emerald600 }}>
|
|
2578
|
+
Dynamic Auto RAM Tiering Active
|
|
2579
|
+
</Text>
|
|
2580
|
+
</View>
|
|
2581
|
+
</View>
|
|
2582
|
+
</View>
|
|
2583
|
+
|
|
2584
|
+
|
|
2585
|
+
<View style={{
|
|
2586
|
+
backgroundColor: AppColors.primaryLight,
|
|
2587
|
+
borderRadius: 14,
|
|
2588
|
+
borderWidth: 1,
|
|
2589
|
+
borderColor: AppColors.grayBorderSecondary,
|
|
2590
|
+
padding: 14,
|
|
2591
|
+
gap: 8,
|
|
2592
|
+
}}>
|
|
2593
|
+
<Text style={{
|
|
2594
|
+
fontFamily: AppFonts.interBold,
|
|
2595
|
+
fontSize: 11,
|
|
2596
|
+
lineHeight: 14,
|
|
2597
|
+
color: AppColors.grayTextWeak,
|
|
2598
|
+
letterSpacing: 0.8,
|
|
2599
|
+
}}>
|
|
2600
|
+
LICENSE & CREDITS
|
|
2601
|
+
</Text>
|
|
2602
|
+
|
|
2603
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2604
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2605
|
+
License
|
|
2606
|
+
</Text>
|
|
2607
|
+
<Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.emerald600 }}>
|
|
2608
|
+
MIT Permissive Open Source
|
|
2609
|
+
</Text>
|
|
2610
|
+
</View>
|
|
2611
|
+
|
|
2612
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2613
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2614
|
+
Created & Maintained By
|
|
2615
|
+
</Text>
|
|
2616
|
+
<Text style={{ fontFamily: AppFonts.interBold, fontSize: 11.5, color: AppColors.primaryBlack }}>
|
|
2617
|
+
Vengateswaran
|
|
2618
|
+
</Text>
|
|
2619
|
+
</View>
|
|
2620
|
+
|
|
2621
|
+
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>
|
|
2622
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11.5, color: AppColors.grayText }}>
|
|
2623
|
+
Repository
|
|
2624
|
+
</Text>
|
|
2625
|
+
<Text style={{ fontFamily: AppFonts.interRegular, fontSize: 11, color: AppColors.purple }}>
|
|
2626
|
+
github.com/vengatmacuser/react-native-inapp-inspector
|
|
2627
|
+
</Text>
|
|
2628
|
+
</View>
|
|
2629
|
+
</View>
|
|
2630
|
+
</View>)}
|
|
1769
2631
|
<View style={{ height: 48 }}/>
|
|
1770
2632
|
</ScrollView>
|
|
1771
2633
|
|