Initialize TurboModules after creation

Summary:
When `ModuleHolder` instantiates `NativeModules`, it calls the `initialize()` method. We should replicate this call in the TurboModule system.

`NativeModule.initialize()` is meant to be called after ReactApplicationContext is initialized. TurboModuleManager is initialized after ReactApplicationContext is initialized. Therefore, after we create the TurboModule, it should be safe to call `initialize()` on it.

Reviewed By: mdvacca

Differential Revision: D15711540

fbshipit-source-id: c2ef1a2ab164996bfc5716d81b3b3c716bf0e120
This commit is contained in:
Ramanpreet Nara
2019-06-07 13:11:55 -07:00
committed by Facebook Github Bot
parent 97d439e0ba
commit e5a8e3a53e
@@ -12,6 +12,7 @@ import com.facebook.proguard.annotations.DoNotStrip;
import com.facebook.react.bridge.CatalystInstance;
import com.facebook.react.bridge.JSIModule;
import com.facebook.react.bridge.JavaScriptContextHolder;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.queue.MessageQueueThread;
import com.facebook.react.turbomodule.core.interfaces.JSCallInvokerHolder;
@@ -53,6 +54,12 @@ public class TurboModuleManager implements JSIModule, TurboModuleRegistry {
final TurboModule turboModule = mTurbomoduleManagerDelegate.getModule(name);
if (turboModule != null) {
/**
* TurboModuleManager is initialized after ReactApplicationContext has been setup.
* Therefore, it's safe to call initialize on the TurboModule.
*/
((NativeModule)turboModule).initialize();
mTurboModules.put(name, turboModule);
}
}