mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Migrate RCTDevMenu over to RCTBundleManager
Summary: This diff gets rid of bridge usage in RCTDevMenu's _menuItemsToPresent method. Changelog: [Internal] Reviewed By: PeteTheHeat Differential Revision: D28164301 fbshipit-source-id: 6445c787519af887209ee312f1c2dbaef873e00d
This commit is contained in:
committed by
Facebook GitHub Bot
parent
8ba73a79f2
commit
4198c2bcb6
@@ -426,7 +426,9 @@ typedef NSURL * (^RCTBridgelessBundleURLGetter)();
|
||||
@interface RCTBundleManager : NSObject
|
||||
- (void)setBridge:(RCTBridge *)bridge;
|
||||
- (void)setBridgelessBundleURLGetter:(RCTBridgelessBundleURLGetter)getter
|
||||
andSetter:(RCTBridgelessBundleURLSetter)setter;
|
||||
andSetter:(RCTBridgelessBundleURLSetter)setter
|
||||
andDefaultGetter:(RCTBridgelessBundleURLGetter)defaultGetter;
|
||||
- (void)resetBundleURL;
|
||||
@property NSURL *bundleURL;
|
||||
@end
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
__weak RCTBridge *_bridge;
|
||||
RCTBridgelessBundleURLGetter _bridgelessBundleURLGetter;
|
||||
RCTBridgelessBundleURLSetter _bridgelessBundleURLSetter;
|
||||
RCTBridgelessBundleURLGetter _bridgelessBundleURLDefaultGetter;
|
||||
}
|
||||
|
||||
- (void)setBridge:(RCTBridge *)bridge
|
||||
@@ -21,10 +22,13 @@
|
||||
_bridge = bridge;
|
||||
}
|
||||
|
||||
- (void)setBridgelessBundleURLGetter:(RCTBridgelessBundleURLGetter)getter andSetter:(RCTBridgelessBundleURLSetter)setter
|
||||
- (void)setBridgelessBundleURLGetter:(RCTBridgelessBundleURLGetter)getter
|
||||
andSetter:(RCTBridgelessBundleURLSetter)setter
|
||||
andDefaultGetter:(RCTBridgelessBundleURLGetter)defaultGetter
|
||||
{
|
||||
_bridgelessBundleURLGetter = getter;
|
||||
_bridgelessBundleURLSetter = setter;
|
||||
_bridgelessBundleURLDefaultGetter = defaultGetter;
|
||||
}
|
||||
|
||||
- (void)setBundleURL:(NSURL *)bundleURL
|
||||
@@ -53,4 +57,22 @@
|
||||
return _bridgelessBundleURLGetter();
|
||||
}
|
||||
|
||||
- (void)resetBundleURL
|
||||
{
|
||||
RCTBridge *strongBridge = _bridge;
|
||||
if (strongBridge) {
|
||||
strongBridge.bundleURL = [strongBridge.delegate sourceURLForBridge:strongBridge];
|
||||
return;
|
||||
}
|
||||
|
||||
RCTAssert(
|
||||
_bridgelessBundleURLDefaultGetter != nil,
|
||||
@"RCTBundleManager: In bridgeless mode, default RCTBridgelessBundleURLGetter must not be nil.");
|
||||
RCTAssert(
|
||||
_bridgelessBundleURLSetter != nil,
|
||||
@"RCTBundleManager: In bridgeless mode, RCTBridgelessBundleURLSetter must not be nil.");
|
||||
|
||||
_bridgelessBundleURLSetter(_bridgelessBundleURLDefaultGetter());
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -98,6 +98,7 @@ typedef void (^RCTDevMenuAlertActionHandler)(UIAlertAction *action);
|
||||
@synthesize bridge = _bridge;
|
||||
@synthesize moduleRegistry = _moduleRegistry;
|
||||
@synthesize invokeJS = _invokeJS;
|
||||
@synthesize bundleManager = _bundleManager;
|
||||
|
||||
RCT_EXPORT_MODULE()
|
||||
|
||||
@@ -210,8 +211,8 @@ RCT_EXPORT_MODULE()
|
||||
- (void)setDefaultJSBundle
|
||||
{
|
||||
[[RCTBundleURLProvider sharedSettings] resetToDefaults];
|
||||
self->_bridge.bundleURL = [[RCTBundleURLProvider sharedSettings] jsBundleURLForFallbackResource:nil
|
||||
fallbackExtension:nil];
|
||||
self->_bundleManager.bundleURL = [[RCTBundleURLProvider sharedSettings] jsBundleURLForFallbackResource:nil
|
||||
fallbackExtension:nil];
|
||||
RCTTriggerReloadCommandListeners(@"Dev menu - reset to default");
|
||||
}
|
||||
|
||||
@@ -220,9 +221,9 @@ RCT_EXPORT_MODULE()
|
||||
NSMutableArray<RCTDevMenuItem *> *items = [NSMutableArray new];
|
||||
|
||||
// Add built-in items
|
||||
__weak RCTBridge *bridge = _bridge;
|
||||
__weak RCTDevSettings *devSettings = [_moduleRegistry moduleForName:"DevSettings"];
|
||||
__weak RCTDevMenu *weakSelf = self;
|
||||
__weak RCTBundleManager *bundleManager = _bundleManager;
|
||||
|
||||
[items addObject:[RCTDevMenuItem buttonItemWithTitle:@"Reload"
|
||||
handler:^{
|
||||
@@ -242,7 +243,7 @@ RCT_EXPORT_MODULE()
|
||||
handler:^{
|
||||
[RCTInspectorDevServerHelper
|
||||
openURL:@"flipper://null/Hermesdebuggerrn?device=React%20Native"
|
||||
withBundleURL:bridge.bundleURL
|
||||
withBundleURL:bundleManager.bundleURL
|
||||
withErrorMessage:@"Failed to open Flipper. Please check that Metro is runnning."];
|
||||
}]];
|
||||
|
||||
@@ -253,7 +254,7 @@ RCT_EXPORT_MODULE()
|
||||
handler:^{
|
||||
[RCTInspectorDevServerHelper
|
||||
openURL:@"flipper://null/React?device=React%20Native"
|
||||
withBundleURL:bridge.bundleURL
|
||||
withBundleURL:bundleManager.bundleURL
|
||||
withErrorMessage:@"Failed to open Flipper. Please check that Metro is runnning."];
|
||||
}]];
|
||||
} else if (devSettings.isRemoteDebuggingAvailable) {
|
||||
@@ -359,16 +360,15 @@ RCT_EXPORT_MODULE()
|
||||
}
|
||||
[RCTBundleURLProvider sharedSettings].jsLocation = [NSString
|
||||
stringWithFormat:@"%@:%d", ipTextField.text, portNumber.intValue];
|
||||
__strong RCTBridge *strongBridge = bridge;
|
||||
if (strongBridge) {
|
||||
NSURL *bundleURL = bundleRoot.length
|
||||
? [[RCTBundleURLProvider sharedSettings]
|
||||
jsBundleURLForBundleRoot:bundleRoot
|
||||
fallbackResource:nil]
|
||||
: [strongBridge.delegate sourceURLForBridge:strongBridge];
|
||||
strongBridge.bundleURL = bundleURL;
|
||||
RCTTriggerReloadCommandListeners(@"Dev menu - apply changes");
|
||||
if (bundleRoot.length == 0) {
|
||||
[bundleManager resetBundleURL];
|
||||
} else {
|
||||
bundleManager.bundleURL = [[RCTBundleURLProvider sharedSettings]
|
||||
jsBundleURLForBundleRoot:bundleRoot
|
||||
fallbackResource:nil];
|
||||
}
|
||||
|
||||
RCTTriggerReloadCommandListeners(@"Dev menu - apply changes");
|
||||
}]];
|
||||
[alertController addAction:[UIAlertAction actionWithTitle:@"Reset to Default"
|
||||
style:UIAlertActionStyleDefault
|
||||
|
||||
Reference in New Issue
Block a user