mirror of
https://github.com/oxen-io/session-android.git
synced 2025-12-31 01:16:18 +00:00
feat: update shared library to use priority only, fix compile errors, fix group member sync problem
This commit is contained in:
@@ -13,18 +13,17 @@ inline session::config::Contacts *ptrToContacts(JNIEnv *env, jobject obj) {
|
||||
|
||||
inline jobject serialize_contact(JNIEnv *env, session::config::contact_info info) {
|
||||
jclass contactClass = env->FindClass("network/loki/messenger/libsession_util/util/Contact");
|
||||
jmethodID constructor = env->GetMethodID(contactClass, "<init>", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZZZLnetwork/loki/messenger/libsession_util/util/UserPic;ILnetwork/loki/messenger/libsession_util/util/ExpiryMode;)V");
|
||||
jmethodID constructor = env->GetMethodID(contactClass, "<init>", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZZLnetwork/loki/messenger/libsession_util/util/UserPic;ILnetwork/loki/messenger/libsession_util/util/ExpiryMode;)V");
|
||||
jstring id = env->NewStringUTF(info.session_id.data());
|
||||
jstring name = env->NewStringUTF(info.name.data());
|
||||
jstring nickname = env->NewStringUTF(info.nickname.data());
|
||||
jboolean approved, approvedMe, blocked, hidden;
|
||||
jboolean approved, approvedMe, blocked;
|
||||
approved = info.approved;
|
||||
approvedMe = info.approved_me;
|
||||
blocked = info.blocked;
|
||||
hidden = info.hidden;
|
||||
jobject profilePic = util::serialize_user_pic(env, info.profile_picture);
|
||||
jobject returnObj = env->NewObject(contactClass, constructor, id, name, nickname, approved,
|
||||
approvedMe, blocked, hidden, profilePic, info.priority,
|
||||
approvedMe, blocked, profilePic, info.priority,
|
||||
util::serialize_expiry(env, info.exp_mode, info.exp_timer));
|
||||
return returnObj;
|
||||
}
|
||||
@@ -40,7 +39,6 @@ deserialize_contact(JNIEnv *env, jobject info, session::config::Contacts *conf)
|
||||
getApproved = env->GetFieldID(contactClass, "approved", "Z");
|
||||
getApprovedMe = env->GetFieldID(contactClass, "approvedMe", "Z");
|
||||
getBlocked = env->GetFieldID(contactClass, "blocked", "Z");
|
||||
getHidden = env->GetFieldID(contactClass, "hidden", "Z");
|
||||
getUserPic = env->GetFieldID(contactClass, "profilePicture",
|
||||
"Lnetwork/loki/messenger/libsession_util/util/UserPic;");
|
||||
getPriority = env->GetFieldID(contactClass, "priority", "I");
|
||||
@@ -54,7 +52,6 @@ deserialize_contact(JNIEnv *env, jobject info, session::config::Contacts *conf)
|
||||
approved = env->GetBooleanField(info, getApproved);
|
||||
approvedMe = env->GetBooleanField(info, getApprovedMe);
|
||||
blocked = env->GetBooleanField(info, getBlocked);
|
||||
hidden = env->GetBooleanField(info, getHidden);
|
||||
jobject user_pic = env->GetObjectField(info, getUserPic);
|
||||
jobject expiry_mode = env->GetObjectField(info, getExpiry);
|
||||
|
||||
@@ -86,7 +83,6 @@ deserialize_contact(JNIEnv *env, jobject info, session::config::Contacts *conf)
|
||||
contact_info.approved = approved;
|
||||
contact_info.approved_me = approvedMe;
|
||||
contact_info.blocked = blocked;
|
||||
contact_info.hidden = hidden;
|
||||
if (!url.empty() && !key.empty()) {
|
||||
contact_info.profile_picture = session::config::profile_pic(url, key);
|
||||
} else {
|
||||
|
||||
@@ -47,7 +47,6 @@ inline session::config::legacy_group_info deserialize_legacy_group_info(JNIEnv *
|
||||
auto id_field = env->GetFieldID(clazz, "sessionId", "Ljava/lang/String;");
|
||||
auto name_field = env->GetFieldID(clazz, "name", "Ljava/lang/String;");
|
||||
auto members_field = env->GetFieldID(clazz, "members", "Ljava/util/Map;");
|
||||
auto hidden_field = env->GetFieldID(clazz, "hidden", "Z");
|
||||
auto enc_pub_key_field = env->GetFieldID(clazz, "encPubKey", "[B");
|
||||
auto enc_sec_key_field = env->GetFieldID(clazz, "encSecKey", "[B");
|
||||
auto priority_field = env->GetFieldID(clazz, "priority", "I");
|
||||
@@ -55,7 +54,6 @@ inline session::config::legacy_group_info deserialize_legacy_group_info(JNIEnv *
|
||||
jstring id = static_cast<jstring>(env->GetObjectField(info, id_field));
|
||||
jstring name = static_cast<jstring>(env->GetObjectField(info, name_field));
|
||||
jobject members_map = env->GetObjectField(info, members_field);
|
||||
bool hidden = env->GetBooleanField(info, hidden_field);
|
||||
jbyteArray enc_pub_key = static_cast<jbyteArray>(env->GetObjectField(info, enc_pub_key_field));
|
||||
jbyteArray enc_sec_key = static_cast<jbyteArray>(env->GetObjectField(info, enc_sec_key_field));
|
||||
int priority = env->GetIntField(info, priority_field);
|
||||
@@ -67,10 +65,12 @@ inline session::config::legacy_group_info deserialize_legacy_group_info(JNIEnv *
|
||||
|
||||
auto info_deserialized = conf->get_or_construct_legacy_group(id_bytes);
|
||||
|
||||
info_deserialized.priority = priority;
|
||||
auto current_members = info_deserialized.members();
|
||||
for (auto member = current_members.begin(); member != current_members.end(); ++member) {
|
||||
info_deserialized.erase(member->first);
|
||||
}
|
||||
deserialize_members_into(env, members_map, info_deserialized);
|
||||
info_deserialized.name = name_bytes;
|
||||
info_deserialized.hidden = hidden;
|
||||
info_deserialized.enc_pubkey = enc_pub_key_bytes;
|
||||
info_deserialized.enc_seckey = enc_sec_key_bytes;
|
||||
info_deserialized.disappearing_timer = std::chrono::seconds(env->GetLongField(info, disappearing_timer_field));
|
||||
@@ -116,11 +116,10 @@ inline jobject serialize_legacy_group_info(JNIEnv *env, session::config::legacy_
|
||||
jbyteArray enc_pubkey = util::bytes_from_ustring(env, info.enc_pubkey);
|
||||
jbyteArray enc_seckey = util::bytes_from_ustring(env, info.enc_seckey);
|
||||
int priority = info.priority;
|
||||
bool hidden = info.hidden;
|
||||
|
||||
jclass legacy_group_class = env->FindClass("network/loki/messenger/libsession_util/util/GroupInfo$LegacyGroupInfo");
|
||||
jmethodID constructor = env->GetMethodID(legacy_group_class, "<init>", "(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Z[B[BIJ)V");
|
||||
jobject serialized = env->NewObject(legacy_group_class, constructor, session_id, name, members, hidden, enc_pubkey, enc_seckey, priority, (jlong) info.disappearing_timer.count());
|
||||
jmethodID constructor = env->GetMethodID(legacy_group_class, "<init>", "(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;[B[BIJ)V");
|
||||
jobject serialized = env->NewObject(legacy_group_class, constructor, session_id, name, members, enc_pubkey, enc_seckey, priority, (jlong) info.disappearing_timer.count());
|
||||
return serialized;
|
||||
}
|
||||
|
||||
|
||||
@@ -84,21 +84,8 @@ Java_network_loki_messenger_libsession_1util_UserProfile_setNtsPriority(JNIEnv *
|
||||
profile->set_nts_priority(priority);
|
||||
}
|
||||
extern "C"
|
||||
JNIEXPORT void JNICALL
|
||||
Java_network_loki_messenger_libsession_1util_UserProfile_setNtsHidden(JNIEnv *env, jobject thiz,
|
||||
jboolean is_hidden) {
|
||||
auto profile = ptrToProfile(env, thiz);
|
||||
profile->set_nts_hidden(is_hidden);
|
||||
}
|
||||
extern "C"
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_network_loki_messenger_libsession_1util_UserProfile_getNtsPriority(JNIEnv *env, jobject thiz) {
|
||||
auto profile = ptrToProfile(env, thiz);
|
||||
return profile->get_nts_priority();
|
||||
}
|
||||
extern "C"
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_network_loki_messenger_libsession_1util_UserProfile_getNtsHidden(JNIEnv *env, jobject thiz) {
|
||||
auto profile = ptrToProfile(env, thiz);
|
||||
return profile->get_nts_hidden();
|
||||
}
|
||||
@@ -25,6 +25,10 @@ sealed class ConfigBase(protected val /* yucky */ pointer: Long) {
|
||||
|
||||
const val isNewConfigEnabled = true
|
||||
|
||||
const val PRIORITY_HIDDEN = -1
|
||||
const val PRIORITY_VISIBLE = 0
|
||||
const val PRIORITY_PINNED = 1
|
||||
|
||||
}
|
||||
|
||||
external fun dirty(): Boolean
|
||||
@@ -96,8 +100,6 @@ class UserProfile(pointer: Long) : ConfigBase(pointer) {
|
||||
external fun setPic(userPic: UserPic)
|
||||
external fun setNtsPriority(priority: Int)
|
||||
external fun getNtsPriority(): Int
|
||||
external fun setNtsHidden(isHidden: Boolean)
|
||||
external fun getNtsHidden(): Boolean
|
||||
}
|
||||
|
||||
class ConversationVolatileConfig(pointer: Long): ConfigBase(pointer) {
|
||||
|
||||
@@ -7,7 +7,6 @@ data class Contact(
|
||||
var approved: Boolean = false,
|
||||
var approvedMe: Boolean = false,
|
||||
var blocked: Boolean = false,
|
||||
var hidden: Boolean = false,
|
||||
var profilePicture: UserPic = UserPic.DEFAULT,
|
||||
var priority: Int = 0,
|
||||
var expiryMode: ExpiryMode
|
||||
|
||||
@@ -8,10 +8,9 @@ sealed class GroupInfo {
|
||||
val sessionId: String,
|
||||
val name: String,
|
||||
val members: Map<String, Boolean>,
|
||||
val hidden: Boolean,
|
||||
val encPubKey: ByteArray,
|
||||
val encSecKey: ByteArray,
|
||||
val priority: Int = 0,
|
||||
val priority: Int,
|
||||
val disappearingTimer: Long
|
||||
): GroupInfo() {
|
||||
companion object {
|
||||
@@ -28,7 +27,6 @@ sealed class GroupInfo {
|
||||
if (sessionId != other.sessionId) return false
|
||||
if (name != other.name) return false
|
||||
if (members != other.members) return false
|
||||
if (hidden != other.hidden) return false
|
||||
if (!encPubKey.contentEquals(other.encPubKey)) return false
|
||||
if (!encSecKey.contentEquals(other.encSecKey)) return false
|
||||
if (priority != other.priority) return false
|
||||
@@ -40,7 +38,6 @@ sealed class GroupInfo {
|
||||
var result = sessionId.hashCode()
|
||||
result = 31 * result + name.hashCode()
|
||||
result = 31 * result + members.hashCode()
|
||||
result = 31 * result + hidden.hashCode()
|
||||
result = 31 * result + encPubKey.contentHashCode()
|
||||
result = 31 * result + encSecKey.contentHashCode()
|
||||
result = 31 * result + priority
|
||||
|
||||
Reference in New Issue
Block a user