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:
Ramanpreet Nara
2021-05-04 18:33:23 -07:00
committed by Facebook GitHub Bot
parent 8ba73a79f2
commit 4198c2bcb6
3 changed files with 40 additions and 16 deletions
+3 -1
View File
@@ -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
+23 -1
View File
@@ -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
+14 -14
View File
@@ -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