Skip to content

Commit 937e7a0

Browse files
committed
refactor, fix when nil is passed
1 parent 3e927d4 commit 937e7a0

File tree

7 files changed

+114
-82
lines changed

7 files changed

+114
-82
lines changed

packages/react-native/React/Base/RCTDevMenuConfigurationDecorator.mm

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,19 @@ - (instancetype)initWithDevMenuConfiguration:(RCTDevMenuConfiguration *)devMenuC
2424

2525
- (void)decorate:(id<RCTBridgeModule>)bridgeModule
2626
{
27+
if (_devMenuConfiguration == nil) {
28+
return;
29+
}
30+
2731
if ([bridgeModule isKindOfClass:[RCTDevMenu class]]) {
2832
RCTDevMenu *devMenu = (RCTDevMenu *)bridgeModule;
2933
devMenu.isDevMenuEnabled = _devMenuConfiguration.isDevMenuEnabled;
30-
31-
if (_devMenuConfiguration.areKeyboardShortcutsEnabled == false) {
32-
if ([devMenu hotkeysEnabled]) {
33-
[devMenu setHotkeysEnabled:_devMenuConfiguration.areKeyboardShortcutsEnabled];
34-
}
35-
36-
[devMenu disableReloadCommand];
37-
}
34+
devMenu.areKeyboardShortcutsEnabled = _devMenuConfiguration.areKeyboardShortcutsEnabled;
3835
}
3936

4037
if ([bridgeModule isKindOfClass:[RCTDevSettings class]]) {
4138
RCTDevSettings *devSettings = (RCTDevSettings *)bridgeModule;
42-
[devSettings setIsShakeToShowDevMenuEnabled:_devMenuConfiguration.isShakeGestureEnabled];
39+
devSettings.isShakeGestureEnabled = _devMenuConfiguration.isShakeGestureEnabled;
4340
}
4441
}
4542

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,11 @@ RCT_EXTERN NSString *const RCTShowDevMenuNotification;
6262
*/
6363
@property (nonatomic, assign) BOOL isDevMenuEnabled;
6464

65+
/**
66+
* Whether keyboard shortcuts are enabled.
67+
*/
68+
@property (nonatomic, assign) BOOL areKeyboardShortcutsEnabled;
69+
6570
/**
6671
* Presented items in development menu
6772
*/

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

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ @implementation RCTDevMenu {
116116
@synthesize moduleRegistry = _moduleRegistry;
117117
@synthesize callableJSModules = _callableJSModules;
118118
@synthesize bundleManager = _bundleManager;
119-
@synthesize isDevMenuEnabled = _isDevMenuEnabled;
120119

121120
RCT_EXPORT_MODULE()
122121

@@ -141,7 +140,9 @@ - (instancetype)init
141140
name:RCTShowDevMenuNotification
142141
object:nil];
143142
_extraMenuItems = [NSMutableArray new];
144-
143+
144+
_areKeyboardShortcutsEnabled = true;
145+
_isDevMenuEnabled = true;
145146
[self registerHotkeys];
146147
}
147148
return self;
@@ -271,6 +272,17 @@ - (void)addItem:(RCTDevMenuItem *)item
271272
[_extraMenuItems addObject:item];
272273
}
273274

275+
-(void)setAreKeyboardShortcutsEnabled:(BOOL)areKeyboardShortcutsEnabled
276+
{
277+
if (_areKeyboardShortcutsEnabled != areKeyboardShortcutsEnabled) {
278+
[self setHotkeysEnabled:areKeyboardShortcutsEnabled];
279+
280+
if (areKeyboardShortcutsEnabled == false) {
281+
[self disableReloadCommand];
282+
}
283+
}
284+
}
285+
274286
- (void)setDefaultJSBundle
275287
{
276288
[[RCTBundleURLProvider sharedSettings] resetToDefaults];

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,11 @@
8080
*/
8181
@property (nonatomic, assign) BOOL isPerfMonitorShown;
8282

83+
/**
84+
* Whether shake gesture is enabled.
85+
*/
86+
@property (nonatomic, assign) BOOL isShakeGestureEnabled;
87+
8388
/**
8489
* Toggle the element inspector.
8590
*/

packages/react-native/React/CoreModules/RCTDevSettings.mm

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ - (instancetype)init
145145
};
146146
RCTDevSettingsUserDefaultsDataSource *dataSource =
147147
[[RCTDevSettingsUserDefaultsDataSource alloc] initWithDefaultValues:defaultValues];
148+
_isShakeGestureEnabled = true;
148149
return [self initWithDataSource:dataSource];
149150
}
150151

