mirror of
https://github.com/status-im/react-native.git
synced 2025-01-26 09:19:10 +00:00
Added explicit init to observer modules
Summary: Modules which call JS methods directly, or use `sendDeviceEventWithName:`, can trigger effects in JS without ever being referenced from the JS code. This breaks some assumptions in my earlier diff about when modules can be lazily loaded. Pending a better solution, I've put explicit `init` methods in these modules to ensure they are eagerly initialized (the downside to this is that they'll still be initialized even if they are never used). Reviewed By: javache Differential Revision: D3258232 fb-gh-sync-id: f925bc2e5339c1fbfcc244d4613062c5ab848fc2 fbshipit-source-id: f925bc2e5339c1fbfcc244d4613062c5ab848fc2
This commit is contained in:
parent
a9a90aa2f0
commit
e72163f0f2
@ -21,6 +21,13 @@ NSString *const RCTOpenURLNotification = @"RCTOpenURLNotification";
|
||||
|
||||
RCT_EXPORT_MODULE()
|
||||
|
||||
- (instancetype)init
|
||||
{
|
||||
// We're only overriding this to ensure the module gets created at startup
|
||||
// TODO (t11106126): Remove once we have more declarative control over module setup.
|
||||
return [super init];
|
||||
}
|
||||
|
||||
- (void)setBridge:(RCTBridge *)bridge
|
||||
{
|
||||
_bridge = bridge;
|
||||
|
@ -59,10 +59,20 @@ RCT_EXPORT_MODULE()
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
}
|
||||
|
||||
- (instancetype)init
|
||||
{
|
||||
// We're only overriding this to ensure the module gets created at startup
|
||||
// TODO (t11106126): Remove once we have more declarative control over module setup.
|
||||
return [super init];
|
||||
}
|
||||
|
||||
- (void)setBridge:(RCTBridge *)bridge
|
||||
{
|
||||
_bridge = bridge;
|
||||
|
||||
// TODO: if we add an explicit "startObserving" method, we can take this out
|
||||
// of the application startup path
|
||||
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||
selector:@selector(handleLocalNotificationReceived:)
|
||||
name:RCTLocalNotificationReceived
|
||||
|
@ -303,7 +303,7 @@ RCT_EXTERN NSArray<Class> *RCTGetModuleClasses(void);
|
||||
|
||||
// The executor is a bridge module, but we want it to be instantiated before
|
||||
// any other module has access to the bridge, in case they need the JS thread.
|
||||
// TODO: once we have more fine-grained control of init (D3175632) we can
|
||||
// TODO: once we have more fine-grained control of init (t11106126) we can
|
||||
// probably just replace this with [self moduleForClass:self.executorClass]
|
||||
if (!_javaScriptExecutor) {
|
||||
id<RCTJavaScriptExecutor> executorModule = [self.executorClass new];
|
||||
|
@ -19,6 +19,13 @@ static NSDictionary *RCTParseKeyboardNotification(NSNotification *notification);
|
||||
|
||||
RCT_EXPORT_MODULE()
|
||||
|
||||
- (instancetype)init
|
||||
{
|
||||
// We're only overriding this to ensure the module gets created at startup
|
||||
// TODO (t11106126): Remove once we have more declarative control over module setup.
|
||||
return [super init];
|
||||
}
|
||||
|
||||
- (void)setBridge:(RCTBridge *)bridge
|
||||
{
|
||||
_bridge = bridge;
|
||||
|
@ -116,6 +116,13 @@ RCT_EXPORT_MODULE()
|
||||
|
||||
@synthesize bridge = _bridge;
|
||||
|
||||
- (instancetype)init
|
||||
{
|
||||
// We're only overriding this to ensure the module gets created at startup
|
||||
// TODO (t11106126): Remove once we have more declarative control over module setup.
|
||||
return [super init];
|
||||
}
|
||||
|
||||
- (void)setBridge:(RCTBridge *)bridge
|
||||
{
|
||||
_bridge = bridge;
|
||||
|
@ -43,7 +43,7 @@ RCT_EXPORT_MODULE()
|
||||
- (instancetype)init
|
||||
{
|
||||
// We're only overriding this to ensure the module gets created at startup
|
||||
// TODO (D3175632): Remove once we have more declarative control over module setup.
|
||||
// TODO (t11106126): Remove once we have more declarative control over module setup.
|
||||
return [super init];
|
||||
}
|
||||
|
||||
|
@ -46,10 +46,20 @@ RCT_EXPORT_MODULE()
|
||||
|
||||
@synthesize bridge = _bridge;
|
||||
|
||||
- (instancetype)init
|
||||
{
|
||||
// We're only overriding this to ensure the module gets created at startup
|
||||
// TODO (t11106126): Remove once we have more declarative control over module setup.
|
||||
return [super init];
|
||||
}
|
||||
|
||||
- (void)setBridge:(RCTBridge *)bridge
|
||||
{
|
||||
_bridge = bridge;
|
||||
|
||||
// TODO: if we add an explicit "startObserving" method, we can take this out
|
||||
// of the application startup path
|
||||
|
||||
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
|
||||
[nc addObserver:self selector:@selector(applicationDidChangeStatusBarFrame:) name:UIApplicationDidChangeStatusBarFrameNotification object:nil];
|
||||
[nc addObserver:self selector:@selector(applicationWillChangeStatusBarFrame:) name:UIApplicationWillChangeStatusBarFrameNotification object:nil];
|
||||
|
@ -128,7 +128,7 @@ RCT_EXPORT_MODULE()
|
||||
- (instancetype)init
|
||||
{
|
||||
// We're only overriding this to ensure the module gets created at startup
|
||||
// TODO (D3175632): Remove once we have more declarative control over module setup.
|
||||
// TODO (t11106126): Remove once we have more declarative control over module setup.
|
||||
return [super init];
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user