diff --git a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp index cfc5e37d310..acaae54701e 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp +++ b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManager.cpp @@ -84,7 +84,7 @@ void TurboModuleManager::installJSIBindings() { auto moduleInstance = getJavaModule(javaPart_.get(), name); if (moduleInstance) { - auto turboModule = delegate_->cthis()->getTurboModule(name, moduleInstance, jsCallInvoker_); + auto turboModule = delegate_->cthis()->getTurboModule(name, moduleInstance, jsCallInvoker_, nativeCallInvoker_); turboModuleCache_.insert({name, turboModule}); return turboModule; } diff --git a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManagerDelegate.h b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManagerDelegate.h index b8c7d5718f2..aa271eb7b60 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManagerDelegate.h +++ b/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni/ReactCommon/TurboModuleManagerDelegate.h @@ -20,7 +20,7 @@ class TurboModuleManagerDelegate : public jni::HybridClass getTurboModule(std::string name, jni::alias_ref turboModule, std::shared_ptr jsInvoker) = 0; + virtual std::shared_ptr getTurboModule(std::string name, jni::alias_ref turboModule, std::shared_ptr jsInvoker, std::shared_ptr nativeInvoker) = 0; virtual std::shared_ptr getTurboModule(std::string name, std::shared_ptr jsInvoker) = 0; private: diff --git a/ReactCommon/turbomodule/core/platform/android/JavaTurboModule.cpp b/ReactCommon/turbomodule/core/platform/android/JavaTurboModule.cpp index ce7e0d2a01f..7573893de9d 100644 --- a/ReactCommon/turbomodule/core/platform/android/JavaTurboModule.cpp +++ b/ReactCommon/turbomodule/core/platform/android/JavaTurboModule.cpp @@ -26,8 +26,11 @@ namespace react { JavaTurboModule::JavaTurboModule( const std::string &name, jni::alias_ref instance, - std::shared_ptr jsInvoker) - : TurboModule(name, jsInvoker), instance_(jni::make_global(instance)) {} + std::shared_ptr jsInvoker, + std::shared_ptr nativeInvoker) + : TurboModule(name, jsInvoker), + instance_(jni::make_global(instance)), + nativeInvoker_(nativeInvoker) {} jni::local_ref JavaTurboModule::createJavaCallbackFromJSIFunction( diff --git a/ReactCommon/turbomodule/core/platform/android/JavaTurboModule.h b/ReactCommon/turbomodule/core/platform/android/JavaTurboModule.h index 90056eb3c73..a4a970e46c5 100644 --- a/ReactCommon/turbomodule/core/platform/android/JavaTurboModule.h +++ b/ReactCommon/turbomodule/core/platform/android/JavaTurboModule.h @@ -29,7 +29,8 @@ class JSI_EXPORT JavaTurboModule : public TurboModule { JavaTurboModule( const std::string &name, jni::alias_ref instance, - std::shared_ptr jsInvoker); + std::shared_ptr jsInvoker, + std::shared_ptr nativeInvoker); jsi::Value invokeJavaMethod( jsi::Runtime &runtime, TurboModuleMethodValueKind valueKind, @@ -48,6 +49,7 @@ class JSI_EXPORT JavaTurboModule : public TurboModule { private: jni::global_ref instance_; std::unordered_set> callbackWrappers_; + std::shared_ptr nativeInvoker_; /** * This method must be called from the JS Thread, since it accesses