From b5f90ed497069481c4cbb3a52eaeb87567abd272 Mon Sep 17 00:00:00 2001 From: Dmitry Zakharov Date: Tue, 17 Apr 2018 07:53:19 -0700 Subject: [PATCH] Update ModuleRegistry if there're new modules registered Reviewed By: fkgozali Differential Revision: D7638394 fbshipit-source-id: c1690da7977f0335bc661df5f19dc9f473150d41 --- React/CxxBridge/RCTCxxBridge.mm | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/React/CxxBridge/RCTCxxBridge.mm b/React/CxxBridge/RCTCxxBridge.mm index cd82c3ccd85..2517e294919 100644 --- a/React/CxxBridge/RCTCxxBridge.mm +++ b/React/CxxBridge/RCTCxxBridge.mm @@ -305,7 +305,7 @@ struct RCTInstanceCallback : public InstanceCallback { [self registerExtraModules]; // Initialize all native modules that cannot be loaded lazily - [self _initModules:RCTGetModuleClasses() withDispatchGroup:prepareBridge lazilyDiscovered:NO]; + (void)[self _initializeModules:RCTGetModuleClasses() withDispatchGroup:prepareBridge lazilyDiscovered:NO]; [_performanceLogger markStopForTag:RCTPLNativeModuleInit]; @@ -635,9 +635,9 @@ struct RCTInstanceCallback : public InstanceCallback { } } -- (void)_initModules:(NSArray> *)modules - withDispatchGroup:(dispatch_group_t)dispatchGroup - lazilyDiscovered:(BOOL)lazilyDiscovered +- (NSArray *)_initializeModules:(NSArray> *)modules + withDispatchGroup:(dispatch_group_t)dispatchGroup + lazilyDiscovered:(BOOL)lazilyDiscovered { RCTAssert(!(RCTIsMainQueue() && lazilyDiscovered), @"Lazy discovery can only happen off the Main Queue"); @@ -688,11 +688,15 @@ struct RCTInstanceCallback : public InstanceCallback { RCTProfileHookModules(self); } #endif + return moduleDataById; } - (void)registerAdditionalModuleClasses:(NSArray *)modules { - [self _initModules:modules withDispatchGroup:NULL lazilyDiscovered:YES]; + NSArray *newModules = [self _initializeModules:modules withDispatchGroup:NULL lazilyDiscovered:YES]; + if (_reactInstance) { + _reactInstance->getModuleRegistry().registerModules(createNativeModules(newModules, self, _reactInstance)); + } } - (void)_prepareModulesWithDispatchGroup:(dispatch_group_t)dispatchGroup