Skip to content

Commit efec185

Browse files
committed
initial RCTDevMenuConfiguration
1 parent b7ac655 commit efec185

File tree

8 files changed

+167
-82
lines changed

8 files changed

+167
-82
lines changed

packages/react-native/Libraries/AppDelegate/RCTReactNativeFactory.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#import <React/RCTBridgeDelegate.h>
99
#import <React/RCTConvert.h>
10+
#import <React/RCTDevMenu.h>
1011
#import <UIKit/UIKit.h>
1112
#import "RCTArchConfiguratorProtocol.h"
1213
#import "RCTDependencyProvider.h"
@@ -101,13 +102,17 @@ typedef NS_ENUM(NSInteger, RCTReleaseLevel) { Canary, Experimental, Stable };
101102
initialProperties:(NSDictionary *_Nullable)initialProperties
102103
launchOptions:(NSDictionary *_Nullable)launchOptions;
103104

105+
- (void)setDevToolsConfiguration:(RCTDevMenuConfiguration *)configuration;
106+
104107
@property (nonatomic, nullable) RCTBridge *bridge;
105108
@property (nonatomic, strong, nonnull) RCTRootViewFactory *rootViewFactory;
106109

107110
@property (nonatomic, nullable) RCTSurfacePresenterBridgeAdapter *bridgeAdapter;
108111

109112
@property (nonatomic, weak) id<RCTReactNativeFactoryDelegate> delegate;
110113

114+
@property (nonatomic, nullable) RCTDevMenuConfiguration *devMenuConfiguration;
115+
111116
@end
112117

113118
NS_ASSUME_NONNULL_END

packages/react-native/Libraries/AppDelegate/RCTReactNativeFactory.mm

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,21 @@ - (void)startReactNativeWithModuleName:(NSString *)moduleName
8282
{
8383
UIView *rootView = [self.rootViewFactory viewWithModuleName:moduleName
8484
initialProperties:initialProperties
85-
launchOptions:launchOptions];
85+
launchOptions:launchOptions
86+
devMenuConfiguration:self.devMenuConfiguration];
8687
UIViewController *rootViewController = [_delegate createRootViewController];
8788
[_delegate setRootView:rootView toRootViewController:rootViewController];
8889
window.rootViewController = rootViewController;
8990
[window makeKeyAndVisible];
9091
}
9192

93+
#pragma mark - RCTDevMenuConfiguration
94+
95+
- (void)setDevToolsConfiguration:(RCTDevMenuConfiguration *)configuration
96+
{
97+
self.devMenuConfiguration = configuration;
98+
}
99+
92100
#pragma mark - RCTUIConfiguratorProtocol
93101

94102
- (RCTColorSpace)defaultColorSpace

packages/react-native/Libraries/AppDelegate/RCTRootViewFactory.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
*/
77

