react-native-inapp-inspector 1.1.28 → 1.1.31
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/android/src/main/java/com/inappinspector/NetworkInspectorModule.java +29 -80
- package/dist/commonjs/components/AnalyticsDetail.js +668 -108
- package/dist/commonjs/components/AppHeaderLogo.js +15 -15
- package/dist/commonjs/components/ConsoleLogCard.js +112 -66
- package/dist/commonjs/components/CopyButton.js +15 -1
- package/dist/commonjs/components/DomainHeader.js +64 -32
- package/dist/commonjs/components/HighlightText.js +7 -1
- package/dist/commonjs/components/Inspector/AnalyticsTab.js +332 -221
- package/dist/commonjs/components/Inspector/ConsoleTab.js +162 -56
- package/dist/commonjs/components/Inspector/InspectorHeader.js +70 -119
- package/dist/commonjs/components/Inspector/LogDetail.js +53 -17
- package/dist/commonjs/components/Inspector/MainScreen.js +4 -0
- package/dist/commonjs/components/Inspector/NetworkDetail.js +24 -24
- package/dist/commonjs/components/Inspector/NetworkTab.js +4 -1
- package/dist/commonjs/components/Inspector/ReduxDetail.js +237 -42
- package/dist/commonjs/components/Inspector/ReduxTab.js +456 -35
- package/dist/commonjs/components/JsonViewer.js +26 -4
- package/dist/commonjs/components/LogCard.js +103 -11
- package/dist/commonjs/components/NetworkIcons.js +19 -10
- package/dist/commonjs/components/Toast.d.ts +3 -0
- package/dist/commonjs/components/Toast.js +152 -0
- package/dist/commonjs/components/TouchableScale.d.ts +1 -0
- package/dist/commonjs/components/TouchableScale.js +3 -3
- package/dist/commonjs/components/TreeNode.js +12 -2
- package/dist/commonjs/constants/index.js +6 -6
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/customHooks/reduxLogger.js +128 -5
- package/dist/commonjs/helpers/index.d.ts +4 -0
- package/dist/commonjs/helpers/index.js +107 -92
- package/dist/commonjs/helpers/toast.d.ts +4 -0
- package/dist/commonjs/helpers/toast.js +20 -0
- package/dist/commonjs/i18n/locales/en.json +49 -3
- package/dist/commonjs/styles/AppColors.d.ts +6 -0
- package/dist/commonjs/styles/AppColors.js +6 -0
- package/dist/commonjs/styles/index.d.ts +82 -15
- package/dist/commonjs/styles/index.js +92 -26
- package/dist/commonjs/types/interfaces.d.ts +7 -0
- package/dist/esm/components/AnalyticsDetail.js +670 -110
- package/dist/esm/components/AppHeaderLogo.js +15 -15
- package/dist/esm/components/ConsoleLogCard.js +114 -68
- package/dist/esm/components/CopyButton.js +15 -1
- package/dist/esm/components/DomainHeader.js +64 -32
- package/dist/esm/components/HighlightText.js +7 -1
- package/dist/esm/components/Inspector/AnalyticsTab.js +334 -223
- package/dist/esm/components/Inspector/ConsoleTab.js +163 -57
- package/dist/esm/components/Inspector/InspectorHeader.js +71 -120
- package/dist/esm/components/Inspector/LogDetail.js +55 -19
- package/dist/esm/components/Inspector/MainScreen.js +4 -0
- package/dist/esm/components/Inspector/NetworkDetail.js +25 -25
- package/dist/esm/components/Inspector/NetworkTab.js +4 -1
- package/dist/esm/components/Inspector/ReduxDetail.js +239 -44
- package/dist/esm/components/Inspector/ReduxTab.js +458 -37
- package/dist/esm/components/JsonViewer.js +26 -4
- package/dist/esm/components/LogCard.js +105 -13
- package/dist/esm/components/NetworkIcons.js +19 -10
- package/dist/esm/components/Toast.d.ts +3 -0
- package/dist/esm/components/Toast.js +117 -0
- package/dist/esm/components/TouchableScale.d.ts +1 -0
- package/dist/esm/components/TouchableScale.js +3 -3
- package/dist/esm/components/TreeNode.js +12 -2
- package/dist/esm/constants/index.js +6 -6
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/customHooks/reduxLogger.js +128 -5
- package/dist/esm/helpers/index.d.ts +4 -0
- package/dist/esm/helpers/index.js +102 -92
- package/dist/esm/helpers/toast.d.ts +4 -0
- package/dist/esm/helpers/toast.js +15 -0
- package/dist/esm/i18n/locales/en.json +49 -3
- package/dist/esm/styles/AppColors.d.ts +6 -0
- package/dist/esm/styles/AppColors.js +6 -0
- package/dist/esm/styles/index.d.ts +82 -15
- package/dist/esm/styles/index.js +92 -26
- package/dist/esm/types/interfaces.d.ts +7 -0
- package/ios/NetworkInspectorModule.m +0 -10
- package/package.json +13 -10
|
@@ -10,7 +10,7 @@ import EndOfListFooter from '../EndOfListFooter';
|
|
|
10
10
|
import styles from '../../styles';
|
|
11
11
|
import { AppColors } from '../../styles/AppColors';
|
|
12
12
|
import { AppFonts } from '../../styles/AppFonts';
|
|
13
|
-
import { SearchIcon, ClearIcon, SortArrowIcon, TrashIcon, LayersIcon, UserIcon, InfoCircleIcon, WarningTriangleIcon, ErrorCircleIcon, AnalyticsIcon, HeaderPauseIcon, } from '../NetworkIcons';
|
|
13
|
+
import { SearchIcon, ClearIcon, SortArrowIcon, TrashIcon, LayersIcon, CheckIcon, UserIcon, InfoCircleIcon, WarningTriangleIcon, ErrorCircleIcon, AnalyticsIcon, HeaderPauseIcon, } from '../NetworkIcons';
|
|
14
14
|
const ConsoleTab = React.memo(() => {
|
|
15
15
|
const { t } = useTranslation();
|
|
16
16
|
const { logSearch, setLogSearch, logSortOrder, setLogSortOrder, handleDelete, logFilters, setLogFilters, logCounts, filteredConsoleLogs, visibleConsoleLogs, isConsolePaused, setIsConsolePaused, } = useInspector();
|
|
@@ -104,6 +104,7 @@ const ConsoleTab = React.memo(() => {
|
|
|
104
104
|
alignItems: 'center',
|
|
105
105
|
gap: 8,
|
|
106
106
|
}}>
|
|
107
|
+
{/* All Filter */}
|
|
107
108
|
{(() => {
|
|
108
109
|
const active = logFilters.has('all');
|
|
109
110
|
return (<TouchableScale onPress={() => {
|
|
@@ -111,34 +112,52 @@ const ConsoleTab = React.memo(() => {
|
|
|
111
112
|
}}>
|
|
112
113
|
<View style={[
|
|
113
114
|
styles.statusFilterChip,
|
|
115
|
+
{
|
|
116
|
+
backgroundColor: active ? AppColors.indigo600Alt : AppColors.indigo50,
|
|
117
|
+
borderColor: active ? AppColors.indigo600 : AppColors.indigo400,
|
|
118
|
+
borderRadius: 7,
|
|
119
|
+
},
|
|
114
120
|
active && {
|
|
115
|
-
|
|
116
|
-
|
|
121
|
+
shadowColor: AppColors.indigo600Alt,
|
|
122
|
+
shadowOffset: { width: 0, height: 1 },
|
|
123
|
+
shadowOpacity: 0.28,
|
|
124
|
+
shadowRadius: 2.5,
|
|
125
|
+
elevation: 2,
|
|
117
126
|
},
|
|
118
127
|
]}>
|
|
119
|
-
{/* #7 */}
|
|
120
128
|
<View style={{
|
|
121
129
|
flexDirection: 'row',
|
|
122
130
|
alignItems: 'center',
|
|
123
131
|
gap: 5,
|
|
124
132
|
}}>
|
|
125
|
-
<
|
|
126
|
-
|
|
127
|
-
:
|
|
133
|
+
<View style={{
|
|
134
|
+
width: 12,
|
|
135
|
+
height: 12,
|
|
136
|
+
borderRadius: 3,
|
|
137
|
+
borderWidth: 1.2,
|
|
138
|
+
borderColor: active ? AppColors.white : AppColors.indigo400,
|
|
139
|
+
backgroundColor: active ? AppColors.white : 'transparent',
|
|
140
|
+
alignItems: 'center',
|
|
141
|
+
justifyContent: 'center',
|
|
142
|
+
}}>
|
|
143
|
+
{active && <CheckIcon color={AppColors.indigo600Alt} size={8}/>}
|
|
144
|
+
</View>
|
|
145
|
+
<LayersIcon size={12} color={active ? AppColors.white : AppColors.indigo600Alt}/>
|
|
128
146
|
<Text numberOfLines={1} style={[
|
|
129
147
|
styles.statusFilterText,
|
|
130
|
-
|
|
131
|
-
color: AppColors.
|
|
148
|
+
{
|
|
149
|
+
color: active ? AppColors.white : AppColors.indigo600Alt,
|
|
132
150
|
fontFamily: AppFonts.interBold,
|
|
133
151
|
},
|
|
134
152
|
]}>
|
|
135
|
-
All ({logCounts.all})
|
|
153
|
+
{t('common.all', 'All')} ({logCounts.all})
|
|
136
154
|
</Text>
|
|
137
155
|
</View>
|
|
138
156
|
</View>
|
|
139
157
|
</TouchableScale>);
|
|
140
158
|
})()}
|
|
141
159
|
|
|
160
|
+
{/* User Log / Standard Log Filter */}
|
|
142
161
|
{(() => {
|
|
143
162
|
const active = logFilters.has('user-log');
|
|
144
163
|
return (<TouchableScale onPress={() => {
|
|
@@ -155,34 +174,52 @@ const ConsoleTab = React.memo(() => {
|
|
|
155
174
|
}}>
|
|
156
175
|
<View style={[
|
|
157
176
|
styles.statusFilterChip,
|
|
177
|
+
{
|
|
178
|
+
backgroundColor: active ? AppColors.teal600 : AppColors.teal100,
|
|
179
|
+
borderColor: active ? AppColors.teal600 : AppColors.teal400,
|
|
180
|
+
borderRadius: 7,
|
|
181
|
+
},
|
|
158
182
|
active && {
|
|
159
|
-
|
|
160
|
-
|
|
183
|
+
shadowColor: AppColors.teal600,
|
|
184
|
+
shadowOffset: { width: 0, height: 1 },
|
|
185
|
+
shadowOpacity: 0.28,
|
|
186
|
+
shadowRadius: 2.5,
|
|
187
|
+
elevation: 2,
|
|
161
188
|
},
|
|
162
189
|
]}>
|
|
163
|
-
{/* #7 */}
|
|
164
190
|
<View style={{
|
|
165
191
|
flexDirection: 'row',
|
|
166
192
|
alignItems: 'center',
|
|
167
193
|
gap: 5,
|
|
168
194
|
}}>
|
|
169
|
-
<
|
|
170
|
-
|
|
171
|
-
:
|
|
195
|
+
<View style={{
|
|
196
|
+
width: 12,
|
|
197
|
+
height: 12,
|
|
198
|
+
borderRadius: 3,
|
|
199
|
+
borderWidth: 1.2,
|
|
200
|
+
borderColor: active ? AppColors.white : AppColors.teal400,
|
|
201
|
+
backgroundColor: active ? AppColors.white : 'transparent',
|
|
202
|
+
alignItems: 'center',
|
|
203
|
+
justifyContent: 'center',
|
|
204
|
+
}}>
|
|
205
|
+
{active && <CheckIcon color={AppColors.teal600} size={8}/>}
|
|
206
|
+
</View>
|
|
207
|
+
<UserIcon size={12} color={active ? AppColors.white : AppColors.teal600}/>
|
|
172
208
|
<Text numberOfLines={1} style={[
|
|
173
209
|
styles.statusFilterText,
|
|
174
|
-
|
|
175
|
-
color: AppColors.
|
|
210
|
+
{
|
|
211
|
+
color: active ? AppColors.white : AppColors.teal600,
|
|
176
212
|
fontFamily: AppFonts.interBold,
|
|
177
213
|
},
|
|
178
214
|
]}>
|
|
179
|
-
|
|
215
|
+
{t('console.log', 'Log')} ({logCounts['user-log']})
|
|
180
216
|
</Text>
|
|
181
217
|
</View>
|
|
182
218
|
</View>
|
|
183
219
|
</TouchableScale>);
|
|
184
220
|
})()}
|
|
185
221
|
|
|
222
|
+
{/* Info Filter */}
|
|
186
223
|
{(() => {
|
|
187
224
|
const active = logFilters.has('info');
|
|
188
225
|
return (<TouchableScale onPress={() => {
|
|
@@ -199,34 +236,52 @@ const ConsoleTab = React.memo(() => {
|
|
|
199
236
|
}}>
|
|
200
237
|
<View style={[
|
|
201
238
|
styles.statusFilterChip,
|
|
239
|
+
{
|
|
240
|
+
backgroundColor: active ? AppColors.sky600 : AppColors.sky100,
|
|
241
|
+
borderColor: active ? AppColors.blue700 : AppColors.sky400,
|
|
242
|
+
borderRadius: 7,
|
|
243
|
+
},
|
|
202
244
|
active && {
|
|
203
|
-
|
|
204
|
-
|
|
245
|
+
shadowColor: AppColors.sky600,
|
|
246
|
+
shadowOffset: { width: 0, height: 1 },
|
|
247
|
+
shadowOpacity: 0.28,
|
|
248
|
+
shadowRadius: 2.5,
|
|
249
|
+
elevation: 2,
|
|
205
250
|
},
|
|
206
251
|
]}>
|
|
207
|
-
{/* #7 */}
|
|
208
252
|
<View style={{
|
|
209
253
|
flexDirection: 'row',
|
|
210
254
|
alignItems: 'center',
|
|
211
255
|
gap: 5,
|
|
212
256
|
}}>
|
|
213
|
-
<
|
|
214
|
-
|
|
215
|
-
:
|
|
257
|
+
<View style={{
|
|
258
|
+
width: 12,
|
|
259
|
+
height: 12,
|
|
260
|
+
borderRadius: 3,
|
|
261
|
+
borderWidth: 1.2,
|
|
262
|
+
borderColor: active ? AppColors.white : AppColors.sky400,
|
|
263
|
+
backgroundColor: active ? AppColors.white : 'transparent',
|
|
264
|
+
alignItems: 'center',
|
|
265
|
+
justifyContent: 'center',
|
|
266
|
+
}}>
|
|
267
|
+
{active && <CheckIcon color={AppColors.sky600} size={8}/>}
|
|
268
|
+
</View>
|
|
269
|
+
<InfoCircleIcon size={12} color={active ? AppColors.white : AppColors.sky600}/>
|
|
216
270
|
<Text numberOfLines={1} style={[
|
|
217
271
|
styles.statusFilterText,
|
|
218
|
-
|
|
219
|
-
color: AppColors.
|
|
272
|
+
{
|
|
273
|
+
color: active ? AppColors.white : AppColors.sky600,
|
|
220
274
|
fontFamily: AppFonts.interBold,
|
|
221
275
|
},
|
|
222
276
|
]}>
|
|
223
|
-
Info ({logCounts.info})
|
|
277
|
+
{t('console.info', 'Info')} ({logCounts.info})
|
|
224
278
|
</Text>
|
|
225
279
|
</View>
|
|
226
280
|
</View>
|
|
227
281
|
</TouchableScale>);
|
|
228
282
|
})()}
|
|
229
283
|
|
|
284
|
+
{/* Warning Filter */}
|
|
230
285
|
{(() => {
|
|
231
286
|
const active = logFilters.has('warn');
|
|
232
287
|
return (<TouchableScale onPress={() => {
|
|
@@ -243,36 +298,52 @@ const ConsoleTab = React.memo(() => {
|
|
|
243
298
|
}}>
|
|
244
299
|
<View style={[
|
|
245
300
|
styles.statusFilterChip,
|
|
301
|
+
{
|
|
302
|
+
backgroundColor: active ? AppColors.amber600 : AppColors.amber100,
|
|
303
|
+
borderColor: active ? AppColors.amber700 : AppColors.amber200,
|
|
304
|
+
borderRadius: 7,
|
|
305
|
+
},
|
|
246
306
|
active && {
|
|
247
|
-
|
|
248
|
-
|
|
307
|
+
shadowColor: AppColors.amber600,
|
|
308
|
+
shadowOffset: { width: 0, height: 1 },
|
|
309
|
+
shadowOpacity: 0.28,
|
|
310
|
+
shadowRadius: 2.5,
|
|
311
|
+
elevation: 2,
|
|
249
312
|
},
|
|
250
313
|
]}>
|
|
251
|
-
{/* #7 */}
|
|
252
314
|
<View style={{
|
|
253
315
|
flexDirection: 'row',
|
|
254
316
|
alignItems: 'center',
|
|
255
317
|
gap: 5,
|
|
256
318
|
}}>
|
|
257
|
-
<
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
:
|
|
319
|
+
<View style={{
|
|
320
|
+
width: 12,
|
|
321
|
+
height: 12,
|
|
322
|
+
borderRadius: 3,
|
|
323
|
+
borderWidth: 1.2,
|
|
324
|
+
borderColor: active ? AppColors.white : AppColors.amber500,
|
|
325
|
+
backgroundColor: active ? AppColors.white : 'transparent',
|
|
326
|
+
alignItems: 'center',
|
|
327
|
+
justifyContent: 'center',
|
|
328
|
+
}}>
|
|
329
|
+
{active && <CheckIcon color={AppColors.amber600} size={8}/>}
|
|
330
|
+
</View>
|
|
331
|
+
<WarningTriangleIcon size={12} color={active ? AppColors.white : AppColors.amber700}/>
|
|
261
332
|
<Text numberOfLines={1} style={[
|
|
262
333
|
styles.statusFilterText,
|
|
263
|
-
|
|
264
|
-
color: AppColors.
|
|
265
|
-
AppColors.lightOrange,
|
|
334
|
+
{
|
|
335
|
+
color: active ? AppColors.white : AppColors.amber800Warm,
|
|
266
336
|
fontFamily: AppFonts.interBold,
|
|
267
337
|
},
|
|
268
338
|
]}>
|
|
269
|
-
|
|
339
|
+
{t('console.warning', 'Warn')} ({logCounts.warn})
|
|
270
340
|
</Text>
|
|
271
341
|
</View>
|
|
272
342
|
</View>
|
|
273
343
|
</TouchableScale>);
|
|
274
344
|
})()}
|
|
275
345
|
|
|
346
|
+
{/* Error Filter */}
|
|
276
347
|
{(() => {
|
|
277
348
|
const active = logFilters.has('error');
|
|
278
349
|
return (<TouchableScale onPress={() => {
|
|
@@ -289,34 +360,52 @@ const ConsoleTab = React.memo(() => {
|
|
|
289
360
|
}}>
|
|
290
361
|
<View style={[
|
|
291
362
|
styles.statusFilterChip,
|
|
363
|
+
{
|
|
364
|
+
backgroundColor: active ? AppColors.red500 : AppColors.red100,
|
|
365
|
+
borderColor: active ? AppColors.red600 : AppColors.errorBorder,
|
|
366
|
+
borderRadius: 7,
|
|
367
|
+
},
|
|
292
368
|
active && {
|
|
293
|
-
|
|
294
|
-
|
|
369
|
+
shadowColor: AppColors.red500,
|
|
370
|
+
shadowOffset: { width: 0, height: 1 },
|
|
371
|
+
shadowOpacity: 0.28,
|
|
372
|
+
shadowRadius: 2.5,
|
|
373
|
+
elevation: 2,
|
|
295
374
|
},
|
|
296
375
|
]}>
|
|
297
|
-
{/* #7 */}
|
|
298
376
|
<View style={{
|
|
299
377
|
flexDirection: 'row',
|
|
300
378
|
alignItems: 'center',
|
|
301
379
|
gap: 5,
|
|
302
380
|
}}>
|
|
303
|
-
<
|
|
304
|
-
|
|
305
|
-
:
|
|
381
|
+
<View style={{
|
|
382
|
+
width: 12,
|
|
383
|
+
height: 12,
|
|
384
|
+
borderRadius: 3,
|
|
385
|
+
borderWidth: 1.2,
|
|
386
|
+
borderColor: active ? AppColors.white : AppColors.red500,
|
|
387
|
+
backgroundColor: active ? AppColors.white : 'transparent',
|
|
388
|
+
alignItems: 'center',
|
|
389
|
+
justifyContent: 'center',
|
|
390
|
+
}}>
|
|
391
|
+
{active && <CheckIcon color={AppColors.red500} size={8}/>}
|
|
392
|
+
</View>
|
|
393
|
+
<ErrorCircleIcon size={12} color={active ? AppColors.white : AppColors.red500}/>
|
|
306
394
|
<Text numberOfLines={1} style={[
|
|
307
395
|
styles.statusFilterText,
|
|
308
|
-
|
|
309
|
-
color: AppColors.
|
|
396
|
+
{
|
|
397
|
+
color: active ? AppColors.white : AppColors.redErrorText,
|
|
310
398
|
fontFamily: AppFonts.interBold,
|
|
311
399
|
},
|
|
312
400
|
]}>
|
|
313
|
-
Error ({logCounts.error})
|
|
401
|
+
{t('console.error', 'Error')} ({logCounts.error})
|
|
314
402
|
</Text>
|
|
315
403
|
</View>
|
|
316
404
|
</View>
|
|
317
405
|
</TouchableScale>);
|
|
318
406
|
})()}
|
|
319
407
|
|
|
408
|
+
{/* Analytics Filter */}
|
|
320
409
|
{(() => {
|
|
321
410
|
const active = logFilters.has('analytics');
|
|
322
411
|
return (<TouchableScale onPress={() => {
|
|
@@ -333,28 +422,45 @@ const ConsoleTab = React.memo(() => {
|
|
|
333
422
|
}}>
|
|
334
423
|
<View style={[
|
|
335
424
|
styles.statusFilterChip,
|
|
425
|
+
{
|
|
426
|
+
backgroundColor: active ? AppColors.violet600 : AppColors.purple100,
|
|
427
|
+
borderColor: active ? AppColors.purple700 : AppColors.purple200,
|
|
428
|
+
borderRadius: 7,
|
|
429
|
+
},
|
|
336
430
|
active && {
|
|
337
|
-
|
|
338
|
-
|
|
431
|
+
shadowColor: AppColors.violet600,
|
|
432
|
+
shadowOffset: { width: 0, height: 1 },
|
|
433
|
+
shadowOpacity: 0.28,
|
|
434
|
+
shadowRadius: 2.5,
|
|
435
|
+
elevation: 2,
|
|
339
436
|
},
|
|
340
437
|
]}>
|
|
341
|
-
{/* #7 */}
|
|
342
438
|
<View style={{
|
|
343
439
|
flexDirection: 'row',
|
|
344
440
|
alignItems: 'center',
|
|
345
441
|
gap: 5,
|
|
346
442
|
}}>
|
|
347
|
-
<
|
|
348
|
-
|
|
349
|
-
:
|
|
443
|
+
<View style={{
|
|
444
|
+
width: 12,
|
|
445
|
+
height: 12,
|
|
446
|
+
borderRadius: 3,
|
|
447
|
+
borderWidth: 1.2,
|
|
448
|
+
borderColor: active ? AppColors.white : AppColors.purple400,
|
|
449
|
+
backgroundColor: active ? AppColors.white : 'transparent',
|
|
450
|
+
alignItems: 'center',
|
|
451
|
+
justifyContent: 'center',
|
|
452
|
+
}}>
|
|
453
|
+
{active && <CheckIcon color={AppColors.violet600} size={8}/>}
|
|
454
|
+
</View>
|
|
455
|
+
<AnalyticsIcon size={12} color={active ? AppColors.white : AppColors.purple}/>
|
|
350
456
|
<Text numberOfLines={1} style={[
|
|
351
457
|
styles.statusFilterText,
|
|
352
|
-
|
|
353
|
-
color: AppColors.
|
|
458
|
+
{
|
|
459
|
+
color: active ? AppColors.white : AppColors.brandPurple,
|
|
354
460
|
fontFamily: AppFonts.interBold,
|
|
355
461
|
},
|
|
356
462
|
]}>
|
|
357
|
-
Analytics ({logCounts.analytics})
|
|
463
|
+
{t('tabs.analytics', 'Analytics')} ({logCounts.analytics})
|
|
358
464
|
</Text>
|
|
359
465
|
</View>
|
|
360
466
|
</View>
|
|
@@ -10,7 +10,7 @@ import { AppFonts } from '../../styles/AppFonts';
|
|
|
10
10
|
import { METHOD_COLORS } from '../../constants';
|
|
11
11
|
import { LIB_VERSION } from '../../constants';
|
|
12
12
|
import { getStatusColor, getAppName, getBundleIdentifier, formatTime, getSize } from '../../helpers';
|
|
13
|
-
import { WhiteBackNavigation, TrashIcon, SettingsIcon, CloseWhite,
|
|
13
|
+
import { WhiteBackNavigation, TrashIcon, SettingsIcon, CloseWhite, ClockIcon, SizeIcon, AppleIcon, AndroidIcon, } from '../NetworkIcons';
|
|
14
14
|
const InspectorHeader = React.memo(() => {
|
|
15
15
|
const { modalHeightPercent, appIcon, selected, setSelected, selectedEvent, setSelectedEvent, selectedLog, setSelectedLog, selectedReduxSlice, setSelectedReduxSlice, selectedReduxAction, setSelectedReduxAction, reduxState, reduxLastActionMap, showHeaderInfo, setShowHeaderInfo, updateAvailable, latestNpmVersion, clearAnim, activePulseAnim, unreadPulseAnim, runClearAllWithAnimation, setSettingsPage, closeModal, detailTitle, activeTab, environment, selectedCrash, setSelectedCrash, } = useInspector();
|
|
16
16
|
const envConfig = useMemo(() => {
|
|
@@ -101,16 +101,18 @@ const InspectorHeader = React.memo(() => {
|
|
|
101
101
|
<WhiteBackNavigation />
|
|
102
102
|
</TouchableScale>
|
|
103
103
|
|
|
104
|
-
{!isAnySelected ? (<
|
|
104
|
+
{!isAnySelected ? (<View style={{
|
|
105
105
|
flexDirection: 'row',
|
|
106
|
-
alignItems: '
|
|
107
|
-
gap:
|
|
106
|
+
alignItems: 'center',
|
|
107
|
+
gap: 8,
|
|
108
108
|
flex: 1,
|
|
109
|
+
minWidth: 0,
|
|
110
|
+
marginRight: 6,
|
|
109
111
|
}}>
|
|
110
|
-
<AppHeaderLogo size={
|
|
111
|
-
<View style={{ gap: 2, flex: 1 }}>
|
|
112
|
-
<View style={{ flexDirection: 'row', alignItems: 'center', gap: 6,
|
|
113
|
-
<Text style={[styles.headerTitle]} numberOfLines={1}>
|
|
112
|
+
<AppHeaderLogo size={38} customIcon={appIcon}/>
|
|
113
|
+
<View style={{ gap: 2.5, flex: 1, minWidth: 0 }}>
|
|
114
|
+
<View style={{ flexDirection: 'row', alignItems: 'center', gap: 6, minWidth: 0 }}>
|
|
115
|
+
<Text style={[styles.headerTitle, { flexShrink: 1 }]} numberOfLines={1} ellipsizeMode="tail">
|
|
114
116
|
{getAppName()}
|
|
115
117
|
</Text>
|
|
116
118
|
<View style={[
|
|
@@ -118,6 +120,9 @@ const InspectorHeader = React.memo(() => {
|
|
|
118
120
|
{
|
|
119
121
|
backgroundColor: envConfig.bg,
|
|
120
122
|
borderColor: envConfig.border,
|
|
123
|
+
flexShrink: 0,
|
|
124
|
+
paddingVertical: 1.5,
|
|
125
|
+
marginBottom: 0,
|
|
121
126
|
},
|
|
122
127
|
]}>
|
|
123
128
|
<Text style={[
|
|
@@ -136,6 +141,7 @@ const InspectorHeader = React.memo(() => {
|
|
|
136
141
|
])} style={{
|
|
137
142
|
alignItems: 'center',
|
|
138
143
|
justifyContent: 'center',
|
|
144
|
+
flexShrink: 0,
|
|
139
145
|
}}>
|
|
140
146
|
<Animated.View style={{
|
|
141
147
|
width: 8,
|
|
@@ -149,128 +155,59 @@ const InspectorHeader = React.memo(() => {
|
|
|
149
155
|
}}/>
|
|
150
156
|
</Pressable>)}
|
|
151
157
|
</View>
|
|
158
|
+
|
|
159
|
+
{/* Clean Bundle Identifier & Version Representation */}
|
|
152
160
|
<View style={{
|
|
153
161
|
flexDirection: 'row',
|
|
154
162
|
alignItems: 'center',
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
163
|
+
gap: 4.5,
|
|
164
|
+
minWidth: 0,
|
|
165
|
+
}}>
|
|
166
|
+
<View style={{
|
|
167
|
+
flexDirection: 'row',
|
|
168
|
+
alignItems: 'center',
|
|
169
|
+
backgroundColor: `${AppColors.white}1F`,
|
|
170
|
+
borderRadius: 5,
|
|
171
|
+
paddingHorizontal: 6,
|
|
172
|
+
paddingVertical: 2,
|
|
173
|
+
gap: 3.5,
|
|
161
174
|
borderWidth: 1,
|
|
162
|
-
borderColor: `${AppColors.white}
|
|
175
|
+
borderColor: `${AppColors.white}2E`,
|
|
176
|
+
flexShrink: 1,
|
|
177
|
+
minWidth: 0,
|
|
163
178
|
}}>
|
|
179
|
+
{Platform.OS === 'ios' ? (<AppleIcon color={`${AppColors.white}D9`} size={9}/>) : (<AndroidIcon color={`${AppColors.white}D9`} size={9}/>)}
|
|
180
|
+
<Text style={{
|
|
181
|
+
fontFamily: AppFonts.interMedium,
|
|
182
|
+
fontSize: 9.5,
|
|
183
|
+
color: `${AppColors.white}EB`,
|
|
184
|
+
letterSpacing: 0.1,
|
|
185
|
+
flexShrink: 1,
|
|
186
|
+
}} numberOfLines={1} ellipsizeMode="middle">
|
|
187
|
+
{getBundleIdentifier()}
|
|
188
|
+
</Text>
|
|
189
|
+
</View>
|
|
190
|
+
|
|
164
191
|
<View style={{
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
192
|
+
backgroundColor: `${AppColors.white}14`,
|
|
193
|
+
borderRadius: 4,
|
|
194
|
+
paddingHorizontal: 4.5,
|
|
195
|
+
paddingVertical: 1.5,
|
|
196
|
+
borderWidth: 1,
|
|
197
|
+
borderColor: `${AppColors.white}20`,
|
|
198
|
+
flexShrink: 0,
|
|
199
|
+
}}>
|
|
200
|
+
<Text style={{
|
|
171
201
|
fontFamily: AppFonts.interMedium,
|
|
172
|
-
fontSize:
|
|
173
|
-
color: `${AppColors.white}
|
|
174
|
-
letterSpacing: 0.2,
|
|
202
|
+
fontSize: 8.5,
|
|
203
|
+
color: `${AppColors.white}B3`,
|
|
175
204
|
}} numberOfLines={1}>
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
transform: [{ rotate: showHeaderInfo ? '180deg' : '0deg' }],
|
|
180
|
-
marginLeft: 2,
|
|
181
|
-
}}>
|
|
182
|
-
<ChevronIcon color="rgba(255,255,255,0.6)" size={12}/>
|
|
183
|
-
</Animated.View>
|
|
205
|
+
v{LIB_VERSION}
|
|
206
|
+
</Text>
|
|
207
|
+
</View>
|
|
184
208
|
</View>
|
|
185
|
-
{showHeaderInfo && (<View style={{
|
|
186
|
-
flexDirection: 'row',
|
|
187
|
-
alignItems: 'center',
|
|
188
|
-
gap: 6,
|
|
189
|
-
marginTop: 4,
|
|
190
|
-
}}>
|
|
191
|
-
<View style={{
|
|
192
|
-
flexDirection: 'row',
|
|
193
|
-
alignItems: 'center',
|
|
194
|
-
borderRadius: 6,
|
|
195
|
-
overflow: 'hidden',
|
|
196
|
-
borderWidth: 1,
|
|
197
|
-
borderColor: `${AppColors.white}2E`,
|
|
198
|
-
}}>
|
|
199
|
-
<View style={{
|
|
200
|
-
flexDirection: 'row',
|
|
201
|
-
alignItems: 'center',
|
|
202
|
-
gap: 3.5,
|
|
203
|
-
paddingHorizontal: 6,
|
|
204
|
-
paddingVertical: 2.5,
|
|
205
|
-
backgroundColor: `${AppColors.white}47`,
|
|
206
|
-
}}>
|
|
207
|
-
{Platform.OS === 'ios' ? (<AppleIcon color={AppColors.white} size={10}/>) : (<AndroidIcon color={AppColors.white} size={10}/>)}
|
|
208
|
-
<Text style={{
|
|
209
|
-
fontFamily: AppFonts.interBold,
|
|
210
|
-
fontSize: 9,
|
|
211
|
-
color: AppColors.white,
|
|
212
|
-
letterSpacing: 0.3,
|
|
213
|
-
}}>
|
|
214
|
-
{Platform.OS === 'ios' ? 'iOS' : 'Android'}
|
|
215
|
-
</Text>
|
|
216
|
-
</View>
|
|
217
|
-
<View style={{
|
|
218
|
-
paddingHorizontal: 5,
|
|
219
|
-
paddingVertical: 2.5,
|
|
220
|
-
backgroundColor: `${AppColors.white}1F`,
|
|
221
|
-
}}>
|
|
222
|
-
<Text style={{
|
|
223
|
-
fontFamily: AppFonts.interMedium,
|
|
224
|
-
fontSize: 9.5,
|
|
225
|
-
color: `${AppColors.white}EB`,
|
|
226
|
-
}}>
|
|
227
|
-
{String(Platform.Version)}
|
|
228
|
-
</Text>
|
|
229
|
-
</View>
|
|
230
|
-
</View>
|
|
231
|
-
<View style={{
|
|
232
|
-
flexDirection: 'row',
|
|
233
|
-
alignItems: 'center',
|
|
234
|
-
borderRadius: 6,
|
|
235
|
-
overflow: 'hidden',
|
|
236
|
-
borderWidth: 1,
|
|
237
|
-
borderColor: `${AppColors.white}2E`,
|
|
238
|
-
}}>
|
|
239
|
-
<View style={{
|
|
240
|
-
flexDirection: 'row',
|
|
241
|
-
alignItems: 'center',
|
|
242
|
-
gap: 3.5,
|
|
243
|
-
paddingHorizontal: 6,
|
|
244
|
-
paddingVertical: 2.5,
|
|
245
|
-
backgroundColor: `${AppColors.white}47`,
|
|
246
|
-
}}>
|
|
247
|
-
<PackageBoxIcon color={AppColors.white} size={10}/>
|
|
248
|
-
<Text style={{
|
|
249
|
-
fontFamily: AppFonts.interBold,
|
|
250
|
-
fontSize: 9,
|
|
251
|
-
color: AppColors.white,
|
|
252
|
-
letterSpacing: 0.3,
|
|
253
|
-
}}>
|
|
254
|
-
npm
|
|
255
|
-
</Text>
|
|
256
|
-
</View>
|
|
257
|
-
<View style={{
|
|
258
|
-
paddingHorizontal: 5,
|
|
259
|
-
paddingVertical: 2,
|
|
260
|
-
backgroundColor: `${AppColors.white}1F`,
|
|
261
|
-
}}>
|
|
262
|
-
<Text style={{
|
|
263
|
-
fontFamily: AppFonts.interMedium,
|
|
264
|
-
fontSize: 9.5,
|
|
265
|
-
color: `${AppColors.white}EB`,
|
|
266
|
-
}}>
|
|
267
|
-
v{LIB_VERSION}
|
|
268
|
-
</Text>
|
|
269
|
-
</View>
|
|
270
|
-
</View>
|
|
271
|
-
</View>)}
|
|
272
209
|
</View>
|
|
273
|
-
</
|
|
210
|
+
</View>) : null}
|
|
274
211
|
</View>
|
|
275
212
|
|
|
276
213
|
{isDetailView && (<View style={styles.headerCenter}>
|
|
@@ -334,6 +271,20 @@ const InspectorHeader = React.memo(() => {
|
|
|
334
271
|
: '—'}
|
|
335
272
|
</Text>
|
|
336
273
|
</View>
|
|
274
|
+
{selected.response != null && (<View style={{
|
|
275
|
+
flexDirection: 'row',
|
|
276
|
+
alignItems: 'center',
|
|
277
|
+
gap: 4,
|
|
278
|
+
paddingHorizontal: 8,
|
|
279
|
+
paddingVertical: 3,
|
|
280
|
+
borderRadius: 20,
|
|
281
|
+
backgroundColor: `${AppColors.white}29`,
|
|
282
|
+
}}>
|
|
283
|
+
<SizeIcon color={AppColors.white} size={11}/>
|
|
284
|
+
<Text style={styles.headerSubTitle}>
|
|
285
|
+
{getSize(selected.response)}
|
|
286
|
+
</Text>
|
|
287
|
+
</View>)}
|
|
337
288
|
</View>
|
|
338
289
|
</View>) : activeTab === 'analytics' && selectedEvent != null ? (<View style={styles.headerDetailCenter}>
|
|
339
290
|
<View style={styles.headerDetailRow}>
|