diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultTurboModuleManagerDelegate.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultTurboModuleManagerDelegate.kt index a8644376293..71af0142cd6 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultTurboModuleManagerDelegate.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultTurboModuleManagerDelegate.kt @@ -47,20 +47,39 @@ private constructor( class Builder : ReactPackageTurboModuleManagerDelegate.Builder() { private var eagerInitModuleNames: List = emptyList() - private var cxxReactPackages: MutableList = mutableListOf() + private var cxxReactPackageProviders: + MutableList<((context: ReactApplicationContext) -> CxxReactPackage)> = + mutableListOf() fun setEagerInitModuleNames(eagerInitModuleNames: List): Builder { this.eagerInitModuleNames = eagerInitModuleNames return this } - fun addCxxReactPackage(cxxReactPackage: CxxReactPackage): Builder { - this.cxxReactPackages.add(cxxReactPackage) + fun addCxxReactPackage(provider: () -> CxxReactPackage): Builder { + this.cxxReactPackageProviders.add({ _ -> provider() }) return this } - override fun build(context: ReactApplicationContext, packages: List) = - DefaultTurboModuleManagerDelegate(context, packages, eagerInitModuleNames, cxxReactPackages) + fun addCxxReactPackage( + provider: (context: ReactApplicationContext) -> CxxReactPackage + ): Builder { + this.cxxReactPackageProviders.add(provider) + return this + } + + override fun build( + context: ReactApplicationContext, + packages: List + ): DefaultTurboModuleManagerDelegate { + val cxxReactPackages = mutableListOf() + for (cxxReactPackageProvider in cxxReactPackageProviders) { + cxxReactPackages.add(cxxReactPackageProvider(context)) + } + + return DefaultTurboModuleManagerDelegate( + context, packages, eagerInitModuleNames, cxxReactPackages) + } } companion object {