mirror of
https://github.com/oxen-io/session-android.git
synced 2025-12-24 04:26:24 +00:00
feat: more usergroup functionality, storage functionality for checking pinned status, adding pinned status for NTS/contacts, move community info parse full url to base community, add StorageProtocol logic for group info
This commit is contained in:
@@ -3,25 +3,6 @@
|
||||
|
||||
#pragma clang diagnostic push
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jobject JNICALL
|
||||
Java_network_loki_messenger_libsession_1util_util_Conversation_00024Community_00024Companion_parseFullUrl(
|
||||
JNIEnv *env, jobject thiz, jstring full_url) {
|
||||
auto bytes = env->GetStringUTFChars(full_url, nullptr);
|
||||
auto [base, room, pk] = session::config::convo::community::parse_full_url(bytes);
|
||||
env->ReleaseStringUTFChars(full_url, bytes);
|
||||
|
||||
jclass clazz = env->FindClass("kotlin/Triple");
|
||||
jmethodID constructor = env->GetMethodID(clazz, "<init>", "(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V");
|
||||
|
||||
auto base_j = env->NewStringUTF(base.data());
|
||||
auto room_j = env->NewStringUTF(room.data());
|
||||
auto pk_jbytes = util::bytes_from_ustring(env, pk);
|
||||
|
||||
jobject triple = env->NewObject(clazz, constructor, base_j, room_j, pk_jbytes);
|
||||
return triple;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
#pragma ide diagnostic ignored "bugprone-reserved-identifier"
|
||||
JNIEXPORT jobject JNICALL
|
||||
|
||||
@@ -110,6 +110,22 @@ Java_network_loki_messenger_libsession_1util_UserGroupsConfig_getOrConstructLega
|
||||
return serialize_legacy_group_info(env, group);
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT void JNICALL
|
||||
Java_network_loki_messenger_libsession_1util_UserGroupsConfig_set__Lnetwork_loki_messenger_libsession_1util_util_GroupInfo_2(
|
||||
JNIEnv *env, jobject thiz, jobject group_info) {
|
||||
auto conf = ptrToUserGroups(env, thiz);
|
||||
auto communityInfo = env->FindClass("network/loki/messenger/libsession_util/util/GroupInfo$CommunityGroupInfo");
|
||||
auto legacyInfo = env->FindClass("network/loki/messenger/libsession_util/util/GroupInfo$LegacyGroupInfo");
|
||||
if (env->GetObjectClass(group_info) == communityInfo) {
|
||||
auto deserialized = deserialize_community_info(env, group_info);
|
||||
conf->set(deserialized);
|
||||
} else if (env->GetObjectClass(group_info) == legacyInfo) {
|
||||
auto deserialized = deserialize_legacy_group_info(env, group_info);
|
||||
conf->set(deserialized);
|
||||
}
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT void JNICALL
|
||||
Java_network_loki_messenger_libsession_1util_UserGroupsConfig_set__Lnetwork_loki_messenger_libsession_1util_util_GroupInfo_CommunityGroupInfo_2(
|
||||
|
||||
@@ -101,4 +101,22 @@ Java_network_loki_messenger_libsession_1util_util_Sodium_ed25519PkToCurve25519(J
|
||||
}
|
||||
jbyteArray curve_pk_jarray = util::bytes_from_ustring(env, session::ustring_view {curve_pk.data(), curve_pk.size()});
|
||||
return curve_pk_jarray;
|
||||
}
|
||||
extern "C"
|
||||
JNIEXPORT jobject JNICALL
|
||||
Java_network_loki_messenger_libsession_1util_util_BaseCommunityInfo_00024Companion_parseFullUrl(
|
||||
JNIEnv *env, jobject thiz, jstring full_url) {
|
||||
auto bytes = env->GetStringUTFChars(full_url, nullptr);
|
||||
auto [base, room, pk] = session::config::community::parse_full_url(bytes);
|
||||
env->ReleaseStringUTFChars(full_url, bytes);
|
||||
|
||||
jclass clazz = env->FindClass("kotlin/Triple");
|
||||
jmethodID constructor = env->GetMethodID(clazz, "<init>", "(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V");
|
||||
|
||||
auto base_j = env->NewStringUTF(base.data());
|
||||
auto room_j = env->NewStringUTF(room.data());
|
||||
auto pk_jbytes = util::bytes_from_ustring(env, pk);
|
||||
|
||||
jobject triple = env->NewObject(clazz, constructor, base_j, room_j, pk_jbytes);
|
||||
return triple;
|
||||
}
|
||||
@@ -155,6 +155,7 @@ class UserGroupsConfig(pointer: Long): ConfigBase(pointer) {
|
||||
external fun getLegacyGroupInfo(sessionId: String): GroupInfo.LegacyGroupInfo?
|
||||
external fun getOrConstructCommunityInfo(baseUrl: String, room: String, pubKeyHex: String): GroupInfo.CommunityGroupInfo
|
||||
external fun getOrConstructLegacyGroupInfo(sessionId: String): GroupInfo.LegacyGroupInfo
|
||||
external fun set(groupInfo: GroupInfo)
|
||||
external fun set(communityInfo: GroupInfo.CommunityGroupInfo)
|
||||
external fun set(legacyGroupInfo: GroupInfo.LegacyGroupInfo)
|
||||
external fun erase(communityInfo: GroupInfo.CommunityGroupInfo)
|
||||
|
||||
@@ -1,3 +1,10 @@
|
||||
package network.loki.messenger.libsession_util.util
|
||||
|
||||
data class BaseCommunityInfo(val baseUrl: String, val room: String, val pubKeyHex: String)
|
||||
data class BaseCommunityInfo(val baseUrl: String, val room: String, val pubKeyHex: String) {
|
||||
companion object {
|
||||
init {
|
||||
System.loadLibrary("session_util")
|
||||
}
|
||||
external fun parseFullUrl(fullUrl: String): Triple<String, String, ByteArray>?
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user