Skip to content

Commit d8884c2

Browse files
committed
[TurboModule] Add the C++ implementation for MainApplicationTurboModuleManagerDelegate
1 parent f6d2e81 commit d8884c2

5 files changed

+98
-0
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#include "MainApplicationModuleProvider.h"
2+
3+
#include <rncore.h>
4+
#include <answersolver.h>
5+
6+
namespace facebook {
7+
namespace react {
8+
9+
std::shared_ptr<TurboModule> MainApplicationModuleProvider(const std::string moduleName, const JavaTurboModule::InitParams &params) {
10+
auto module = answersolver_ModuleProvider(moduleName, params);
11+
if (module != nullptr) {
12+
return module;
13+
}
14+
15+
return rncore_ModuleProvider(moduleName, params);
16+
}
17+
18+
} // namespace react
19+
} // namespace facebook
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#pragma once
2+
3+
#include <memory>
4+
#include <string>
5+
6+
#include <ReactCommon/JavaTurboModule.h>
7+
8+
namespace facebook {
9+
namespace react {
10+
11+
std::shared_ptr<TurboModule> MainApplicationModuleProvider(const std::string moduleName, const JavaTurboModule::InitParams &params);
12+
13+
} // namespace react
14+
} // namespace facebook
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#include "MainApplicationTurboModuleManagerDelegate.h"
2+
#include "MainApplicationModuleProvider.h"
3+
4+
namespace facebook {
5+
namespace react {
6+
7+
jni::local_ref<MainApplicationTurboModuleManagerDelegate::jhybriddata> MainApplicationTurboModuleManagerDelegate::initHybrid(jni::alias_ref<jhybridobject>) {
8+
return makeCxxInstance();
9+
}
10+
11+
void MainApplicationTurboModuleManagerDelegate::registerNatives() {
12+
registerHybrid({
13+
makeNativeMethod("initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid),
14+
});
15+
}
16+
17+
std::shared_ptr<TurboModule> MainApplicationTurboModuleManagerDelegate::getTurboModule(const std::string name, const std::shared_ptr<CallInvoker> jsInvoker) {
18+
// Not implemented yet: provide pure-C++ NativeModules here.
19+
return nullptr;
20+
}
21+
22+
std::shared_ptr<TurboModule> MainApplicationTurboModuleManagerDelegate::getTurboModule(const std::string name, const JavaTurboModule::InitParams &params) {
23+
return MainApplicationModuleProvider(name, params);
24+
}
25+
26+
} // namespace react
27+
} // namespace facebook
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
#include <memory>
2+
#include <string>
3+
4+
#include <ReactCommon/TurboModuleManagerDelegate.h>
5+
#include <fbjni/fbjni.h>
6+
7+
namespace facebook {
8+
namespace react {
9+
10+
class MainApplicationTurboModuleManagerDelegate : public jni::HybridClass<MainApplicationTurboModuleManagerDelegate, TurboModuleManagerDelegate> {
11+
public:
12+
// Adapt it to the package you used for your Java class.
13+
static constexpr auto kJavaDescriptor =
14+
"Lcom/rnnewarchitectureapp/modules/MainApplicationTurboModuleManagerDelegate;";
15+
16+
static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject>);
17+
18+
static void registerNatives();
19+
20+
std::shared_ptr<TurboModule> getTurboModule(const std::string name, const std::shared_ptr<CallInvoker> jsInvoker) override;
21+
std::shared_ptr<TurboModule> getTurboModule(const std::string name, const JavaTurboModule::InitParams &params) override;
22+
23+
private:
24+
friend HybridBase;
25+
using HybridBase::HybridBase;
26+
27+
};
28+
29+
} // namespace react
30+
} // namespace facebook

android/app/src/main/jni/OnLoad.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#include <fbjni/fbjni.h>
2+
#include "MainApplicationTurboModuleManagerDelegate.h"
3+
4+
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
5+
return facebook::jni::initialize(vm, [] {
6+
facebook::react::MainApplicationTurboModuleManagerDelegate::registerNatives();
7+
});
8+
}

0 commit comments

Comments
 (0)