Skip to content

Commit c3a7ce3

Browse files
vzaidmanmeta-codesync[bot]
authored andcommitted
Back out + fix of Back out "[react-native][PR] Expose adding handlers API from RCTDevSettings" (#54723)
Summary: Pull Request resolved: #54723 Changelog: [iOS][Fixed] - Fixed crashing due to FastRefresh not being initialized for non debug builds with RCT_DEV_MENU=1 Reviewed By: robhogan Differential Revision: D87982434 fbshipit-source-id: 0832ba02e0b82a1932b8532dc2874b48d33de66d
1 parent e02990c commit c3a7ce3

File tree

2 files changed

+54
-4
lines changed

2 files changed

+54
-4
lines changed

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

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,12 @@
1111
#import <React/RCTEventEmitter.h>
1212
#import <React/RCTInitializing.h>
1313

14+
@class RCTPackagerClientResponder;
15+
typedef uint32_t RCTHandlerToken;
16+
typedef void (^RCTNotificationHandler)(NSDictionary<NSString *, id> *);
17+
typedef void (^RCTRequestHandler)(NSDictionary<NSString *, id> *, RCTPackagerClientResponder *);
18+
typedef void (^RCTConnectedHandler)(void);
19+
1420
@class RCTPackagerConnection;
1521

1622
@protocol RCTPackagerClientMethod;
@@ -108,7 +114,30 @@
108114

109115
#if RCT_DEV_MENU
110116
- (void)addHandler:(id<RCTPackagerClientMethod>)handler
111-
forPackagerMethod:(NSString *)name __deprecated_msg("Use RCTPackagerConnection directly instead");
117+
forPackagerMethod:(NSString *)name __deprecated_msg("Use addRequestHandler or addNotificationHandler instead");
118+
#endif
119+
120+
#if RCT_DEV
121+
/**
122+
* Registers a handler for a notification broadcast from the packager. An
123+
* example is "reload" - an instruction to reload from the packager.
124+
* If multiple notification handlers are registered for the same method, they
125+
* will all be invoked sequentially.
126+
*/
127+
- (RCTHandlerToken)addNotificationHandler:(RCTNotificationHandler)handler
128+
queue:(dispatch_queue_t)queue
129+
forMethod:(NSString *)method;
130+
131+
/**
132+
* Registers a handler for a request from the packager. An example is
133+
* pokeSamplingProfiler; it asks for profile data from the client.
134+
* Only one handler can be registered for a given method; calling this
135+
* displaces any previous request handler registered for that method.
136+
*/
137+
- (RCTHandlerToken)addRequestHandler:(RCTRequestHandler)handler
138+
queue:(dispatch_queue_t)queue
139+
forMethod:(NSString *)method;
140+
112141
#endif
113142

114143
@end

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

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -190,15 +190,15 @@ - (void)initialize
190190

191191
#if RCT_DEV_SETTINGS_ENABLE_PACKAGER_CONNECTION
192192
if (numInitializedModules++ == 0) {
193-
reloadToken = [_packagerConnection
193+
reloadToken = [self
194194
addNotificationHandler:^(id params) {
195195
RCTTriggerReloadCommandListeners(@"Global hotkey");
196196
}
197197
queue:dispatch_get_main_queue()
198198
forMethod:@"reload"];
199199
#if RCT_DEV_MENU
200200
__weak __typeof(self) weakSelf = self;
201-
devMenuToken = [_packagerConnection
201+
devMenuToken = [self
202202
addNotificationHandler:^(id params) {
203203
__typeof(self) strongSelf = weakSelf;
204204
if (strongSelf == nullptr) {
@@ -437,6 +437,23 @@ - (void)setExecutorClass:(Class)executorClass
437437
}
438438
}
439439

440+
#if RCT_DEV
441+
- (RCTHandlerToken)addNotificationHandler:(RCTNotificationHandler)handler
442+
queue:(dispatch_queue_t)queue
443+
forMethod:(NSString *)method
444+
{
445+
return [_packagerConnection addNotificationHandler:handler queue:queue forMethod:method];
446+
}
447+
448+
- (RCTHandlerToken)addRequestHandler:(RCTRequestHandler)handler
449+
queue:(dispatch_queue_t)queue
450+
forMethod:(NSString *)method
451+
{
452+
return [_packagerConnection addRequestHandler:handler queue:queue forMethod:method];
453+
}
454+
455+
#endif
456+
440457
- (void)addHandler:(id<RCTPackagerClientMethod>)handler forPackagerMethod:(NSString *)name
441458
{
442459
#if RCT_DEV_SETTINGS_ENABLE_PACKAGER_CONNECTION
@@ -527,7 +544,7 @@ - (void)jsLoaded:(NSNotification *)notification
527544

528545
@end
529546

530-
#else // #if RCT_DEV_MENU
547+
#else // #if RCT_DEV_MENU || RCT_REMOTE_PROFILE
531548

532549
@interface RCTDevSettings () <NativeDevSettingsSpec>
533550
@end
@@ -593,6 +610,10 @@ - (void)setIsShakeToShowDevMenuEnabled:(BOOL)enabled
593610
return std::make_shared<facebook::react::NativeDevSettingsSpecJSI>(params);
594611
}
595612

613+
- (void)addHandler:(id<RCTPackagerClientMethod>)handler forPackagerMethod:(NSString *)name
614+
{
615+
}
616+
596617
@end
597618

598619
#endif // #if RCT_DEV_MENU

0 commit comments

Comments
 (0)