feat: add base wrappers to the remaining group configs

This commit is contained in:
0x330a
2023-08-25 17:37:16 +10:00
parent efc88b45bb
commit bf4ef68728
10 changed files with 82 additions and 40 deletions

View File

@@ -581,4 +581,12 @@ class InstrumentedTests {
)
}
@Test
fun testGroupInfo() {
val (public, secret) = keyPair
val conf = GroupInfoConfig.newInstance(public, secret)
conf.setName("New Group")
assertEquals("New Group", conf.getName())
}
}

View File

@@ -31,6 +31,8 @@ set(SOURCES
contacts.cpp
conversation.cpp
util.cpp
group_members.cpp
group_keys.cpp
group_info.cpp)
add_library( # Sets the name of the library.

View File

@@ -2,48 +2,26 @@
#include "group_info.h"
#include "session/config/groups/info.hpp"
extern "C"
JNIEXPORT jobject JNICALL
Java_network_loki_messenger_libsession_1util_GroupInfoConfig_00024Companion_newInstance___3B(
JNIEnv *env, jobject thiz, jbyteArray pub_key) {
std::lock_guard guard{util::util_mutex_};
auto pub_key_bytes = util::ustring_from_bytes(env, pub_key);
auto* group_info = new session::config::groups::Info(pub_key_bytes, std::nullopt, std::nullopt);
jclass groupInfoClass = env->FindClass("network/loki/messenger/libsession_util/GroupInfoConfig");
jmethodID constructor = env->GetMethodID(groupInfoClass, "<init>", "(J)V");
jobject newConfig = env->NewObject(groupInfoClass, constructor, reinterpret_cast<jlong>(group_info));
return newConfig;
}
extern "C"
JNIEXPORT jobject JNICALL
Java_network_loki_messenger_libsession_1util_GroupInfoConfig_00024Companion_newInstance___3B_3B(
JNIEnv *env, jobject thiz, jbyteArray pub_key, jbyteArray secret_key) {
std::lock_guard guard{util::util_mutex_};
auto pub_key_bytes = util::ustring_from_bytes(env, pub_key);
auto secret_key_bytes = util::ustring_from_bytes(env, secret_key);
auto* group_info = new session::config::groups::Info(pub_key_bytes, secret_key_bytes, std::nullopt);
jclass groupInfoClass = env->FindClass("network/loki/messenger/libsession_util/GroupInfoConfig");
jmethodID constructor = env->GetMethodID(groupInfoClass, "<init>", "(J)V");
jobject newConfig = env->NewObject(groupInfoClass, constructor, reinterpret_cast<jlong>(group_info));
return newConfig;
}
extern "C"
JNIEXPORT jobject JNICALL
Java_network_loki_messenger_libsession_1util_GroupInfoConfig_00024Companion_newInstance___3B_3B_3B(
JNIEnv *env, jobject thiz, jbyteArray pub_key, jbyteArray secret_key,
jbyteArray initial_dump) {
std::lock_guard guard{util::util_mutex_};
std::optional<session::ustring> secret_key_optional;
std::optional<session::ustring> initial_dump_optional;
auto pub_key_bytes = util::ustring_from_bytes(env, pub_key);
auto secret_key_bytes = util::ustring_from_bytes(env, secret_key);
if (secret_key != nullptr) {
auto secret_key_bytes = util::ustring_from_bytes(env, secret_key);
secret_key_optional = std::optional{secret_key_bytes};
}
if (pub_key != nullptr) {
auto initial_dump_bytes = util::ustring_from_bytes(env, initial_dump);
initial_dump_optional = std::optional{initial_dump_bytes};
}
auto initial_dump_bytes = util::ustring_from_bytes(env, initial_dump);
auto* group_info = new session::config::groups::Info(pub_key_bytes, secret_key_bytes, initial_dump_bytes);
auto* group_info = new session::config::groups::Info(pub_key_bytes, secret_key_optional, initial_dump_optional);
jclass groupInfoClass = env->FindClass("network/loki/messenger/libsession_util/GroupInfoConfig");
jmethodID constructor = env->GetMethodID(groupInfoClass, "<init>", "(J)V");
@@ -162,7 +140,7 @@ Java_network_loki_messenger_libsession_1util_GroupInfoConfig_setExpiryTimer(JNIE
jlong expire_seconds) {
std::lock_guard guard{util::util_mutex_};
auto group_info = ptrToInfo(env, thiz);
group_info->set_expiry_timer(std::chrono::seconds{expire_seconds})
group_info->set_expiry_timer(std::chrono::seconds{expire_seconds});
}
extern "C"

View File

@@ -0,0 +1 @@
#include "group_keys.h"

View File

@@ -0,0 +1,12 @@
#ifndef SESSION_ANDROID_GROUP_KEYS_H
#define SESSION_ANDROID_GROUP_KEYS_H
#include "util.h"
inline session::config::groups::Keys* ptrToKeys(JNIEnv* env, jobject obj) {
jclass configClass = env->FindClass("network/loki/messenger/libsession_util/GroupKeysConfig");
jfieldID pointerField = env->GetFieldID(configClass, "pointer", "J");
return (session::config::groups::Keys*) env->GetLongField(obj, pointerField);
}
#endif //SESSION_ANDROID_GROUP_KEYS_H

View File

@@ -0,0 +1 @@
#include "group_members.h"

View File

@@ -0,0 +1,13 @@
#ifndef SESSION_ANDROID_GROUP_MEMBERS_H
#define SESSION_ANDROID_GROUP_MEMBERS_H
#include "util.h"
inline session::config::groups::Members* ptrToMembers(JNIEnv* env, jobject obj) {
jclass configClass = env->FindClass("network/loki/messenger/libsession_util/GroupMemberConfig");
jfieldID pointerField = env->GetFieldID(configClass, "pointer", "J");
return (session::config::groups::Members*) env->GetLongField(obj, pointerField);
}
#endif //SESSION_ANDROID_GROUP_MEMBERS_H

View File

@@ -6,6 +6,8 @@
#include <optional>
#include "session/types.hpp"
#include "session/config/groups/info.hpp"
#include "session/config/groups/keys.hpp"
#include "session/config/groups/members.hpp"
#include "session/config/profile_pic.hpp"
#include "session/config/user_groups.hpp"
#include "session/config/expiring.hpp"

View File

@@ -206,12 +206,10 @@ class GroupInfoConfig(pointer: Long): ConfigBase(pointer) {
System.loadLibrary("session_util")
}
external fun newInstance(pubKey: ByteArray): GroupInfoConfig
external fun newInstance(pubKey: ByteArray, secretKey: ByteArray?): GroupInfoConfig
external fun newInstance(
pubKey: ByteArray,
secretKey: ByteArray?,
initialDump: ByteArray
initialDump: ByteArray?
): GroupInfoConfig
}
@@ -230,5 +228,32 @@ class GroupInfoConfig(pointer: Long): ConfigBase(pointer) {
external fun setName(newName: String)
external fun setProfilePic(newProfilePic: UserPic)
external fun storageNamespace(): Long
}
class GroupMemberConfig(pointer: Long): ConfigBase(pointer) {
companion object {
init {
System.loadLibrary("session_util")
}
external fun newInstance(
pubKey: ByteArray,
secretKey: ByteArray?,
initialDump: ByteArray?
)
}
}
class GroupKeysConfig(pointer: Long): ConfigBase(pointer) {
companion object {
init {
System.loadLibrary("session_util")
}
external fun newInstance(
publicKey: ByteArray,
secretKey: ByteArray?,
initialDump: ByteArray?,
info: GroupInfoConfig,
members: GroupMemberConfig
): GroupKeysConfig
}
}