mirror of
https://github.com/oxen-io/session-android.git
synced 2025-12-30 23:36:32 +00:00
feat: add base wrappers to the remaining group configs
This commit is contained in:
Submodule libsession-util/libsession-util updated: a44567e876...d3b902f657
@@ -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())
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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.
|
||||
|
||||
@@ -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"
|
||||
|
||||
1
libsession-util/src/main/cpp/group_keys.cpp
Normal file
1
libsession-util/src/main/cpp/group_keys.cpp
Normal file
@@ -0,0 +1 @@
|
||||
#include "group_keys.h"
|
||||
12
libsession-util/src/main/cpp/group_keys.h
Normal file
12
libsession-util/src/main/cpp/group_keys.h
Normal 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
|
||||
1
libsession-util/src/main/cpp/group_members.cpp
Normal file
1
libsession-util/src/main/cpp/group_members.cpp
Normal file
@@ -0,0 +1 @@
|
||||
#include "group_members.h"
|
||||
13
libsession-util/src/main/cpp/group_members.h
Normal file
13
libsession-util/src/main/cpp/group_members.h
Normal 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
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user