diff --git a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/jsireact/TurboModuleManager.cpp b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/jsireact/TurboModuleManager.cpp index 995d274dda0..0a7854f93ab 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/jsireact/TurboModuleManager.cpp +++ b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/jsireact/TurboModuleManager.cpp @@ -12,7 +12,7 @@ #include #include - +#include #include #include "TurboModuleManager.h" @@ -55,13 +55,18 @@ void TurboModuleManager::installJSIBindings() { return; // Runtime doesn't exist when attached to Chrome debugger. } TurboModuleBinding::install(*runtime_, std::make_shared( - [this](const std::string &name) { + [this](const std::string &name) -> std::shared_ptr { auto cxxModule = turboModuleManagerDelegate_->cthis()->getTurboModule(name, jsCallInvoker_); if (cxxModule) { return cxxModule; } - const auto moduleInstance = getJavaModule(name); + auto legacyCxxModule = getLegacyCxxJavaModule(name); + if (legacyCxxModule) { + return std::make_shared(legacyCxxModule->cthis()->getModule(), jsCallInvoker_); + } + + auto moduleInstance = getJavaModule(name); if (moduleInstance) { return turboModuleManagerDelegate_->cthis()->getTurboModule(name, moduleInstance, jsCallInvoker_); @@ -80,5 +85,11 @@ jni::global_ref TurboModuleManager::getJavaModule(std::string name return module; } +jni::global_ref TurboModuleManager::getLegacyCxxJavaModule(std::string name) { + static auto method = turboModuleManagerDelegate_->getClass()->getMethod(const std::string&)>("getLegacyCxxModule"); + auto module = jni::make_global(method(turboModuleManagerDelegate_.get(), name)); + return module; +} + } // namespace react } // namespace facebook diff --git a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/jsireact/TurboModuleManager.h b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/jsireact/TurboModuleManager.h index 305b3b18594..fbb29834e0c 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/jsireact/TurboModuleManager.h +++ b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/jsireact/TurboModuleManager.h @@ -12,6 +12,7 @@ #include #include #include +#include #include #include #include @@ -37,6 +38,7 @@ private: jni::global_ref turboModuleManagerDelegate_; jni::global_ref getJavaModule(std::string name); + jni::global_ref getLegacyCxxJavaModule(std::string name); void installJSIBindings(); explicit TurboModuleManager( jni::alias_ref jThis,