mirror of
https://github.com/oxen-io/session-android.git
synced 2023-12-14 02:53:01 +01:00
34 lines
1.6 KiB
C++
34 lines
1.6 KiB
C++
#ifndef SESSION_ANDROID_CONFIG_BASE_H
|
|
#define SESSION_ANDROID_CONFIG_BASE_H
|
|
|
|
#include "session/config/base.hpp"
|
|
#include "util.h"
|
|
#include <jni.h>
|
|
#include <string>
|
|
|
|
inline session::config::ConfigBase* ptrToConfigBase(JNIEnv *env, jobject obj) {
|
|
jclass baseClass = env->FindClass("network/loki/messenger/libsession_util/ConfigBase");
|
|
jfieldID pointerField = env->GetFieldID(baseClass, "pointer", "J");
|
|
return (session::config::ConfigBase*) env->GetLongField(obj, pointerField);
|
|
}
|
|
|
|
inline std::pair<std::string, session::ustring> extractHashAndData(JNIEnv *env, jobject kotlin_pair) {
|
|
jclass pair = env->FindClass("kotlin/Pair");
|
|
jfieldID first = env->GetFieldID(pair, "first", "Ljava/lang/Object;");
|
|
jfieldID second = env->GetFieldID(pair, "second", "Ljava/lang/Object;");
|
|
jstring hash_as_jstring = static_cast<jstring>(env->GetObjectField(kotlin_pair, first));
|
|
jbyteArray data_as_jbytes = static_cast<jbyteArray>(env->GetObjectField(kotlin_pair, second));
|
|
auto hash_as_string = env->GetStringUTFChars(hash_as_jstring, nullptr);
|
|
auto data_as_ustring = util::ustring_from_bytes(env, data_as_jbytes);
|
|
auto ret_pair = std::pair<std::string, session::ustring>{hash_as_string, data_as_ustring};
|
|
env->ReleaseStringUTFChars(hash_as_jstring, hash_as_string);
|
|
return ret_pair;
|
|
}
|
|
|
|
inline session::config::ConfigSig* ptrToConfigSig(JNIEnv* env, jobject obj) {
|
|
jclass sigClass = env->FindClass("network/loki/messenger/libsession_util/ConfigSig");
|
|
jfieldID pointerField = env->GetFieldID(sigClass, "pointer", "J");
|
|
return (session::config::ConfigSig*) env->GetLongField(obj, pointerField);
|
|
}
|
|
|
|
#endif |