react-native-debug-toolkit 3.2.2 → 3.2.3
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/reactnativedebugtoolkit/DebugToolkitDevConnectModule.java +88 -4
- package/ios/DebugToolkitDevConnect.mm +16 -2
- package/lib/commonjs/features/devConnect/DevConnectQrScanner.js +97 -63
- package/lib/commonjs/features/devConnect/DevConnectQrScanner.js.map +1 -1
- package/lib/commonjs/features/devConnect/nativeDevConnect.js +0 -2
- package/lib/commonjs/features/devConnect/nativeDevConnect.js.map +1 -1
- package/lib/module/features/devConnect/DevConnectQrScanner.js +98 -64
- package/lib/module/features/devConnect/DevConnectQrScanner.js.map +1 -1
- package/lib/module/features/devConnect/nativeDevConnect.js +1 -3
- package/lib/module/features/devConnect/nativeDevConnect.js.map +1 -1
- package/lib/typescript/src/features/devConnect/DevConnectQrScanner.d.ts.map +1 -1
- package/lib/typescript/src/features/devConnect/nativeDevConnect.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/features/devConnect/DevConnectQrScanner.tsx +81 -51
- package/src/features/devConnect/nativeDevConnect.ts +1 -3
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
package com.reactnativedebugtoolkit;
|
|
2
2
|
|
|
3
|
+
import android.content.Context;
|
|
3
4
|
import android.content.SharedPreferences;
|
|
4
5
|
import android.preference.PreferenceManager;
|
|
5
6
|
|
|
@@ -11,11 +12,16 @@ import com.facebook.react.bridge.Promise;
|
|
|
11
12
|
import com.facebook.react.bridge.ReactApplicationContext;
|
|
12
13
|
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
|
13
14
|
import com.facebook.react.bridge.ReactMethod;
|
|
15
|
+
import com.facebook.react.bridge.UiThreadUtil;
|
|
14
16
|
import com.facebook.react.bridge.WritableMap;
|
|
15
17
|
|
|
18
|
+
import java.lang.reflect.Method;
|
|
19
|
+
|
|
16
20
|
public class DebugToolkitDevConnectModule extends ReactContextBaseJavaModule {
|
|
17
21
|
private static final String MODULE_NAME = "DebugToolkitDevConnect";
|
|
18
22
|
private static final String DEBUG_SERVER_HOST_KEY = "debug_http_host";
|
|
23
|
+
private static final String APPLY_RELOAD_REASON = "DebugToolkit DevConnect Metro host changed";
|
|
24
|
+
private static final String RESET_RELOAD_REASON = "DebugToolkit DevConnect Metro host reset";
|
|
19
25
|
|
|
20
26
|
public DebugToolkitDevConnectModule(ReactApplicationContext reactContext) {
|
|
21
27
|
super(reactContext);
|
|
@@ -31,6 +37,74 @@ public class DebugToolkitDevConnectModule extends ReactContextBaseJavaModule {
|
|
|
31
37
|
return PreferenceManager.getDefaultSharedPreferences(getReactApplicationContext());
|
|
32
38
|
}
|
|
33
39
|
|
|
40
|
+
@Nullable
|
|
41
|
+
private Object callGetter(Object target, String methodName) {
|
|
42
|
+
try {
|
|
43
|
+
Method method = target.getClass().getMethod(methodName);
|
|
44
|
+
return method.invoke(target);
|
|
45
|
+
} catch (Exception ignored) {
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
private boolean triggerDevSupportReload(@Nullable Object devSupportManager) throws Exception {
|
|
51
|
+
if (devSupportManager == null) {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
Object enabled = callGetter(devSupportManager, "getDevSupportEnabled");
|
|
56
|
+
if (enabled instanceof Boolean && !((Boolean) enabled)) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
Method reloadMethod = devSupportManager.getClass().getMethod("handleReloadJS");
|
|
61
|
+
reloadMethod.invoke(devSupportManager);
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
private boolean reloadFromReactHost(Context applicationContext, String reason) throws Exception {
|
|
66
|
+
Object reactHost = callGetter(applicationContext, "getReactHost");
|
|
67
|
+
if (reactHost == null) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (triggerDevSupportReload(callGetter(reactHost, "getDevSupportManager"))) {
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
Method reloadMethod = reactHost.getClass().getMethod("reload", String.class);
|
|
76
|
+
reloadMethod.invoke(reactHost, reason);
|
|
77
|
+
return true;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
private boolean reloadFromReactNativeHost(Context applicationContext) throws Exception {
|
|
81
|
+
Object reactNativeHost = callGetter(applicationContext, "getReactNativeHost");
|
|
82
|
+
Object instanceManager = reactNativeHost == null
|
|
83
|
+
? null
|
|
84
|
+
: callGetter(reactNativeHost, "getReactInstanceManager");
|
|
85
|
+
Object devSupportManager = instanceManager == null
|
|
86
|
+
? null
|
|
87
|
+
: callGetter(instanceManager, "getDevSupportManager");
|
|
88
|
+
return triggerDevSupportReload(devSupportManager);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
private void resolveAfterReload(String reason, @Nullable WritableMap result, Promise promise) {
|
|
92
|
+
UiThreadUtil.runOnUiThread(() -> {
|
|
93
|
+
try {
|
|
94
|
+
Context applicationContext = getReactApplicationContext().getApplicationContext();
|
|
95
|
+
boolean reloaded = reloadFromReactHost(applicationContext, reason)
|
|
96
|
+
|| reloadFromReactNativeHost(applicationContext);
|
|
97
|
+
if (!reloaded) {
|
|
98
|
+
promise.reject("reload_unavailable", "Unable to trigger React Native reload after updating Metro host.");
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
promise.resolve(result);
|
|
102
|
+
} catch (Exception error) {
|
|
103
|
+
promise.reject("reload_failed", "Unable to trigger React Native reload after updating Metro host.", error);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
|
|
34
108
|
@ReactMethod
|
|
35
109
|
public void getMetroHost(Promise promise) {
|
|
36
110
|
@Nullable String host = getPreferences().getString(DEBUG_SERVER_HOST_KEY, null);
|
|
@@ -44,16 +118,26 @@ public class DebugToolkitDevConnectModule extends ReactContextBaseJavaModule {
|
|
|
44
118
|
return;
|
|
45
119
|
}
|
|
46
120
|
|
|
47
|
-
getPreferences().edit().putString(DEBUG_SERVER_HOST_KEY, hostPort).
|
|
121
|
+
boolean stored = getPreferences().edit().putString(DEBUG_SERVER_HOST_KEY, hostPort).commit();
|
|
122
|
+
if (!stored) {
|
|
123
|
+
promise.reject("storage_failed", "Unable to persist Metro host.");
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
|
|
48
127
|
WritableMap result = Arguments.createMap();
|
|
49
128
|
result.putString("hostPort", hostPort);
|
|
50
|
-
|
|
129
|
+
resolveAfterReload(APPLY_RELOAD_REASON, result, promise);
|
|
51
130
|
}
|
|
52
131
|
|
|
53
132
|
@ReactMethod
|
|
54
133
|
public void resetMetroHost(Promise promise) {
|
|
55
|
-
getPreferences().edit().remove(DEBUG_SERVER_HOST_KEY).
|
|
56
|
-
|
|
134
|
+
boolean stored = getPreferences().edit().remove(DEBUG_SERVER_HOST_KEY).commit();
|
|
135
|
+
if (!stored) {
|
|
136
|
+
promise.reject("storage_failed", "Unable to reset Metro host.");
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
resolveAfterReload(RESET_RELOAD_REASON, null, promise);
|
|
57
141
|
}
|
|
58
142
|
|
|
59
143
|
@ReactMethod
|
|
@@ -1,8 +1,22 @@
|
|
|
1
1
|
#import <Foundation/Foundation.h>
|
|
2
2
|
#import <React/RCTBridgeModule.h>
|
|
3
3
|
#import <React/RCTBundleURLProvider.h>
|
|
4
|
+
#import <React/RCTReloadCommand.h>
|
|
4
5
|
|
|
5
6
|
static NSString *const DebugToolkitRCTJsLocationKey = @"RCT_jsLocation";
|
|
7
|
+
static NSString *const DebugToolkitBundleRoot = @"index";
|
|
8
|
+
|
|
9
|
+
static void DebugToolkitResolveAfterReload(NSString *reason, id result, RCTPromiseResolveBlock resolve)
|
|
10
|
+
{
|
|
11
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
12
|
+
NSURL *bundleURL = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:DebugToolkitBundleRoot];
|
|
13
|
+
if (bundleURL) {
|
|
14
|
+
RCTReloadCommandSetBundleURL(bundleURL);
|
|
15
|
+
}
|
|
16
|
+
RCTTriggerReloadCommandListeners(reason);
|
|
17
|
+
resolve(result ?: [NSNull null]);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
6
20
|
|
|
7
21
|
@interface DebugToolkitDevConnect : NSObject <RCTBridgeModule>
|
|
8
22
|
@end
|
|
@@ -33,7 +47,7 @@ RCT_EXPORT_METHOD(applyMetroHost:(NSString *)hostPort
|
|
|
33
47
|
}
|
|
34
48
|
|
|
35
49
|
[RCTBundleURLProvider sharedSettings].jsLocation = hostPort;
|
|
36
|
-
|
|
50
|
+
DebugToolkitResolveAfterReload(@"DebugToolkit DevConnect Metro host changed", @{ @"hostPort" : hostPort }, resolve);
|
|
37
51
|
}
|
|
38
52
|
|
|
39
53
|
RCT_EXPORT_METHOD(resetMetroHost:(RCTPromiseResolveBlock)resolve
|
|
@@ -43,7 +57,7 @@ RCT_EXPORT_METHOD(resetMetroHost:(RCTPromiseResolveBlock)resolve
|
|
|
43
57
|
[defaults removeObjectForKey:DebugToolkitRCTJsLocationKey];
|
|
44
58
|
[defaults synchronize];
|
|
45
59
|
[[NSNotificationCenter defaultCenter] postNotificationName:RCTBundleURLProviderUpdatedNotification object:nil];
|
|
46
|
-
|
|
60
|
+
DebugToolkitResolveAfterReload(@"DebugToolkit DevConnect Metro host reset", [NSNull null], resolve);
|
|
47
61
|
}
|
|
48
62
|
|
|
49
63
|
RCT_EXPORT_METHOD(getPreference:(NSString *)key
|
|
@@ -87,59 +87,65 @@ function DevConnectQrScanner({
|
|
|
87
87
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Modal, {
|
|
88
88
|
visible: visible,
|
|
89
89
|
animationType: "slide",
|
|
90
|
+
presentationStyle: "fullScreen",
|
|
90
91
|
onRequestClose: onClose,
|
|
91
92
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
92
93
|
style: styles.container,
|
|
93
|
-
children: [
|
|
94
|
-
|
|
95
|
-
children:
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
style: styles.
|
|
115
|
-
children:
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
94
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
95
|
+
style: styles.previewLayer,
|
|
96
|
+
children: [!cameraFailed && /*#__PURE__*/(0, _jsxRuntime.jsx)(CameraErrorBoundary, {
|
|
97
|
+
onCameraError: handleCameraError,
|
|
98
|
+
children: scanner.kind === 'camera-kit' && scanner.CameraKit ? /*#__PURE__*/(0, _jsxRuntime.jsx)(scanner.CameraKit.Camera, {
|
|
99
|
+
style: styles.camera,
|
|
100
|
+
cameraType: scanner.CameraKit.CameraType?.Back,
|
|
101
|
+
scanBarcode: true,
|
|
102
|
+
onReadCode: handleCameraKitRead,
|
|
103
|
+
showFrame: true,
|
|
104
|
+
laserColor: _colors.Colors.primary,
|
|
105
|
+
frameColor: _colors.Colors.primary,
|
|
106
|
+
allowedBarcodeTypes: ['qr']
|
|
107
|
+
}) : scanner.kind === 'expo-camera' && scanner.ExpoCamera ? /*#__PURE__*/(0, _jsxRuntime.jsx)(scanner.ExpoCamera.Camera, {
|
|
108
|
+
style: styles.camera,
|
|
109
|
+
onBarCodeScanned: handleExpoScanned,
|
|
110
|
+
barCodeScannerSettings: {
|
|
111
|
+
barCodeTypes: ['qr']
|
|
112
|
+
}
|
|
113
|
+
}) : null
|
|
114
|
+
}), cameraFailed && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
115
|
+
style: styles.cameraFallback,
|
|
116
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
117
|
+
style: styles.cameraFallbackText,
|
|
118
|
+
children: "Camera unavailable."
|
|
119
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
120
|
+
style: styles.cameraFallbackHint,
|
|
121
|
+
children: "Please enter computer IP manually."
|
|
122
|
+
})]
|
|
119
123
|
})]
|
|
120
124
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
121
|
-
style: styles.
|
|
122
|
-
children: [
|
|
123
|
-
style: styles.
|
|
124
|
-
children:
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
125
|
+
style: styles.topBar,
|
|
126
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
127
|
+
style: styles.titleGroup,
|
|
128
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
129
|
+
style: styles.title,
|
|
130
|
+
children: "Scan Metro QR"
|
|
131
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
132
|
+
style: styles.subtitle,
|
|
133
|
+
children: "Expo or Metro URL"
|
|
134
|
+
})]
|
|
128
135
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
129
136
|
style: styles.closeButton,
|
|
130
137
|
onPress: onClose,
|
|
131
|
-
activeOpacity: 0.
|
|
138
|
+
activeOpacity: 0.75,
|
|
132
139
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
133
140
|
style: styles.closeButtonText,
|
|
134
141
|
children: "Close"
|
|
135
142
|
})
|
|
136
143
|
})]
|
|
137
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.
|
|
138
|
-
style: styles.
|
|
139
|
-
onPress: onClose,
|
|
144
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
145
|
+
style: [styles.statusPill, error && styles.statusPillError],
|
|
140
146
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
141
|
-
style: styles.
|
|
142
|
-
children:
|
|
147
|
+
style: [styles.statusText, error && styles.statusTextError],
|
|
148
|
+
children: error ?? 'Point the camera at exp:// or http:// Metro URL.'
|
|
143
149
|
})
|
|
144
150
|
})]
|
|
145
151
|
})
|
|
@@ -150,11 +156,14 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
150
156
|
flex: 1,
|
|
151
157
|
backgroundColor: '#000'
|
|
152
158
|
},
|
|
159
|
+
previewLayer: {
|
|
160
|
+
..._reactNative.StyleSheet.absoluteFillObject
|
|
161
|
+
},
|
|
153
162
|
camera: {
|
|
154
|
-
|
|
163
|
+
..._reactNative.StyleSheet.absoluteFillObject
|
|
155
164
|
},
|
|
156
165
|
cameraFallback: {
|
|
157
|
-
|
|
166
|
+
..._reactNative.StyleSheet.absoluteFillObject,
|
|
158
167
|
justifyContent: 'center',
|
|
159
168
|
alignItems: 'center',
|
|
160
169
|
padding: 24
|
|
@@ -170,45 +179,70 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
170
179
|
color: 'rgba(255,255,255,0.6)',
|
|
171
180
|
textAlign: 'center'
|
|
172
181
|
},
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
182
|
+
topBar: {
|
|
183
|
+
position: 'absolute',
|
|
184
|
+
top: 44,
|
|
185
|
+
left: 16,
|
|
186
|
+
right: 16,
|
|
187
|
+
flexDirection: 'row',
|
|
188
|
+
alignItems: 'center',
|
|
189
|
+
justifyContent: 'space-between',
|
|
190
|
+
paddingLeft: 14,
|
|
191
|
+
paddingRight: 8,
|
|
192
|
+
paddingVertical: 8,
|
|
193
|
+
borderRadius: 12,
|
|
194
|
+
backgroundColor: 'rgba(0,0,0,0.62)'
|
|
176
195
|
},
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
marginBottom: 12
|
|
196
|
+
titleGroup: {
|
|
197
|
+
flex: 1,
|
|
198
|
+
paddingRight: 10
|
|
181
199
|
},
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
200
|
+
title: {
|
|
201
|
+
color: '#fff',
|
|
202
|
+
fontSize: 15,
|
|
203
|
+
fontWeight: '700'
|
|
204
|
+
},
|
|
205
|
+
subtitle: {
|
|
206
|
+
color: 'rgba(255,255,255,0.68)',
|
|
207
|
+
fontSize: 11,
|
|
208
|
+
marginTop: 2
|
|
186
209
|
},
|
|
187
210
|
closeButton: {
|
|
188
211
|
alignItems: 'center',
|
|
189
212
|
justifyContent: 'center',
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
213
|
+
paddingHorizontal: 12,
|
|
214
|
+
paddingVertical: 8,
|
|
215
|
+
borderRadius: 8,
|
|
216
|
+
backgroundColor: 'rgba(255,255,255,0.14)'
|
|
193
217
|
},
|
|
194
218
|
closeButtonText: {
|
|
195
219
|
color: '#fff',
|
|
196
220
|
fontSize: 14,
|
|
197
221
|
fontWeight: '600'
|
|
198
222
|
},
|
|
199
|
-
|
|
223
|
+
statusPill: {
|
|
200
224
|
position: 'absolute',
|
|
201
|
-
|
|
225
|
+
left: 16,
|
|
202
226
|
right: 16,
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
227
|
+
bottom: 30,
|
|
228
|
+
paddingHorizontal: 14,
|
|
229
|
+
paddingVertical: 11,
|
|
230
|
+
borderRadius: 12,
|
|
231
|
+
backgroundColor: 'rgba(0,0,0,0.62)'
|
|
232
|
+
},
|
|
233
|
+
statusPillError: {
|
|
234
|
+
backgroundColor: `${_colors.Colors.error}22`,
|
|
235
|
+
borderWidth: 1,
|
|
236
|
+
borderColor: `${_colors.Colors.error}66`
|
|
207
237
|
},
|
|
208
|
-
|
|
238
|
+
statusText: {
|
|
209
239
|
color: '#fff',
|
|
210
240
|
fontSize: 13,
|
|
211
|
-
|
|
241
|
+
textAlign: 'center',
|
|
242
|
+
lineHeight: 18
|
|
243
|
+
},
|
|
244
|
+
statusTextError: {
|
|
245
|
+
color: '#fff'
|
|
212
246
|
}
|
|
213
247
|
});
|
|
214
248
|
//# sourceMappingURL=DevConnectQrScanner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_colors","_cameraKit","_devConnectUtils","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","CameraErrorBoundary","Component","state","hasError","getDerivedStateFromError","componentDidCatch","error","console","warn","message","props","onCameraError","render","children","DevConnectQrScanner","visible","onClose","onScanTarget","scannedRef","useRef","setError","useState","cameraFailed","setCameraFailed","scanner","getScannerModule","useEffect","current","handleScanned","useCallback","rawValue","parsed","parseMetroQrPayload","computerHost","metroPort","handleCameraKitRead","event","nativeEvent","codeStringValue","handleExpoScanned","result","value","handleCameraError","_msg","jsx","Modal","animationType","onRequestClose","jsxs","View","style","styles","container","kind","CameraKit","Camera","camera","cameraType","CameraType","Back","scanBarcode","onReadCode","showFrame","laserColor","Colors","primary","frameColor","allowedBarcodeTypes","ExpoCamera","onBarCodeScanned","barCodeScannerSettings","barCodeTypes","cameraFallback","Text","cameraFallbackText","cameraFallbackHint","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_colors","_cameraKit","_devConnectUtils","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","CameraErrorBoundary","Component","state","hasError","getDerivedStateFromError","componentDidCatch","error","console","warn","message","props","onCameraError","render","children","DevConnectQrScanner","visible","onClose","onScanTarget","scannedRef","useRef","setError","useState","cameraFailed","setCameraFailed","scanner","getScannerModule","useEffect","current","handleScanned","useCallback","rawValue","parsed","parseMetroQrPayload","computerHost","metroPort","handleCameraKitRead","event","nativeEvent","codeStringValue","handleExpoScanned","result","value","handleCameraError","_msg","jsx","Modal","animationType","presentationStyle","onRequestClose","jsxs","View","style","styles","container","previewLayer","kind","CameraKit","Camera","camera","cameraType","CameraType","Back","scanBarcode","onReadCode","showFrame","laserColor","Colors","primary","frameColor","allowedBarcodeTypes","ExpoCamera","onBarCodeScanned","barCodeScannerSettings","barCodeTypes","cameraFallback","Text","cameraFallbackText","cameraFallbackHint","topBar","titleGroup","title","subtitle","TouchableOpacity","closeButton","onPress","activeOpacity","closeButtonText","statusPill","statusPillError","statusText","statusTextError","StyleSheet","create","flex","backgroundColor","absoluteFillObject","justifyContent","alignItems","padding","fontSize","color","fontWeight","marginBottom","textAlign","position","top","left","right","flexDirection","paddingLeft","paddingRight","paddingVertical","borderRadius","marginTop","paddingHorizontal","bottom","borderWidth","borderColor","lineHeight"],"sourceRoot":"../../../../src","sources":["features/devConnect/DevConnectQrScanner.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -72,7 +72,6 @@ async function applyMetroBundle(host, port) {
|
|
|
72
72
|
}
|
|
73
73
|
try {
|
|
74
74
|
const result = await nativeModule.applyMetroHost(target.hostPort);
|
|
75
|
-
_reactNative.DevSettings.reload?.('DebugToolkit DevConnect Metro host changed');
|
|
76
75
|
return {
|
|
77
76
|
ok: true,
|
|
78
77
|
hostPort: result && typeof result.hostPort === 'string' ? result.hostPort : target.hostPort
|
|
@@ -95,7 +94,6 @@ async function resetMetroBundle() {
|
|
|
95
94
|
}
|
|
96
95
|
try {
|
|
97
96
|
await nativeModule.resetMetroHost();
|
|
98
|
-
_reactNative.DevSettings.reload?.('DebugToolkit DevConnect Metro host reset');
|
|
99
97
|
return {
|
|
100
98
|
ok: true
|
|
101
99
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_devConnectUtils","getNativeModule","nativeModule","NativeModules","DebugToolkitDevConnect","applyMetroHost","resetMetroHost","isNativeDevConnectAvailable","checkMetroStatus","statusUrl","fetchImpl","globalThis","fetch","ok","reason","error","response","method","body","text","includes","Error","message","String","applyMetroBundle","host","port","target","buildMetroTarget","statusError","result","hostPort","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_devConnectUtils","getNativeModule","nativeModule","NativeModules","DebugToolkitDevConnect","applyMetroHost","resetMetroHost","isNativeDevConnectAvailable","checkMetroStatus","statusUrl","fetchImpl","globalThis","fetch","ok","reason","error","response","method","body","text","includes","Error","message","String","applyMetroBundle","host","port","target","buildMetroTarget","statusError","result","hostPort","resetMetroBundle"],"sourceRoot":"../../../../src","sources":["features/devConnect/nativeDevConnect.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import React, { Component, useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
-
import { Modal,
|
|
4
|
+
import { Modal, StyleSheet, Text, TouchableOpacity, View } from 'react-native';
|
|
5
5
|
import { Colors } from '../../ui/theme/colors';
|
|
6
6
|
import { getScannerModule } from './cameraKit';
|
|
7
7
|
import { parseMetroQrPayload } from './devConnectUtils';
|
|
@@ -82,59 +82,65 @@ export function DevConnectQrScanner({
|
|
|
82
82
|
return /*#__PURE__*/_jsx(Modal, {
|
|
83
83
|
visible: visible,
|
|
84
84
|
animationType: "slide",
|
|
85
|
+
presentationStyle: "fullScreen",
|
|
85
86
|
onRequestClose: onClose,
|
|
86
87
|
children: /*#__PURE__*/_jsxs(View, {
|
|
87
88
|
style: styles.container,
|
|
88
|
-
children: [
|
|
89
|
-
|
|
90
|
-
children:
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
style: styles.
|
|
110
|
-
children:
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
89
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
90
|
+
style: styles.previewLayer,
|
|
91
|
+
children: [!cameraFailed && /*#__PURE__*/_jsx(CameraErrorBoundary, {
|
|
92
|
+
onCameraError: handleCameraError,
|
|
93
|
+
children: scanner.kind === 'camera-kit' && scanner.CameraKit ? /*#__PURE__*/_jsx(scanner.CameraKit.Camera, {
|
|
94
|
+
style: styles.camera,
|
|
95
|
+
cameraType: scanner.CameraKit.CameraType?.Back,
|
|
96
|
+
scanBarcode: true,
|
|
97
|
+
onReadCode: handleCameraKitRead,
|
|
98
|
+
showFrame: true,
|
|
99
|
+
laserColor: Colors.primary,
|
|
100
|
+
frameColor: Colors.primary,
|
|
101
|
+
allowedBarcodeTypes: ['qr']
|
|
102
|
+
}) : scanner.kind === 'expo-camera' && scanner.ExpoCamera ? /*#__PURE__*/_jsx(scanner.ExpoCamera.Camera, {
|
|
103
|
+
style: styles.camera,
|
|
104
|
+
onBarCodeScanned: handleExpoScanned,
|
|
105
|
+
barCodeScannerSettings: {
|
|
106
|
+
barCodeTypes: ['qr']
|
|
107
|
+
}
|
|
108
|
+
}) : null
|
|
109
|
+
}), cameraFailed && /*#__PURE__*/_jsxs(View, {
|
|
110
|
+
style: styles.cameraFallback,
|
|
111
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
112
|
+
style: styles.cameraFallbackText,
|
|
113
|
+
children: "Camera unavailable."
|
|
114
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
115
|
+
style: styles.cameraFallbackHint,
|
|
116
|
+
children: "Please enter computer IP manually."
|
|
117
|
+
})]
|
|
114
118
|
})]
|
|
115
119
|
}), /*#__PURE__*/_jsxs(View, {
|
|
116
|
-
style: styles.
|
|
117
|
-
children: [
|
|
118
|
-
style: styles.
|
|
119
|
-
children:
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
120
|
+
style: styles.topBar,
|
|
121
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
122
|
+
style: styles.titleGroup,
|
|
123
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
124
|
+
style: styles.title,
|
|
125
|
+
children: "Scan Metro QR"
|
|
126
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
127
|
+
style: styles.subtitle,
|
|
128
|
+
children: "Expo or Metro URL"
|
|
129
|
+
})]
|
|
123
130
|
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
124
131
|
style: styles.closeButton,
|
|
125
132
|
onPress: onClose,
|
|
126
|
-
activeOpacity: 0.
|
|
133
|
+
activeOpacity: 0.75,
|
|
127
134
|
children: /*#__PURE__*/_jsx(Text, {
|
|
128
135
|
style: styles.closeButtonText,
|
|
129
136
|
children: "Close"
|
|
130
137
|
})
|
|
131
138
|
})]
|
|
132
|
-
}), /*#__PURE__*/_jsx(
|
|
133
|
-
style: styles.
|
|
134
|
-
onPress: onClose,
|
|
139
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
140
|
+
style: [styles.statusPill, error && styles.statusPillError],
|
|
135
141
|
children: /*#__PURE__*/_jsx(Text, {
|
|
136
|
-
style: styles.
|
|
137
|
-
children:
|
|
142
|
+
style: [styles.statusText, error && styles.statusTextError],
|
|
143
|
+
children: error ?? 'Point the camera at exp:// or http:// Metro URL.'
|
|
138
144
|
})
|
|
139
145
|
})]
|
|
140
146
|
})
|
|
@@ -145,11 +151,14 @@ const styles = StyleSheet.create({
|
|
|
145
151
|
flex: 1,
|
|
146
152
|
backgroundColor: '#000'
|
|
147
153
|
},
|
|
154
|
+
previewLayer: {
|
|
155
|
+
...StyleSheet.absoluteFillObject
|
|
156
|
+
},
|
|
148
157
|
camera: {
|
|
149
|
-
|
|
158
|
+
...StyleSheet.absoluteFillObject
|
|
150
159
|
},
|
|
151
160
|
cameraFallback: {
|
|
152
|
-
|
|
161
|
+
...StyleSheet.absoluteFillObject,
|
|
153
162
|
justifyContent: 'center',
|
|
154
163
|
alignItems: 'center',
|
|
155
164
|
padding: 24
|
|
@@ -165,45 +174,70 @@ const styles = StyleSheet.create({
|
|
|
165
174
|
color: 'rgba(255,255,255,0.6)',
|
|
166
175
|
textAlign: 'center'
|
|
167
176
|
},
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
177
|
+
topBar: {
|
|
178
|
+
position: 'absolute',
|
|
179
|
+
top: 44,
|
|
180
|
+
left: 16,
|
|
181
|
+
right: 16,
|
|
182
|
+
flexDirection: 'row',
|
|
183
|
+
alignItems: 'center',
|
|
184
|
+
justifyContent: 'space-between',
|
|
185
|
+
paddingLeft: 14,
|
|
186
|
+
paddingRight: 8,
|
|
187
|
+
paddingVertical: 8,
|
|
188
|
+
borderRadius: 12,
|
|
189
|
+
backgroundColor: 'rgba(0,0,0,0.62)'
|
|
171
190
|
},
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
marginBottom: 12
|
|
191
|
+
titleGroup: {
|
|
192
|
+
flex: 1,
|
|
193
|
+
paddingRight: 10
|
|
176
194
|
},
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
195
|
+
title: {
|
|
196
|
+
color: '#fff',
|
|
197
|
+
fontSize: 15,
|
|
198
|
+
fontWeight: '700'
|
|
199
|
+
},
|
|
200
|
+
subtitle: {
|
|
201
|
+
color: 'rgba(255,255,255,0.68)',
|
|
202
|
+
fontSize: 11,
|
|
203
|
+
marginTop: 2
|
|
181
204
|
},
|
|
182
205
|
closeButton: {
|
|
183
206
|
alignItems: 'center',
|
|
184
207
|
justifyContent: 'center',
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
208
|
+
paddingHorizontal: 12,
|
|
209
|
+
paddingVertical: 8,
|
|
210
|
+
borderRadius: 8,
|
|
211
|
+
backgroundColor: 'rgba(255,255,255,0.14)'
|
|
188
212
|
},
|
|
189
213
|
closeButtonText: {
|
|
190
214
|
color: '#fff',
|
|
191
215
|
fontSize: 14,
|
|
192
216
|
fontWeight: '600'
|
|
193
217
|
},
|
|
194
|
-
|
|
218
|
+
statusPill: {
|
|
195
219
|
position: 'absolute',
|
|
196
|
-
|
|
220
|
+
left: 16,
|
|
197
221
|
right: 16,
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
222
|
+
bottom: 30,
|
|
223
|
+
paddingHorizontal: 14,
|
|
224
|
+
paddingVertical: 11,
|
|
225
|
+
borderRadius: 12,
|
|
226
|
+
backgroundColor: 'rgba(0,0,0,0.62)'
|
|
227
|
+
},
|
|
228
|
+
statusPillError: {
|
|
229
|
+
backgroundColor: `${Colors.error}22`,
|
|
230
|
+
borderWidth: 1,
|
|
231
|
+
borderColor: `${Colors.error}66`
|
|
202
232
|
},
|
|
203
|
-
|
|
233
|
+
statusText: {
|
|
204
234
|
color: '#fff',
|
|
205
235
|
fontSize: 13,
|
|
206
|
-
|
|
236
|
+
textAlign: 'center',
|
|
237
|
+
lineHeight: 18
|
|
238
|
+
},
|
|
239
|
+
statusTextError: {
|
|
240
|
+
color: '#fff'
|
|
207
241
|
}
|
|
208
242
|
});
|
|
209
243
|
//# sourceMappingURL=DevConnectQrScanner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Component","useCallback","useEffect","useRef","useState","Modal","
|
|
1
|
+
{"version":3,"names":["React","Component","useCallback","useEffect","useRef","useState","Modal","StyleSheet","Text","TouchableOpacity","View","Colors","getScannerModule","parseMetroQrPayload","jsx","_jsx","jsxs","_jsxs","CameraErrorBoundary","state","hasError","getDerivedStateFromError","componentDidCatch","error","console","warn","message","props","onCameraError","render","children","DevConnectQrScanner","visible","onClose","onScanTarget","scannedRef","setError","cameraFailed","setCameraFailed","scanner","current","handleScanned","rawValue","parsed","computerHost","metroPort","handleCameraKitRead","event","nativeEvent","codeStringValue","handleExpoScanned","result","value","handleCameraError","_msg","animationType","presentationStyle","onRequestClose","style","styles","container","previewLayer","kind","CameraKit","Camera","camera","cameraType","CameraType","Back","scanBarcode","onReadCode","showFrame","laserColor","primary","frameColor","allowedBarcodeTypes","ExpoCamera","onBarCodeScanned","barCodeScannerSettings","barCodeTypes","cameraFallback","cameraFallbackText","cameraFallbackHint","topBar","titleGroup","title","subtitle","closeButton","onPress","activeOpacity","closeButtonText","statusPill","statusPillError","statusText","statusTextError","create","flex","backgroundColor","absoluteFillObject","justifyContent","alignItems","padding","fontSize","color","fontWeight","marginBottom","textAlign","position","top","left","right","flexDirection","paddingLeft","paddingRight","paddingVertical","borderRadius","marginTop","paddingHorizontal","bottom","borderWidth","borderColor","lineHeight"],"sourceRoot":"../../../../src","sources":["features/devConnect/DevConnectQrScanner.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { NativeModules } from 'react-native';
|
|
4
4
|
import { buildMetroTarget } from './devConnectUtils';
|
|
5
5
|
function getNativeModule() {
|
|
6
6
|
const nativeModule = NativeModules.DebugToolkitDevConnect;
|
|
@@ -66,7 +66,6 @@ export async function applyMetroBundle(host, port) {
|
|
|
66
66
|
}
|
|
67
67
|
try {
|
|
68
68
|
const result = await nativeModule.applyMetroHost(target.hostPort);
|
|
69
|
-
DevSettings.reload?.('DebugToolkit DevConnect Metro host changed');
|
|
70
69
|
return {
|
|
71
70
|
ok: true,
|
|
72
71
|
hostPort: result && typeof result.hostPort === 'string' ? result.hostPort : target.hostPort
|
|
@@ -89,7 +88,6 @@ export async function resetMetroBundle() {
|
|
|
89
88
|
}
|
|
90
89
|
try {
|
|
91
90
|
await nativeModule.resetMetroHost();
|
|
92
|
-
DevSettings.reload?.('DebugToolkit DevConnect Metro host reset');
|
|
93
91
|
return {
|
|
94
92
|
ok: true
|
|
95
93
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["NativeModules","buildMetroTarget","getNativeModule","nativeModule","DebugToolkitDevConnect","applyMetroHost","resetMetroHost","isNativeDevConnectAvailable","checkMetroStatus","statusUrl","fetchImpl","globalThis","fetch","ok","reason","error","response","method","body","text","includes","Error","message","String","applyMetroBundle","host","port","target","statusError","result","hostPort","resetMetroBundle"],"sourceRoot":"../../../../src","sources":["features/devConnect/nativeDevConnect.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevConnectQrScanner.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/DevConnectQrScanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8D,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DevConnectQrScanner.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/DevConnectQrScanner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8D,MAAM,OAAO,CAAC;AAenF,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAmCnF,UAAU,wBAAwB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;CACtD;AAED,wBAAgB,mBAAmB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,wBAAwB,4BAyG/F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nativeDevConnect.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/nativeDevConnect.ts"],"names":[],"mappings":"AAUA,KAAK,wBAAwB,GACzB,gBAAgB,GAChB,oBAAoB,GACpB,mBAAmB,GACnB,mBAAmB,GACnB,cAAc,CAAC;AAEnB,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,wBAAwB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAsBxF,wBAAgB,2BAA2B,IAAI,OAAO,CAErD;AAmCD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"nativeDevConnect.d.ts","sourceRoot":"","sources":["../../../../../src/features/devConnect/nativeDevConnect.ts"],"names":[],"mappings":"AAUA,KAAK,wBAAwB,GACzB,gBAAgB,GAChB,oBAAoB,GACpB,mBAAmB,GACnB,mBAAmB,GACnB,cAAc,CAAC;AAEnB,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,wBAAwB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAsBxF,wBAAgB,2BAA2B,IAAI,OAAO,CAErD;AAmCD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6B7F;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,iBAAiB,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,CAgBlF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-debug-toolkit",
|
|
3
|
-
"version": "3.2.
|
|
3
|
+
"version": "3.2.3",
|
|
4
4
|
"description": "A local-first React Native debug toolkit with Web Console, HTTP API, and MCP support for AI-readable app logs",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React, { Component, useCallback, useEffect, useRef, useState } from 'react';
|
|
2
2
|
import {
|
|
3
3
|
Modal,
|
|
4
|
-
Pressable,
|
|
5
4
|
StyleSheet,
|
|
6
5
|
Text,
|
|
7
6
|
TouchableOpacity,
|
|
@@ -109,46 +108,54 @@ export function DevConnectQrScanner({ visible, onClose, onScanTarget }: DevConne
|
|
|
109
108
|
}
|
|
110
109
|
|
|
111
110
|
return (
|
|
112
|
-
<Modal visible={visible} animationType="slide" onRequestClose={onClose}>
|
|
111
|
+
<Modal visible={visible} animationType="slide" presentationStyle="fullScreen" onRequestClose={onClose}>
|
|
113
112
|
<View style={styles.container}>
|
|
114
|
-
{
|
|
115
|
-
|
|
116
|
-
{
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
<
|
|
139
|
-
|
|
113
|
+
<View style={styles.previewLayer}>
|
|
114
|
+
{!cameraFailed && (
|
|
115
|
+
<CameraErrorBoundary onCameraError={handleCameraError}>
|
|
116
|
+
{scanner.kind === 'camera-kit' && scanner.CameraKit ? (
|
|
117
|
+
<scanner.CameraKit.Camera
|
|
118
|
+
style={styles.camera}
|
|
119
|
+
cameraType={scanner.CameraKit.CameraType?.Back}
|
|
120
|
+
scanBarcode
|
|
121
|
+
onReadCode={handleCameraKitRead}
|
|
122
|
+
showFrame
|
|
123
|
+
laserColor={Colors.primary}
|
|
124
|
+
frameColor={Colors.primary}
|
|
125
|
+
allowedBarcodeTypes={['qr']}
|
|
126
|
+
/>
|
|
127
|
+
) : scanner.kind === 'expo-camera' && scanner.ExpoCamera ? (
|
|
128
|
+
<scanner.ExpoCamera.Camera
|
|
129
|
+
style={styles.camera}
|
|
130
|
+
onBarCodeScanned={handleExpoScanned}
|
|
131
|
+
barCodeScannerSettings={{ barCodeTypes: ['qr'] }}
|
|
132
|
+
/>
|
|
133
|
+
) : null}
|
|
134
|
+
</CameraErrorBoundary>
|
|
135
|
+
)}
|
|
136
|
+
{cameraFailed && (
|
|
137
|
+
<View style={styles.cameraFallback}>
|
|
138
|
+
<Text style={styles.cameraFallbackText}>Camera unavailable.</Text>
|
|
139
|
+
<Text style={styles.cameraFallbackHint}>Please enter computer IP manually.</Text>
|
|
140
|
+
</View>
|
|
141
|
+
)}
|
|
142
|
+
</View>
|
|
143
|
+
|
|
144
|
+
<View style={styles.topBar}>
|
|
145
|
+
<View style={styles.titleGroup}>
|
|
146
|
+
<Text style={styles.title}>Scan Metro QR</Text>
|
|
147
|
+
<Text style={styles.subtitle}>Expo or Metro URL</Text>
|
|
140
148
|
</View>
|
|
141
|
-
|
|
142
|
-
<View style={styles.footer}>
|
|
143
|
-
{!cameraFailed && !error && <Text style={styles.hint}>Scan a Metro QR code.</Text>}
|
|
144
|
-
{error && <Text style={styles.error}>{error}</Text>}
|
|
145
|
-
<TouchableOpacity style={styles.closeButton} onPress={onClose} activeOpacity={0.7}>
|
|
149
|
+
<TouchableOpacity style={styles.closeButton} onPress={onClose} activeOpacity={0.75}>
|
|
146
150
|
<Text style={styles.closeButtonText}>Close</Text>
|
|
147
151
|
</TouchableOpacity>
|
|
148
152
|
</View>
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
153
|
+
|
|
154
|
+
<View style={[styles.statusPill, error && styles.statusPillError]}>
|
|
155
|
+
<Text style={[styles.statusText, error && styles.statusTextError]}>
|
|
156
|
+
{error ?? 'Point the camera at exp:// or http:// Metro URL.'}
|
|
157
|
+
</Text>
|
|
158
|
+
</View>
|
|
152
159
|
</View>
|
|
153
160
|
</Modal>
|
|
154
161
|
);
|
|
@@ -156,29 +163,52 @@ export function DevConnectQrScanner({ visible, onClose, onScanTarget }: DevConne
|
|
|
156
163
|
|
|
157
164
|
const styles = StyleSheet.create({
|
|
158
165
|
container: { flex: 1, backgroundColor: '#000' },
|
|
159
|
-
|
|
160
|
-
|
|
166
|
+
previewLayer: { ...StyleSheet.absoluteFillObject },
|
|
167
|
+
camera: { ...StyleSheet.absoluteFillObject },
|
|
168
|
+
cameraFallback: { ...StyleSheet.absoluteFillObject, justifyContent: 'center', alignItems: 'center', padding: 24 },
|
|
161
169
|
cameraFallbackText: { fontSize: 16, color: '#fff', fontWeight: '600', marginBottom: 8 },
|
|
162
170
|
cameraFallbackHint: { fontSize: 13, color: 'rgba(255,255,255,0.6)', textAlign: 'center' },
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
171
|
+
topBar: {
|
|
172
|
+
position: 'absolute',
|
|
173
|
+
top: 44,
|
|
174
|
+
left: 16,
|
|
175
|
+
right: 16,
|
|
176
|
+
flexDirection: 'row',
|
|
177
|
+
alignItems: 'center',
|
|
178
|
+
justifyContent: 'space-between',
|
|
179
|
+
paddingLeft: 14,
|
|
180
|
+
paddingRight: 8,
|
|
181
|
+
paddingVertical: 8,
|
|
182
|
+
borderRadius: 12,
|
|
183
|
+
backgroundColor: 'rgba(0,0,0,0.62)',
|
|
184
|
+
},
|
|
185
|
+
titleGroup: { flex: 1, paddingRight: 10 },
|
|
186
|
+
title: { color: '#fff', fontSize: 15, fontWeight: '700' },
|
|
187
|
+
subtitle: { color: 'rgba(255,255,255,0.68)', fontSize: 11, marginTop: 2 },
|
|
166
188
|
closeButton: {
|
|
167
189
|
alignItems: 'center',
|
|
168
190
|
justifyContent: 'center',
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
191
|
+
paddingHorizontal: 12,
|
|
192
|
+
paddingVertical: 8,
|
|
193
|
+
borderRadius: 8,
|
|
194
|
+
backgroundColor: 'rgba(255,255,255,0.14)',
|
|
172
195
|
},
|
|
173
196
|
closeButtonText: { color: '#fff', fontSize: 14, fontWeight: '600' },
|
|
174
|
-
|
|
197
|
+
statusPill: {
|
|
175
198
|
position: 'absolute',
|
|
176
|
-
|
|
199
|
+
left: 16,
|
|
177
200
|
right: 16,
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
201
|
+
bottom: 30,
|
|
202
|
+
paddingHorizontal: 14,
|
|
203
|
+
paddingVertical: 11,
|
|
204
|
+
borderRadius: 12,
|
|
205
|
+
backgroundColor: 'rgba(0,0,0,0.62)',
|
|
206
|
+
},
|
|
207
|
+
statusPillError: {
|
|
208
|
+
backgroundColor: `${Colors.error}22`,
|
|
209
|
+
borderWidth: 1,
|
|
210
|
+
borderColor: `${Colors.error}66`,
|
|
182
211
|
},
|
|
183
|
-
|
|
212
|
+
statusText: { color: '#fff', fontSize: 13, textAlign: 'center', lineHeight: 18 },
|
|
213
|
+
statusTextError: { color: '#fff' },
|
|
184
214
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NativeModules } from 'react-native';
|
|
2
2
|
|
|
3
3
|
import { buildMetroTarget } from './devConnectUtils';
|
|
4
4
|
|
|
@@ -94,7 +94,6 @@ export async function applyMetroBundle(host: string, port: string): Promise<Metr
|
|
|
94
94
|
|
|
95
95
|
try {
|
|
96
96
|
const result = await nativeModule.applyMetroHost(target.hostPort);
|
|
97
|
-
DevSettings.reload?.('DebugToolkit DevConnect Metro host changed');
|
|
98
97
|
return {
|
|
99
98
|
ok: true,
|
|
100
99
|
hostPort: result && typeof result.hostPort === 'string' ? result.hostPort : target.hostPort,
|
|
@@ -116,7 +115,6 @@ export async function resetMetroBundle(): Promise<MetroBundleResult | { ok: true
|
|
|
116
115
|
|
|
117
116
|
try {
|
|
118
117
|
await nativeModule.resetMetroHost();
|
|
119
|
-
DevSettings.reload?.('DebugToolkit DevConnect Metro host reset');
|
|
120
118
|
return { ok: true };
|
|
121
119
|
} catch (error) {
|
|
122
120
|
return {
|