react-native-inapp-inspector 1.1.25 → 1.1.26
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/build.gradle +36 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/java/com/inappinspector/NetworkInspectorModule.java +114 -0
- package/android/src/main/java/com/inappinspector/NetworkInspectorPackage.java +28 -0
- package/dist/commonjs/components/ErrorBoundary.d.ts +1 -1
- package/dist/commonjs/components/ErrorBoundary.js +9 -145
- package/dist/commonjs/components/Inspector/CrashDetail.d.ts +3 -0
- package/dist/commonjs/components/Inspector/CrashDetail.js +796 -0
- package/dist/commonjs/components/Inspector/CrashFilterModal.d.ts +20 -0
- package/dist/commonjs/components/Inspector/CrashFilterModal.js +597 -0
- package/dist/commonjs/components/Inspector/CrashTab.d.ts +3 -0
- package/dist/commonjs/components/Inspector/CrashTab.js +727 -0
- package/dist/commonjs/components/Inspector/InspectorHeader.js +52 -23
- package/dist/commonjs/components/Inspector/LogDetail.js +4 -3
- package/dist/commonjs/components/Inspector/MainScreen.js +12 -3
- package/dist/commonjs/components/Inspector/SettingsPanel.js +90 -1
- package/dist/commonjs/components/Inspector/TabBar.js +15 -3
- package/dist/commonjs/components/NetworkIcons.d.ts +11 -0
- package/dist/commonjs/components/NetworkIcons.js +96 -1
- package/dist/commonjs/components/SegmentedTabs.js +2 -1
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/customHooks/analyticsLogger.js +70 -44
- package/dist/commonjs/customHooks/consoleLogger.d.ts +1 -0
- package/dist/commonjs/customHooks/consoleLogger.js +70 -6
- package/dist/commonjs/customHooks/crashHandler.d.ts +64 -0
- package/dist/commonjs/customHooks/crashHandler.js +681 -0
- package/dist/commonjs/customHooks/networkLogger.js +64 -48
- package/dist/commonjs/helpers/gaAnalyticsRegistry.js +1 -1
- package/dist/commonjs/i18n/locales/en.json +131 -0
- package/dist/commonjs/index.d.ts +3 -1
- package/dist/commonjs/index.js +95 -1
- package/dist/commonjs/types/enums.d.ts +41 -0
- package/dist/commonjs/types/enums.js +37 -1
- package/dist/commonjs/types/interfaces.d.ts +51 -1
- package/dist/esm/components/ErrorBoundary.d.ts +1 -1
- package/dist/esm/components/ErrorBoundary.js +10 -113
- package/dist/esm/components/Inspector/CrashDetail.d.ts +3 -0
- package/dist/esm/components/Inspector/CrashDetail.js +758 -0
- package/dist/esm/components/Inspector/CrashFilterModal.d.ts +20 -0
- package/dist/esm/components/Inspector/CrashFilterModal.js +557 -0
- package/dist/esm/components/Inspector/CrashTab.d.ts +3 -0
- package/dist/esm/components/Inspector/CrashTab.js +689 -0
- package/dist/esm/components/Inspector/InspectorHeader.js +52 -23
- package/dist/esm/components/Inspector/LogDetail.js +4 -3
- package/dist/esm/components/Inspector/MainScreen.js +12 -3
- package/dist/esm/components/Inspector/SettingsPanel.js +91 -2
- package/dist/esm/components/Inspector/TabBar.js +16 -4
- package/dist/esm/components/NetworkIcons.d.ts +11 -0
- package/dist/esm/components/NetworkIcons.js +83 -0
- package/dist/esm/components/SegmentedTabs.js +2 -1
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/customHooks/analyticsLogger.js +70 -44
- package/dist/esm/customHooks/consoleLogger.d.ts +1 -0
- package/dist/esm/customHooks/consoleLogger.js +68 -5
- package/dist/esm/customHooks/crashHandler.d.ts +64 -0
- package/dist/esm/customHooks/crashHandler.js +659 -0
- package/dist/esm/customHooks/networkLogger.js +64 -48
- package/dist/esm/helpers/gaAnalyticsRegistry.js +1 -1
- package/dist/esm/i18n/locales/en.json +131 -0
- package/dist/esm/index.d.ts +3 -1
- package/dist/esm/index.js +73 -1
- package/dist/esm/types/enums.d.ts +41 -0
- package/dist/esm/types/enums.js +36 -0
- package/dist/esm/types/interfaces.d.ts +51 -1
- package/ios/NetworkInspectorModule.h +6 -0
- package/ios/NetworkInspectorModule.m +125 -0
- package/package.json +5 -2
- package/react-native-inapp-inspector.podspec +18 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
buildscript {
|
|
2
|
+
repositories {
|
|
3
|
+
google()
|
|
4
|
+
mavenCentral()
|
|
5
|
+
}
|
|
6
|
+
dependencies {
|
|
7
|
+
classpath 'com.android.tools.build:gradle:8.0.2'
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
apply plugin: 'com.android.library'
|
|
12
|
+
|
|
13
|
+
android {
|
|
14
|
+
compileSdkVersion 34
|
|
15
|
+
|
|
16
|
+
defaultConfig {
|
|
17
|
+
minSdkVersion 21
|
|
18
|
+
targetSdkVersion 34
|
|
19
|
+
versionCode 1
|
|
20
|
+
versionName "1.1.25"
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
lintOptions {
|
|
24
|
+
abortOnError false
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
repositories {
|
|
29
|
+
google()
|
|
30
|
+
mavenCentral()
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
dependencies {
|
|
34
|
+
//noinspection GradleDynamicVersion
|
|
35
|
+
implementation 'com.facebook.react:react-native:+'
|
|
36
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
package com.inappinspector;
|
|
2
|
+
|
|
3
|
+
import android.os.Handler;
|
|
4
|
+
import android.os.Looper;
|
|
5
|
+
import android.util.Log;
|
|
6
|
+
|
|
7
|
+
import androidx.annotation.NonNull;
|
|
8
|
+
import androidx.annotation.Nullable;
|
|
9
|
+
|
|
10
|
+
import com.facebook.react.bridge.Arguments;
|
|
11
|
+
import com.facebook.react.bridge.Promise;
|
|
12
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
13
|
+
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
14
|
+
import com.facebook.react.bridge.ReactMethod;
|
|
15
|
+
import com.facebook.react.bridge.WritableMap;
|
|
16
|
+
import com.facebook.react.modules.core.DeviceEventManagerModule;
|
|
17
|
+
|
|
18
|
+
import java.io.PrintWriter;
|
|
19
|
+
import java.io.StringWriter;
|
|
20
|
+
|
|
21
|
+
public class NetworkInspectorModule extends ReactContextBaseJavaModule {
|
|
22
|
+
private static final String MODULE_NAME = "NetworkInspectorModule";
|
|
23
|
+
private static final String TAG = "NetworkInspector";
|
|
24
|
+
private final ReactApplicationContext reactContext;
|
|
25
|
+
private Thread.UncaughtExceptionHandler defaultHandler;
|
|
26
|
+
private boolean isProtectionEnabled = false;
|
|
27
|
+
|
|
28
|
+
public NetworkInspectorModule(ReactApplicationContext reactContext) {
|
|
29
|
+
super(reactContext);
|
|
30
|
+
this.reactContext = reactContext;
|
|
31
|
+
setupNativeCrashProtection();
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
@NonNull
|
|
35
|
+
@Override
|
|
36
|
+
public String getName() {
|
|
37
|
+
return MODULE_NAME;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
private void setupNativeCrashProtection() {
|
|
41
|
+
if (isProtectionEnabled) return;
|
|
42
|
+
isProtectionEnabled = true;
|
|
43
|
+
|
|
44
|
+
try {
|
|
45
|
+
defaultHandler = Thread.getDefaultUncaughtExceptionHandler();
|
|
46
|
+
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
|
|
47
|
+
@Override
|
|
48
|
+
public void uncaughtException(@NonNull Thread thread, @NonNull Throwable throwable) {
|
|
49
|
+
try {
|
|
50
|
+
StringWriter sw = new StringWriter();
|
|
51
|
+
PrintWriter pw = new PrintWriter(sw);
|
|
52
|
+
throwable.printStackTrace(pw);
|
|
53
|
+
String stackTrace = sw.toString();
|
|
54
|
+
String message = throwable.getMessage() != null ? throwable.getMessage() : throwable.toString();
|
|
55
|
+
|
|
56
|
+
Log.e(TAG, "Intercepted Android Native Crash: " + message, throwable);
|
|
57
|
+
|
|
58
|
+
sendCrashEventToJS(message, stackTrace, thread.getName());
|
|
59
|
+
} catch (Exception e) {
|
|
60
|
+
Log.e(TAG, "Failed to dispatch native crash event", e);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Keep main looper processing to prevent instant process exit
|
|
64
|
+
if (Looper.myLooper() != null) {
|
|
65
|
+
while (true) {
|
|
66
|
+
try {
|
|
67
|
+
Looper.loop();
|
|
68
|
+
} catch (Throwable inner) {
|
|
69
|
+
Log.e(TAG, "Caught inner loop exception", inner);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
} catch (Exception e) {
|
|
76
|
+
Log.e(TAG, "Error installing uncaught exception handler", e);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
private void sendCrashEventToJS(String message, String stackTrace, String threadName) {
|
|
81
|
+
try {
|
|
82
|
+
if (reactContext != null && reactContext.hasActiveReactInstance()) {
|
|
83
|
+
WritableMap params = Arguments.createMap();
|
|
84
|
+
params.putString("platform", "android");
|
|
85
|
+
params.putString("message", message);
|
|
86
|
+
params.putString("stack", stackTrace);
|
|
87
|
+
params.putString("thread", threadName);
|
|
88
|
+
params.putDouble("timestamp", System.currentTimeMillis());
|
|
89
|
+
|
|
90
|
+
reactContext
|
|
91
|
+
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
|
|
92
|
+
.emit("onNativeCrash", params);
|
|
93
|
+
}
|
|
94
|
+
} catch (Exception e) {
|
|
95
|
+
Log.e(TAG, "Failed to emit onNativeCrash to JS", e);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@ReactMethod
|
|
100
|
+
public void enableNativeCrashProtection(Promise promise) {
|
|
101
|
+
setupNativeCrashProtection();
|
|
102
|
+
promise.resolve(true);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
@ReactMethod
|
|
106
|
+
public void addListener(String eventName) {
|
|
107
|
+
// Required for RN built-in Event Emitter
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
@ReactMethod
|
|
111
|
+
public void removeListeners(double count) {
|
|
112
|
+
// Required for RN built-in Event Emitter
|
|
113
|
+
}
|
|
114
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
package com.inappinspector;
|
|
2
|
+
|
|
3
|
+
import androidx.annotation.NonNull;
|
|
4
|
+
|
|
5
|
+
import com.facebook.react.ReactPackage;
|
|
6
|
+
import com.facebook.react.bridge.NativeModule;
|
|
7
|
+
import com.facebook.react.bridge.ReactApplicationContext;
|
|
8
|
+
import com.facebook.react.uimanager.ViewManager;
|
|
9
|
+
|
|
10
|
+
import java.util.ArrayList;
|
|
11
|
+
import java.util.Collections;
|
|
12
|
+
import java.util.List;
|
|
13
|
+
|
|
14
|
+
public class NetworkInspectorPackage implements ReactPackage {
|
|
15
|
+
@NonNull
|
|
16
|
+
@Override
|
|
17
|
+
public List<NativeModule> createNativeModules(@NonNull ReactApplicationContext reactContext) {
|
|
18
|
+
List<NativeModule> modules = new ArrayList<>();
|
|
19
|
+
modules.add(new NetworkInspectorModule(reactContext));
|
|
20
|
+
return modules;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
@NonNull
|
|
24
|
+
@Override
|
|
25
|
+
public List<ViewManager> createViewManagers(@NonNull ReactApplicationContext reactContext) {
|
|
26
|
+
return Collections.emptyList();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -6,6 +6,6 @@ export declare class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBo
|
|
|
6
6
|
componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
|
|
7
7
|
private handleReset;
|
|
8
8
|
private handleCopyTrace;
|
|
9
|
-
render():
|
|
9
|
+
render(): React.ReactNode;
|
|
10
10
|
}
|
|
11
11
|
export default ErrorBoundary;
|
|
@@ -1,45 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
3
|
exports.ErrorBoundary = void 0;
|
|
37
|
-
const react_1 =
|
|
4
|
+
const react_1 = require("react");
|
|
38
5
|
const react_native_1 = require("react-native");
|
|
39
6
|
const AppColors_1 = require("../styles/AppColors");
|
|
40
7
|
const AppFonts_1 = require("../styles/AppFonts");
|
|
41
8
|
const helpers_1 = require("../helpers");
|
|
42
|
-
const
|
|
9
|
+
const crashHandler_1 = require("../customHooks/crashHandler");
|
|
10
|
+
const enums_1 = require("../types/enums");
|
|
43
11
|
function parseStackTrace(stack) {
|
|
44
12
|
if (!stack)
|
|
45
13
|
return null;
|
|
@@ -104,119 +72,15 @@ ${error.stack}`;
|
|
|
104
72
|
return { hasError: true, error };
|
|
105
73
|
}
|
|
106
74
|
componentDidCatch(error, errorInfo) {
|
|
107
|
-
|
|
75
|
+
try {
|
|
76
|
+
const stack = error?.stack || errorInfo?.componentStack;
|
|
77
|
+
(0, crashHandler_1.handleInterceptedCrash)(error, stack, false, enums_1.CrashType.Render, errorInfo?.componentStack);
|
|
78
|
+
}
|
|
79
|
+
catch { }
|
|
108
80
|
}
|
|
109
81
|
render() {
|
|
110
82
|
if (this.state.hasError) {
|
|
111
|
-
|
|
112
|
-
if (isInline) {
|
|
113
|
-
return (<react_native_1.View style={styles.inlineContainer}>
|
|
114
|
-
<react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
|
|
115
|
-
<NetworkIcons_1.WarningTriangleIcon color={AppColors_1.AppColors.redErrorText} size={14}/>
|
|
116
|
-
<react_native_1.Text style={styles.inlineTitle}>Inspector Crash</react_native_1.Text>
|
|
117
|
-
</react_native_1.View>
|
|
118
|
-
<react_native_1.TouchableOpacity style={styles.inlineResetBtn} onPress={this.handleReset}>
|
|
119
|
-
<react_native_1.Text style={styles.inlineResetText}>Reload</react_native_1.Text>
|
|
120
|
-
</react_native_1.TouchableOpacity>
|
|
121
|
-
</react_native_1.View>);
|
|
122
|
-
}
|
|
123
|
-
const error = this.state.error;
|
|
124
|
-
const isNativeCrash = error ? (error.message.includes('Native') || error.message.includes('native') || error.message.includes('Swift') || error.message.includes('Java')) : false;
|
|
125
|
-
const parsed = error && error.stack ? parseStackTrace(error.stack) : null;
|
|
126
|
-
return (<react_native_1.View style={styles.container}>
|
|
127
|
-
<react_native_1.View style={styles.card}>
|
|
128
|
-
<react_native_1.View style={{ marginBottom: 12, alignItems: 'center' }}>
|
|
129
|
-
<NetworkIcons_1.WarningTriangleIcon color={AppColors_1.AppColors.amber500} size={44}/>
|
|
130
|
-
</react_native_1.View>
|
|
131
|
-
<react_native_1.Text style={styles.title}>Something went wrong</react_native_1.Text>
|
|
132
|
-
|
|
133
|
-
<react_native_1.View style={{
|
|
134
|
-
flexDirection: 'row',
|
|
135
|
-
alignItems: 'center',
|
|
136
|
-
backgroundColor: isNativeCrash ? `${AppColors_1.AppColors.errorColor}1A` : `${AppColors_1.AppColors.amber500}1A`,
|
|
137
|
-
paddingHorizontal: 10,
|
|
138
|
-
paddingVertical: 4,
|
|
139
|
-
borderRadius: 20,
|
|
140
|
-
marginBottom: 12,
|
|
141
|
-
gap: 4
|
|
142
|
-
}}>
|
|
143
|
-
<react_native_1.View style={{
|
|
144
|
-
width: 8,
|
|
145
|
-
height: 8,
|
|
146
|
-
borderRadius: 4,
|
|
147
|
-
backgroundColor: isNativeCrash ? AppColors_1.AppColors.errorColor : AppColors_1.AppColors.amber500,
|
|
148
|
-
}}/>
|
|
149
|
-
<react_native_1.Text style={{
|
|
150
|
-
fontSize: 10,
|
|
151
|
-
fontWeight: 'bold',
|
|
152
|
-
color: isNativeCrash ? AppColors_1.AppColors.errorColor : AppColors_1.AppColors.amber500,
|
|
153
|
-
fontFamily: AppFonts_1.AppFonts.interBold || 'System'
|
|
154
|
-
}}>
|
|
155
|
-
{isNativeCrash ? 'NATIVE CRASH' : 'JAVASCRIPT CRASH'}
|
|
156
|
-
</react_native_1.Text>
|
|
157
|
-
</react_native_1.View>
|
|
158
|
-
|
|
159
|
-
<react_native_1.Text style={styles.subtitle}>
|
|
160
|
-
The In-App Inspector or active view encountered an error. Traceback details are parsed below:
|
|
161
|
-
</react_native_1.Text>
|
|
162
|
-
|
|
163
|
-
{parsed && (<react_native_1.View style={{
|
|
164
|
-
backgroundColor: AppColors_1.AppColors.slate100,
|
|
165
|
-
borderRadius: 8,
|
|
166
|
-
padding: 10,
|
|
167
|
-
width: '100%',
|
|
168
|
-
marginBottom: 10,
|
|
169
|
-
borderWidth: 1,
|
|
170
|
-
borderColor: AppColors_1.AppColors.slate200,
|
|
171
|
-
gap: 4
|
|
172
|
-
}}>
|
|
173
|
-
<react_native_1.Text style={{ fontSize: 11, color: AppColors_1.AppColors.slate600, fontFamily: AppFonts_1.AppFonts.interMedium }} numberOfLines={1}>
|
|
174
|
-
<react_native_1.Text style={{ fontWeight: 'bold' }}>Method:</react_native_1.Text> {parsed.method}
|
|
175
|
-
</react_native_1.Text>
|
|
176
|
-
<react_native_1.Text style={{ fontSize: 11, color: AppColors_1.AppColors.slate600, fontFamily: AppFonts_1.AppFonts.interMedium }} numberOfLines={1}>
|
|
177
|
-
<react_native_1.Text style={{ fontWeight: 'bold' }}>File:</react_native_1.Text> {parsed.file}
|
|
178
|
-
</react_native_1.Text>
|
|
179
|
-
<react_native_1.Text style={{ fontSize: 11, color: AppColors_1.AppColors.slate600, fontFamily: AppFonts_1.AppFonts.interMedium }}>
|
|
180
|
-
<react_native_1.Text style={{ fontWeight: 'bold' }}>Line:</react_native_1.Text> {parsed.line} <react_native_1.Text style={{ fontWeight: 'bold' }}>Col:</react_native_1.Text> {parsed.column}
|
|
181
|
-
</react_native_1.Text>
|
|
182
|
-
</react_native_1.View>)}
|
|
183
|
-
|
|
184
|
-
{error && (<react_native_1.ScrollView style={styles.scroll} contentContainerStyle={styles.scrollContent}>
|
|
185
|
-
<react_native_1.Text style={styles.code}>
|
|
186
|
-
{error.message}
|
|
187
|
-
{'\n\n'}
|
|
188
|
-
{error.stack}
|
|
189
|
-
</react_native_1.Text>
|
|
190
|
-
</react_native_1.ScrollView>)}
|
|
191
|
-
|
|
192
|
-
<react_native_1.View style={{ width: '100%', gap: 8, marginBottom: 12 }}>
|
|
193
|
-
<react_native_1.TouchableOpacity style={{
|
|
194
|
-
backgroundColor: AppColors_1.AppColors.slate900,
|
|
195
|
-
height: 38,
|
|
196
|
-
borderRadius: 8,
|
|
197
|
-
justifyContent: 'center',
|
|
198
|
-
alignItems: 'center',
|
|
199
|
-
flexDirection: 'row',
|
|
200
|
-
gap: 6
|
|
201
|
-
}} onPress={this.handleCopyTrace}>
|
|
202
|
-
<NetworkIcons_1.CopyIcon color={AppColors_1.AppColors.white} size={14}/>
|
|
203
|
-
<react_native_1.Text style={{ color: AppColors_1.AppColors.white, fontSize: 12, fontWeight: 'bold', fontFamily: AppFonts_1.AppFonts.interBold || 'System' }}>
|
|
204
|
-
Copy Crash Traceback
|
|
205
|
-
</react_native_1.Text>
|
|
206
|
-
</react_native_1.TouchableOpacity>
|
|
207
|
-
</react_native_1.View>
|
|
208
|
-
|
|
209
|
-
<react_native_1.View style={styles.btnRow}>
|
|
210
|
-
<react_native_1.TouchableOpacity style={styles.resetBtn} onPress={this.handleReset}>
|
|
211
|
-
<react_native_1.Text style={styles.resetBtnText}>Retry / Reload</react_native_1.Text>
|
|
212
|
-
</react_native_1.TouchableOpacity>
|
|
213
|
-
|
|
214
|
-
{this.props.onClose && (<react_native_1.TouchableOpacity style={styles.closeBtn} onPress={this.props.onClose}>
|
|
215
|
-
<react_native_1.Text style={styles.closeBtnText}>Close Inspector</react_native_1.Text>
|
|
216
|
-
</react_native_1.TouchableOpacity>)}
|
|
217
|
-
</react_native_1.View>
|
|
218
|
-
</react_native_1.View>
|
|
219
|
-
</react_native_1.View>);
|
|
83
|
+
return null;
|
|
220
84
|
}
|
|
221
85
|
return this.props.children;
|
|
222
86
|
}
|