@@ -262,6 +263,14 @@ - (id)settingForKey:(NSString *)key
262263
return [_dataSource settingForKey:key];
263264
}
264265

266+
- (void)setIsShakeGestureEnabled:(BOOL)isShakeGestureEnabled
267+
{
268+
if (isShakeGestureEnabled != _isShakeGestureEnabled) {
269+
_isShakeGestureEnabled = isShakeGestureEnabled;
270+
[self setIsShakeToShowDevMenuEnabled:isShakeGestureEnabled];
271+
}
272+
}
273+
265274
- (BOOL)isDeviceDebuggingAvailable
266275
{
267276
#if RCT_ENABLE_INSPECTOR
@@ -305,7 +314,8 @@ - (BOOL)isHotLoadingAvailable
305314

306315
- (BOOL)isShakeToShowDevMenuEnabled
307316
{
308-
return [[self settingForKey:kRCTDevSettingShakeToShowDevMenu] boolValue];
317+
BOOL x = [[self settingForKey:kRCTDevSettingShakeToShowDevMenu] boolValue];
318+
return _isShakeGestureEnabled && [[self settingForKey:kRCTDevSettingShakeToShowDevMenu] boolValue];
309319
}
310320

311321
RCT_EXPORT_METHOD(setProfilingEnabled : (BOOL)enabled)

packages/rn-tester/Podfile.lock

Lines changed: 68 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1783,6 +1783,7 @@ PODS:
17831783
- React-jsinspectorcdp
17841784
- React-jsinspectornetwork
17851785
- React-jsinspectortracing
1786+
- React-oscompat
17861787
- React-perflogger (= 1000.0.0)
17871788
- React-runtimeexecutor
17881789
- SocketRocket
@@ -2711,83 +2712,83 @@ SPEC CHECKSUMS:
27112712
boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90
27122713
DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb
27132714
fast_float: b32c788ed9c6a8c584d114d0047beda9664e7cc6
2714-
FBLazyVector: 2d105abf51f88d8e8917ff79754d83caac0cecf2
2715+
FBLazyVector: a46cf77349a183c93aaed69638d60004246f6c0b
27152716
fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd
27162717
glog: 5683914934d5b6e4240e497e0f4a3b42d1854183
2717-
hermes-engine: 16f20c324118032dd4c670ac6281b0ba438346f5
2718+
hermes-engine: f15e67089e00030977db3be3b4f7f54cea79655e
27182719
MyNativeView: 26b517931cc8bfc7b602c410572b323348185461
27192720
NativeCxxModuleExample: 6a9788a749d522f8b6cc55a56f4760a670e4e2eb
27202721
OCMock: 589f2c84dacb1f5aaf6e4cec1f292551fe748e74
27212722
RCT-Folly: 846fda9475e61ec7bcbf8a3fe81edfcaeb090669
27222723
RCTDeprecation: 3808e36294137f9ee5668f4df2e73dc079cd1dcf
2723-
RCTRequired: 0b98559c6d8d0e7fea7238731360843e2d8fa649
2724-
RCTTypeSafety: 3c661d128275407c85a9e852562986b0e16239bb
2725-
React: 414ff4a29e32a5ff84e437beb4747b0dd0faa1e9
2726-
React-callinvoker: 52c4f39441b1822efe685d3df77cd80b2cbce6be
2727-
React-Core: 46db2856c7b771261fd63e6f6c1c1cfe8e736372
2728-
React-CoreModules: 12250d540f179d9f369ef7d5e3a8c86d164c39d9
2729-
React-cxxreact: 395f1419b89831fbea52d2a36e6d3b2fb860a964
2730-
React-debug: 90d00df81936f49bfb9e6a44db52d8b7c9a40cf6
2731-
React-defaultsnativemodule: fb5267d0dab077f719d1b18cf8b7c49c58c1c35b
2732-
React-domnativemodule: 3d7cc2d7d00c81f75c23d3331d17b21fa6faeca0
2733-
React-Fabric: 9b3d05700948408d7a85e671f5bd91c8594f476b
2734-
React-FabricComponents: 9007703eacce007aaa1f0ba2cb58d4988ccf0b6a
2735-
React-FabricImage: 6a111877ddce3d1fdd61687f6ff71dee478187d3
2736-
React-featureflags: ed41e376ea39a50b01d8fe2c11d5482bffbef6b2
2737-
React-featureflagsnativemodule: 3834daf9ed3884ab3365d101b9d7c6fac087d4f7
2738-
React-graphics: 4fbee81fffc73081cb23e2c809646e913bf48515
2739-
React-hermes: 61173f509d7dcd78d1b3accf04b129753f46f5aa
2740-
React-idlecallbacksnativemodule: 1555a8160a9b83d69494b196c4898559b5819fa7
2741-
React-ImageManager: b9a9be45cbae631e9040a12830aa928a303e1553
2742-
React-jserrorhandler: fd7f615063616def86265d9cfb110bc3afb20ba0
2743-
React-jsi: 0c8532666a4a19d66182a4445d18ec0f0c24b38f
2744-
React-jsiexecutor: 5716536dd6f9b048828845d9d9a7106b62569cf3
2745-
React-jsinspector: d9de5de285133edafd0d416fd647f3dbbcb37c01
2746-
React-jsinspectorcdp: 4e1c669c9ae275293a7056311fa82d0200680be0
2747-
React-jsinspectornetwork: f2afdb0535af11fa40361be2d71a602381385123
2748-
React-jsinspectortracing: 76a8942c14bf53926b26f3d6ce7d8632c4207f33
2749-
React-jsitooling: 3db6c89cf1de6308fa9b00a3bb6174a1f36ed936
2750-
React-jsitracing: d1e537559cf9ca12a1db16dc9f937f6abe33d660
2751-
React-logger: 9a653c5addbdc26cff344aeae2609dcac18be2e1
2752-
React-Mapbuffer: b8317e64d87f91a9d5aefd763c56d64647b2d3af
2753-
React-microtasksnativemodule: 4b7ee46a4aea78c9d3a9860171a6afb068e58db4
2754-
React-NativeModulesApple: 113a286dcb74949aba50d703bb321fd5bad03883
2755-
React-oscompat: 1d2cec6dd16180f599c87e576909894bc9167cd5
2756-
React-perflogger: 46d045d9de38cec29e7fe5a48aba665cda877154
2757-
React-performancecdpmetrics: 483a43f957ec296de820622a1c920f9e2c34cbe4
2758-
React-performancetimeline: f4ec50e0be083145e86d975b8d92fe65a660058b
2759-
React-RCTActionSheet: 9f65b77d35d727e74165a6a9fa14dc8bdf1a54e1
2760-
React-RCTAnimation: 3647b33256b58c0d29a17ea4fefe6d287cf31f4e
2761-
React-RCTAppDelegate: 3273ead812ebaddda0ee364e94317901fc52343a
2762-
React-RCTBlob: 72b5e95e99c22dd713ffef2dc9778c3f4df9f9fa
2763-
React-RCTFabric: 2f421242ceb4c926bb1a38dff343ae253ce8d4c1
2764-
React-RCTFBReactNativeSpec: 9818f31466be15964fd4c0a536a71ef3cb8b9abe
2765-
React-RCTImage: a30a56f2f45f5d2e1123b465c510c36a2910a67c
2766-
React-RCTLinking: 0928900f0f9d84bcb30fc9e4eee415d288c08714
2767-
React-RCTNetwork: 7bbe4932019cf5530f7407e356f7d09c337923bb
2768-
React-RCTPushNotification: b2cde0d2962b7352fb2429e8b4ebf8e5a4c6761b
2769-
React-RCTRuntime: 6190f62d39e6794583d6b5e215061dc9171e60dd
2770-
React-RCTSettings: 178dfde7f40e437d3eef8abe980ee9967b1e2146
2771-
React-RCTTest: 344c9ea4c2dae1a3bf363ca978e18965250bec1e
2772-
React-RCTText: c21dff6c22c15afbaca95df9a0addcf447bbd2dc
2773-
React-RCTVibration: 39c2aaf4f76eb884fce0a0278ce4f72e3ce9b266
2774-
React-rendererconsistency: 51d6aba40184896668a61bda60f7e9599b414a02
2775-
React-renderercss: 216e3f37e364dfc879b689a4d4fc4c6c9a23d252
2776-
React-rendererdebug: e2b6133a69d35e2c582e50a3dae5ba311f1ad060
2777-
React-RuntimeApple: e7e716635b24e466b3cbba6f51cfc54cd20148b5
2778-
React-RuntimeCore: 65f6cad5d8b74ae1dbe8432ff155ab57dca3500e
2779-
React-runtimeexecutor: 6fb49a99b7939094990297eebbf054fbbbef611a
2780-
React-RuntimeHermes: 60cba0c0b5303389606b7211e9dc92a83363ef4e
2781-
React-runtimescheduler: 78435ccb92e7986ef77baa3fbacf03fd682d8c0a
2782-
React-timing: af6dbf22aa4e009cf193f21baa6ecc9400f1fd4b
2783-
React-utils: 6df0bded87e8dc5fc46e9ec4455dbb92c5a09a7e
2784-
ReactAppDependencyProvider: e70043af3b91778bda44281f8e3064846011640e
2724+
RCTRequired: d91b25eecf558bcc6d9b850795be9aa49ac06262
2725+
RCTTypeSafety: 63ce4b1eaf1196e2466bc856509dd550b6a32d93
2726+
React: 0500cd170192670774f92a62bacba8825825a68b
2727+
React-callinvoker: 212b62ffad58cb8f928ef5aea8772a8dc2f3dc6a
2728+
React-Core: 91b714b00f56f261a758325d2cfaa8b53988235d
2729+
React-CoreModules: 784cf46a6319e8d9e38916dd4a46118850f49cd1
2730+
React-cxxreact: 5b326484e7e2db2d6a76ee30e703f0223a4664a3
2731+
React-debug: 33e83d615a872044346788eedf481b2f89bc5c16
2732+
React-defaultsnativemodule: aaa54bbe82d113a69d66688f20859c7c96249995
2733+
React-domnativemodule: 52646062bc03ae4188feb9da2b23dce75d6d3282
2734+
React-Fabric: defb6c7e76603a469b200bde5f2ef744b3e568ac
2735+
React-FabricComponents: 725346357ffed21be080fd54825927c2ee6d3249
2736+
React-FabricImage: 0fb76b6184e058a0f5e1a59d58afc43486682e79
2737+
React-featureflags: 3553a7f3bba77b7c02fe27d4cc60647263931d91
2738+
React-featureflagsnativemodule: ea24d4d7e25dff4fabee6c49769010d5b60ecce4
2739+
React-graphics: 30efc792304d0e31c9739367bdfb262a19ef5c8b
2740+
React-hermes: 187a5328d96013df211fb44de5e2eda768dd8f0e
2741+
React-idlecallbacksnativemodule: c4a7fa5ddb1d9d0d3d7187e33a9945807076b695
2742+
React-ImageManager: 49a4e3335b832d0f55cfe55ae4ca4a48d95cc6e0
2743+
React-jserrorhandler: 15ff6fb98256bb59d5d097881d88f17f05536365
2744+
React-jsi: 4eead55a44c6d5c6e6bef655c2eae293839c1ede
2745+
React-jsiexecutor: c624f623c31f4f329ff7c4e5be4139e7a7b3d9ac
2746+
React-jsinspector: 79df9db5ab95ad05076ffaf51b4729ea3b12d606
2747+
React-jsinspectorcdp: 33e84cf48ce158b594e7e255d98d9cbf40f41947
2748+
React-jsinspectornetwork: 3b3fe1821c5ead20a6a686a7ec06de41a5c3caff
2749+
React-jsinspectortracing: cc625529d61e6a814b676bc82046b986da246718
2750+
React-jsitooling: 26df3ab3b40407704019252f9cf67bacbf016ef8
2751+
React-jsitracing: e39d5e465b1f8527c8062465dd0efb0438d0b5a0
2752+
React-logger: 48a228dccb8a6a7d9f86aa00d425aabe20b9e275
2753+
React-Mapbuffer: 7167bd4ad48f52b7e44b0b1427adb59e7c895da0
2754+
React-microtasksnativemodule: b75d93ed4489961a11db9ed8e7d8381bf390bd99
2755+
React-NativeModulesApple: 511aca417adf49d139cdddb4f1ce5427b7b3fca9
2756+
React-oscompat: a6598f422952bcf27996ae7067df7e8b01abc71f
2757+
React-perflogger: a47864714a8270bc01d3061465795abbba45cb53
2758+
React-performancecdpmetrics: 1890225fb18b78ddc27136d9585a02f3790e4c9a
2759+
React-performancetimeline: 8f9a89ae7b208e12d2c3b43d11549d416c185d79
2760+
React-RCTActionSheet: 6c877447829e61e37548761f9dfafe7902603a87
2761+
React-RCTAnimation: c537e163b5e24104cdea3e524b9054c8f4256f60
2762+
React-RCTAppDelegate: 74dba4bf33b76d346c4baf70639e8a2c9a2e1d38
2763+
React-RCTBlob: 232a7941c00b04ef00b6e16801425b6f586b3463
2764+
React-RCTFabric: c816c5b06c5f9be414ba01e723dcf599cd10c19f
2765+
React-RCTFBReactNativeSpec: 05ceb804bc8852c3d44dff8fb3af4accca3dfa86
2766+
React-RCTImage: 0a4ca0d4134d8c7f34032c377a49be82907f246b
2767+
React-RCTLinking: 8216fb6e17b3540381cd0d85a461193d761a670a
2768+
React-RCTNetwork: d5cc894d3bcdf2db0081295534cc86456d798f8b
2769+
React-RCTPushNotification: 987b5e371ff95f0d7f51f66289a581f90adf7a48
2770+
React-RCTRuntime: 62f2fe09fafd29314eb221d67121ca279a24c076
2771+
React-RCTSettings: a363098638e936739fd281621def4f3773c41039
2772+
React-RCTTest: dc331be15ddd6d680f0a94d1c17284030e907f50
2773+
React-RCTText: ae8877bcd2a27b29ff88579b58d175c5bb705c83
2774+
React-RCTVibration: 8e8afa29ba0b6edac4a327ce3b44fa18e937624b
2775+
React-rendererconsistency: bad1492e2b61ff45c68173d7fa1089d75cb37698
2776+
React-renderercss: b66e56ada26ead487bc80302e80df0953a223ba0
2777+
React-rendererdebug: da1d7daf7c0da0ea248ebac904e4ecc6bcbb4730
2778+
React-RuntimeApple: b55d7f9129609325d84996478e11f223835bf971
2779+
React-RuntimeCore: 1c87bb449bec7edcdab87cf7bfbf44341337b997
2780+
React-runtimeexecutor: 238779d7ef73407e5e0e22e0fd660148eaa10ca9
2781+
React-RuntimeHermes: 265730b48fe985bd20688d360eaee29832d9443d
2782+
React-runtimescheduler: 0255d6b7c335eb0d3ce324b8b821ad0f108239c2
2783+
React-timing: 901538231635b97f9b731283397c7aa1e38b1799
2784+
React-utils: cb9fe1029aee8a97639a2bab53ed6783309b9724
2785+
ReactAppDependencyProvider: 4a88a4dba215dcf57781030a4cd261e34292591a
27852786
ReactCodegen: 5a2d9dbe44f2b16e06cbe68d2215d71776ae5c8b
2786-
ReactCommon: 0719018d963dccecd0044dc98f5e17bbe7c09740
2787-
ReactCommon-Samples: 93117c38e925bd281cda322931f96348262e5af8
2787+
ReactCommon: c3e96609ad3748f6622865bda47c3885a5bdb3cf
2788+
ReactCommon-Samples: 7fb22772fc242477ebfa9b9463b03eac8972c1a8
27882789
ScreenshotManager: 370045f403c555760ae26d85a01dda89d257fa7b
27892790
SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
2790-
Yoga: 074be093e7680cf5122ad47abf6a9786a17c0545
2791+
Yoga: a93a19576610e1deb0f6e6219879206424f425ee
27912792

27922793
PODFILE CHECKSUM: 995beda3236c2c76801e7a4efc7fedcd390220e6
27932794

packages/rn-tester/RNTester/AppDelegate.mm

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111

1212
#import <React/RCTBundleURLProvider.h>
1313
#import <React/RCTDefines.h>
14-
#import <React/RCTLinkingManager.h>
1514
#import <React/RCTDevMenu.h>
15+
#import <React/RCTLinkingManager.h>
1616
#import <ReactCommon/RCTSampleTurboModule.h>
1717
#import <ReactCommon/RCTTurboModuleManager.h>
1818

@@ -43,8 +43,10 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
4343
#if USE_OSS_CODEGEN
4444
self.dependencyProvider = [RCTAppDependencyProvider new];
4545
#endif
46-
47-
RCTDevMenuConfiguration *devMenuConfiguration = [[RCTDevMenuConfiguration alloc] initWithDevMenuEnabled:true shakeGestureEnabled:false keyboardShortcutsEnabled:false];
46+
47+
RCTDevMenuConfiguration *devMenuConfiguration = [[RCTDevMenuConfiguration alloc] initWithDevMenuEnabled:true
48+
shakeGestureEnabled:false
49+
keyboardShortcutsEnabled:false];
4850

4951
[self.reactNativeFactory setDevMenuConfiguration:devMenuConfiguration];
5052

0 commit comments

Comments
 (0)