diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultJSIModulePackage.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultJSIModulePackage.kt deleted file mode 100644 index f1328997c84..00000000000 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultJSIModulePackage.kt +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -package com.facebook.react.defaults - -import com.facebook.react.ReactNativeHost -import com.facebook.react.bridge.JSIModulePackage -import com.facebook.react.bridge.JSIModuleProvider -import com.facebook.react.bridge.JSIModuleSpec -import com.facebook.react.bridge.JSIModuleType -import com.facebook.react.bridge.JavaScriptContextHolder -import com.facebook.react.bridge.ReactApplicationContext -import com.facebook.react.bridge.UIManager -import com.facebook.react.fabric.ComponentFactory -import com.facebook.react.fabric.FabricJSIModuleProvider -import com.facebook.react.fabric.ReactNativeConfig -import com.facebook.react.uimanager.ViewManagerRegistry - -/** - * A utility class that allows users to create a JSIModulePackage to use Fabric. This essentially - * allows users to just provide C++ implementation for the methods of `DefaultComponentsRegistry` - * without providing all the extra machinery for the New Architecture. - * - * `ReactNativeHost` is required to create Fabric's ViewManagers. - */ -class DefaultJSIModulePackage(private val reactNativeHost: ReactNativeHost) : JSIModulePackage { - - override fun getJSIModules( - reactApplicationContext: ReactApplicationContext, - jsContext: JavaScriptContextHolder - ): List> = - listOf>(JSIModuleForFabric(reactApplicationContext, reactNativeHost)) - - private inner class JSIModuleForFabric( - private val reactApplicationContext: ReactApplicationContext, - private val reactNativeHost: ReactNativeHost - ) : JSIModuleSpec { - override fun getJSIModuleType(): JSIModuleType = JSIModuleType.UIManager - - override fun getJSIModuleProvider(): JSIModuleProvider { - val componentFactory = ComponentFactory() - - DefaultComponentsRegistry.register(componentFactory) - - val viewManagers = - reactNativeHost.reactInstanceManager.getOrCreateViewManagers(reactApplicationContext) - val viewManagerRegistry = ViewManagerRegistry(viewManagers) - return FabricJSIModuleProvider( - reactApplicationContext, - componentFactory, - ReactNativeConfig.DEFAULT_CONFIG, - viewManagerRegistry) - } - } -} diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactNativeHost.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactNativeHost.kt index 77cc1a7d1de..35d09cb6872 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactNativeHost.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultReactNativeHost.kt @@ -11,9 +11,19 @@ import android.app.Application import android.content.Context import com.facebook.react.JSEngineResolutionAlgorithm import com.facebook.react.ReactHost +import com.facebook.react.ReactInstanceManager import com.facebook.react.ReactNativeHost import com.facebook.react.ReactPackageTurboModuleManagerDelegate import com.facebook.react.bridge.JSIModulePackage +import com.facebook.react.bridge.JSIModuleProvider +import com.facebook.react.bridge.JSIModuleSpec +import com.facebook.react.bridge.JSIModuleType +import com.facebook.react.bridge.ReactApplicationContext +import com.facebook.react.bridge.UIManager +import com.facebook.react.fabric.ComponentFactory +import com.facebook.react.fabric.FabricJSIModuleProvider +import com.facebook.react.fabric.ReactNativeConfig +import com.facebook.react.uimanager.ViewManagerRegistry /** * A utility class that allows you to simplify the setup of a [ReactNativeHost] for new apps in Open @@ -38,7 +48,29 @@ protected constructor( override fun getJSIModulePackage(): JSIModulePackage? = if (isNewArchEnabled) { - DefaultJSIModulePackage(this) + JSIModulePackage { reactApplicationContext: ReactApplicationContext, _ -> + listOf( + object : JSIModuleSpec { + override fun getJSIModuleType(): JSIModuleType = JSIModuleType.UIManager + + override fun getJSIModuleProvider(): JSIModuleProvider { + val componentFactory = ComponentFactory() + + DefaultComponentsRegistry.register(componentFactory) + + val reactInstanceManager: ReactInstanceManager = getReactInstanceManager() + + val viewManagers = + reactInstanceManager.getOrCreateViewManagers(reactApplicationContext) + val viewManagerRegistry = ViewManagerRegistry(viewManagers) + return FabricJSIModuleProvider( + reactApplicationContext, + componentFactory, + ReactNativeConfig.DEFAULT_CONFIG, + viewManagerRegistry) + } + }) + } } else { null }