88
#import <React/RCTBridge.h>
9+
#import <React/RCTDevMenu.h>
910
#import <React/RCTRootView.h>
1011
#import <React/RCTUtils.h>
1112
#import "RCTJSRuntimeConfiguratorProtocol.h"
@@ -201,6 +202,11 @@ typedef void (^RCTLoadSourceForBridgeBlock)(RCTBridge *bridge, RCTSourceLoadBloc
201202
* @parameter: initialProperties - a set of initial properties.
202203
* @parameter: launchOptions - a dictionary with a set of options.
203204
*/
205+
- (UIView *_Nonnull)viewWithModuleName:(NSString *)moduleName
206+
initialProperties:(NSDictionary *__nullable)initialProperties
207+
launchOptions:(NSDictionary *__nullable)launchOptions
208+
devMenuConfiguration:(RCTDevMenuConfiguration *__nullable)devMenuConfiguration;
209+
204210
- (UIView *_Nonnull)viewWithModuleName:(NSString *)moduleName
205211
initialProperties:(NSDictionary *__nullable)initialProperties
206212
launchOptions:(NSDictionary *__nullable)launchOptions;
@@ -219,7 +225,8 @@ typedef void (^RCTLoadSourceForBridgeBlock)(RCTBridge *bridge, RCTSourceLoadBloc
219225
*
220226
* @parameter: launchOptions - a dictionary with a set of options.
221227
*/
222-
- (void)initializeReactHostWithLaunchOptions:(NSDictionary *__nullable)launchOptions;
228+
- (void)initializeReactHostWithLaunchOptions:(NSDictionary *__nullable)launchOptions
229+
devMenuConfiguration:(RCTDevMenuConfiguration *)devMenuConfiguration;
223230

224231
- (RCTHost *)createReactHost:(NSDictionary *__nullable)launchOptions;
225232

packages/react-native/Libraries/AppDelegate/RCTRootViewFactory.mm

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#import "RCTRootViewFactory.h"
99
#import <React/RCTCxxBridgeDelegate.h>
10+
#import <React/RCTDevMenu.h>
1011
#import <React/RCTLog.h>
1112
#import <React/RCTRootView.h>
1213
#import <React/RCTSurfacePresenterBridgeAdapter.h>
@@ -125,29 +126,44 @@ - (instancetype)initWithConfiguration:(RCTRootViewFactoryConfiguration *)configu
125126

126127
- (UIView *)viewWithModuleName:(NSString *)moduleName initialProperties:(NSDictionary *)initialProperties
127128
{
128-
return [self viewWithModuleName:moduleName initialProperties:initialProperties launchOptions:nil];
129+
return [self viewWithModuleName:moduleName
130+
initialProperties:initialProperties
131+
launchOptions:nil
132+
devMenuConfiguration:nil];
129133
}
130134

131135
- (UIView *)viewWithModuleName:(NSString *)moduleName
132136
{
133-
return [self viewWithModuleName:moduleName initialProperties:nil launchOptions:nil];
137+
return [self viewWithModuleName:moduleName initialProperties:nil launchOptions:nil devMenuConfiguration:nil];
134138
}
135139

136140
- (void)initializeReactHostWithLaunchOptions:(NSDictionary *)launchOptions
141+
devMenuConfiguration:(RCTDevMenuConfiguration *)devMenuConfiguration
137142
{
138143
// Enable TurboModule interop by default in Bridgeless mode
139144
RCTEnableTurboModuleInterop(YES);
140145
RCTEnableTurboModuleInteropBridgeProxy(YES);
141146

142-
[self createReactHostIfNeeded:launchOptions];
147+
[self createReactHostIfNeeded:launchOptions devMenuConfiguration:devMenuConfiguration];
143148
return;
144149
}
145150

151+
- (UIView *)viewWithModuleName:(NSString *)moduleName
152+
initialProperties:(NSDictionary *)initialProperties
153+
launchOptions:(NSDictionary *)launchOptions
154+
{
155+
return [self viewWithModuleName:moduleName
156+
initialProperties:initialProperties
157+
launchOptions:launchOptions
158+
devMenuConfiguration:nil];
159+
}
160+
146161
- (UIView *)viewWithModuleName:(NSString *)moduleName
147162
initialProperties:(NSDictionary *)initProps
148163
launchOptions:(NSDictionary *)launchOptions
164+
devMenuConfiguration:(RCTDevMenuConfiguration *)devMenuConfiguration
149165
{
150-
[self initializeReactHostWithLaunchOptions:launchOptions];
166+
[self initializeReactHostWithLaunchOptions:launchOptions devMenuConfiguration:devMenuConfiguration];
151167

152168
RCTFabricSurface *surface = [self.reactHost createSurfaceWithModuleName:moduleName
153169
initialProperties:initProps ? initProps : @{}];
@@ -218,14 +234,16 @@ - (void)createBridgeAdapterIfNeeded
218234
#pragma mark - New Arch Utilities
219235

220236
- (void)createReactHostIfNeeded:(NSDictionary *)launchOptions
237+
devMenuConfiguration:(RCTDevMenuConfiguration *)devMenuConfiguration
221238
{
222239
if (self.reactHost) {
223240
return;
224241
}
225-
self.reactHost = [self createReactHost:launchOptions];
242+
self.reactHost = [self createReactHost:launchOptions devMenuConfiguration:devMenuConfiguration];
226243
}
227244

228245
- (RCTHost *)createReactHost:(NSDictionary *)launchOptions
246+
devMenuConfiguration:(RCTDevMenuConfiguration *)devMenuConfiguration
229247
{
230248
__weak __typeof(self) weakSelf = self;
231249
RCTHost *reactHost =

packages/react-native/React/CoreModules/RCTDevMenu.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ RCT_EXTERN NSString *const RCTShowDevMenuNotification;
2020

2121
@class RCTDevMenuItem;
2222

23+
@interface RCTDevMenuConfiguration
24+
@property (nonatomic, readonly) BOOL isDevMenuEnabled;
25+
@end
26+
2327
/**
2428
* Developer menu, useful for exposing extra functionality when debugging.
2529
*/

packages/react-native/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#import <Foundation/Foundation.h>
99

1010
#import <React/RCTDefines.h>
11+
#import <React/RCTDevMenu.h>
1112
#import <react/renderer/core/ReactPrimitives.h>
1213
#import <react/runtime/JSRuntimeFactory.h>
1314

@@ -63,7 +64,9 @@ typedef std::shared_ptr<facebook::react::JSRuntimeFactory> (^RCTHostJSEngineProv
6364
hostDelegate:(id<RCTHostDelegate>)hostDelegate
6465
turboModuleManagerDelegate:(id<RCTTurboModuleManagerDelegate>)turboModuleManagerDelegate
6566
jsEngineProvider:(RCTHostJSEngineProvider)jsEngineProvider
66-
launchOptions:(nullable NSDictionary *)launchOptions NS_DESIGNATED_INITIALIZER;
67+
launchOptions:(nullable NSDictionary *)launchOptions
68+
devMenuConfiguration:(RCTDevMenuConfiguration *__nullable)devMenuConfiguration
69+
NS_DESIGNATED_INITIALIZER;
6770

6871
- (instancetype)initWithBundleURL:(NSURL *)bundleURL
6972
hostDelegate:(id<RCTHostDelegate>)hostDelegate

packages/react-native/ReactCommon/react/runtime/platform/ios/ReactCommon/RCTHost.mm

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,8 @@ - (instancetype)initWithBundleURL:(NSURL *)bundleURL
147147
hostDelegate:hostDelegate
148148
turboModuleManagerDelegate:turboModuleManagerDelegate
149149
jsEngineProvider:jsEngineProvider
150-
launchOptions:launchOptions];
150+
launchOptions:launchOptions
151+
devMenuConfiguration:nil];
151152
}
152153

153154
/**
@@ -159,6 +160,7 @@ - (instancetype)initWithBundleURLProvider:(RCTHostBundleURLProvider)provider
159160
turboModuleManagerDelegate:(id<RCTTurboModuleManagerDelegate>)turboModuleManagerDelegate
160161
jsEngineProvider:(RCTHostJSEngineProvider)jsEngineProvider
161162
launchOptions:(nullable NSDictionary *)launchOptions
163+
devMenuConfiguration:(RCTDevMenuConfiguration *)devMenuConfiguration
162164
{
163165
if (self = [super init]) {
164166
_hostDelegate = hostDelegate;

0 commit comments

Comments
 (0)