diff --git a/native/android/app/src/cpp/MessageOperationsUtilitiesJNIHelper.cpp b/native/android/app/src/cpp/MessageOperationsUtilitiesJNIHelper.cpp new file mode 100644 index 000000000..cf51cb2e4 --- /dev/null +++ b/native/android/app/src/cpp/MessageOperationsUtilitiesJNIHelper.cpp @@ -0,0 +1,23 @@ +#include "MessageOperationsUtilitiesJNIHelper.h" +#include "MessageOperationsUtilities.h" +#include "SQLiteQueryExecutor.h" + +namespace comm { +void MessageOperationsUtilitiesJNIHelper::storeMessageInfos( + facebook::jni::alias_ref jThis, + facebook::jni::JString sqliteFilePath, + facebook::jni::JString rawMessageInfosString) { + std::string sqliteFilePathCpp = sqliteFilePath.toStdString(); + std::string rawMessageInfosStringCpp = rawMessageInfosString.toStdString(); + SQLiteQueryExecutor::initialize(sqliteFilePathCpp); + MessageOperationsUtilities::storeMessageInfos(rawMessageInfosStringCpp); +} + +void MessageOperationsUtilitiesJNIHelper::registerNatives() { + javaClassStatic()->registerNatives({ + makeNativeMethod( + "storeMessageInfos", + MessageOperationsUtilitiesJNIHelper::storeMessageInfos), + }); +} +} // namespace comm diff --git a/native/android/app/src/cpp/jsiInstaller.cpp b/native/android/app/src/cpp/jsiInstaller.cpp index 89d283248..bda2c6c98 100644 --- a/native/android/app/src/cpp/jsiInstaller.cpp +++ b/native/android/app/src/cpp/jsiInstaller.cpp @@ -1,58 +1,60 @@ #include "CommCoreModule.h" #include "GlobalNetworkSingletonJNIHelper.h" +#include "MessageOperationsUtilitiesJNIHelper.h" #include "SQLiteQueryExecutor.h" #include "ThreadOperationsJNIHelper.h" #include "jniHelpers.h" #include #include #include namespace jni = facebook::jni; namespace jsi = facebook::jsi; namespace react = facebook::react; class CommHybrid : public jni::HybridClass { public: static auto constexpr kJavaDescriptor = "Lapp/comm/android/fbjni/CommHybrid;"; static void initHybrid( jni::alias_ref jThis, jlong jsContext, jni::alias_ref jsCallInvokerHolder, comm::HashMap additionalParameters) { jsi::Runtime *rt = (jsi::Runtime *)jsContext; auto jsCallInvoker = jsCallInvokerHolder->cthis()->getCallInvoker(); std::shared_ptr nativeModule = std::make_shared(jsCallInvoker); if (rt != nullptr) { rt->global().setProperty( *rt, jsi::PropNameID::forAscii(*rt, "CommCoreModule"), jsi::Object::createFromHostObject(*rt, nativeModule)); } jni::local_ref sqliteFilePathObj = additionalParameters.get("sqliteFilePath"); std::string sqliteFilePath = sqliteFilePathObj->toString(); comm::SQLiteQueryExecutor::initialize(sqliteFilePath); } static void registerNatives() { javaClassStatic()->registerNatives({ makeNativeMethod("initHybrid", CommHybrid::initHybrid), }); } private: friend HybridBase; }; JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *) { return jni::initialize(vm, [] { CommHybrid::registerNatives(); comm::GlobalNetworkSingletonJNIHelper::registerNatives(); comm::ThreadOperationsJNIHelper::registerNatives(); + comm::MessageOperationsUtilitiesJNIHelper::registerNatives(); }); } diff --git a/native/android/app/src/main/java/app/comm/android/fbjni/MessageOperationsUtilities.java b/native/android/app/src/main/java/app/comm/android/fbjni/MessageOperationsUtilities.java new file mode 100644 index 000000000..b4926ed75 --- /dev/null +++ b/native/android/app/src/main/java/app/comm/android/fbjni/MessageOperationsUtilities.java @@ -0,0 +1,6 @@ +package app.comm.android.fbjni; + +public class MessageOperationsUtilities { + public static native void + storeMessageInfos(String sqliteFilePath, String rawMessageInfosString); +} diff --git a/native/cpp/CommonCpp/NativeModules/PersistentStorageUtilities/MessageOperationsUtilities/MessageOperationsUtilitiesJNIHelper.h b/native/cpp/CommonCpp/NativeModules/PersistentStorageUtilities/MessageOperationsUtilities/MessageOperationsUtilitiesJNIHelper.h new file mode 100644 index 000000000..1feb43117 --- /dev/null +++ b/native/cpp/CommonCpp/NativeModules/PersistentStorageUtilities/MessageOperationsUtilities/MessageOperationsUtilitiesJNIHelper.h @@ -0,0 +1,18 @@ +#pragma once + +#include + +namespace comm { +class MessageOperationsUtilitiesJNIHelper + : public facebook::jni::JavaClass { +public: + static auto constexpr kJavaDescriptor = + "Lapp/comm/android/fbjni/MessageOperationsUtilities;"; + + static void storeMessageInfos( + facebook::jni::alias_ref jThis, + facebook::jni::JString sqliteFilePath, + facebook::jni::JString rawMessageInfosString); + static void registerNatives(); +}; +} // namespace comm