1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #include "MainComponentsRegistry.h"
-
- #include <CoreComponentsRegistry.h>
- #include <fbjni/fbjni.h>
- #include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
- #include <react/renderer/components/rncore/ComponentDescriptors.h>
- #include <rncli.h>
-
- namespace facebook {
- namespace react {
-
- MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}
-
- std::shared_ptr<ComponentDescriptorProviderRegistry const>
- MainComponentsRegistry::sharedProviderRegistry() {
- auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();
-
- // Autolinked providers registered by RN CLI
- rncli_registerProviders(providerRegistry);
-
- // Custom Fabric Components go here. You can register custom
- // components coming from your App or from 3rd party libraries here.
- //
- // providerRegistry->add(concreteComponentDescriptorProvider<
- // AocViewerComponentDescriptor>());
- return providerRegistry;
- }
-
- jni::local_ref<MainComponentsRegistry::jhybriddata>
- MainComponentsRegistry::initHybrid(
- jni::alias_ref<jclass>,
- ComponentFactory *delegate) {
- auto instance = makeCxxInstance(delegate);
-
- auto buildRegistryFunction =
- [](EventDispatcher::Weak const &eventDispatcher,
- ContextContainer::Shared const &contextContainer)
- -> ComponentDescriptorRegistry::Shared {
- auto registry = MainComponentsRegistry::sharedProviderRegistry()
- ->createComponentDescriptorRegistry(
- {eventDispatcher, contextContainer});
-
- auto mutableRegistry =
- std::const_pointer_cast<ComponentDescriptorRegistry>(registry);
-
- mutableRegistry->setFallbackComponentDescriptor(
- std::make_shared<UnimplementedNativeViewComponentDescriptor>(
- ComponentDescriptorParameters{
- eventDispatcher, contextContainer, nullptr}));
-
- return registry;
- };
-
- delegate->buildRegistryFunction = buildRegistryFunction;
- return instance;
- }
-
- void MainComponentsRegistry::registerNatives() {
- registerHybrid({
- makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid),
- });
- }
-
- } // namespace react
- } // namespace facebook
|