From ae9a84a35d38c24f14cf8d7aae897de0a5acb009 Mon Sep 17 00:00:00 2001 From: SessionHero01 Date: Fri, 8 Aug 2025 15:43:42 +1000 Subject: [PATCH 1/3] Update libsession-util --- library/src/main/cpp/contacts.cpp | 5 ++++- library/src/main/cpp/conversation.cpp | 4 +++- library/src/main/cpp/user_profile.cpp | 7 +++++++ .../loki/messenger/libsession_util/util/BlindedContact.kt | 1 + libsession-util | 2 +- 5 files changed, 16 insertions(+), 3 deletions(-) diff --git a/library/src/main/cpp/contacts.cpp b/library/src/main/cpp/contacts.cpp index dccba91..3d8f670 100644 --- a/library/src/main/cpp/contacts.cpp +++ b/library/src/main/cpp/contacts.cpp @@ -134,7 +134,7 @@ session::config::contact_info deserialize_contact(JNIEnv *env, jobject info, ses jobject serialize_blinded_contact(JNIEnv *env, const session::config::blinded_contact_info &info) { jni_utils::JavaLocalRef clazz(env, env->FindClass("network/loki/messenger/libsession_util/util/BlindedContact")); - auto constructor = env->GetMethodID(clazz.get(), "", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JLnetwork/loki/messenger/libsession_util/util/UserPic;)V"); + auto constructor = env->GetMethodID(clazz.get(), "", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJLnetwork/loki/messenger/libsession_util/util/UserPic;)V"); return env->NewObject( clazz.get(), @@ -144,6 +144,7 @@ jobject serialize_blinded_contact(JNIEnv *env, const session::config::blinded_co jni_utils::JavaLocalRef(env, env->NewStringUTF(info.community_pubkey_hex().data())).get(), jni_utils::JavaLocalRef(env, env->NewStringUTF(info.name.c_str())).get(), (jlong) (info.created.time_since_epoch().count()), + (jlong) (info.profile_updated.time_since_epoch().count()), jni_utils::JavaLocalRef(env, util::serialize_user_pic(env, info.profile_picture)).get() ); } @@ -155,6 +156,7 @@ session::config::blinded_contact_info deserialize_blinded_contact(JNIEnv *env, j auto getCommunityServerPubKey = env->GetMethodID(clazz.get(), "getCommunityServerPubKey", "()[B"); auto nameField = env->GetFieldID(clazz.get(), "name", "Ljava/lang/String;"); auto createdEpochSecondsField = env->GetFieldID(clazz.get(), "createdEpochSeconds", "J"); + auto profileUpdatedEpochSecondsField = env->GetFieldID(clazz.get(), "profileUpdatedEpochSeconds", "J"); auto profilePicField = env->GetFieldID(clazz.get(), "profilePic", "Lnetwork/loki/messenger/libsession_util/util/UserPic;"); session::config::blinded_contact_info info( @@ -165,6 +167,7 @@ session::config::blinded_contact_info deserialize_blinded_contact(JNIEnv *env, j info.created = std::chrono::sys_seconds{std::chrono::seconds{env->GetLongField(jInfo, createdEpochSecondsField)}}; info.profile_picture = util::deserialize_user_pic(env, jni_utils::JavaLocalRef(env, env->GetObjectField(jInfo, profilePicField)).get()); info.name = jni_utils::JavaStringRef(env, jni_utils::JavaLocalRef(env, (jstring) env->GetObjectField(jInfo, nameField)).get()).view(); + info.profile_updated = std::chrono::sys_seconds{std::chrono::seconds{env->GetLongField(jInfo, profileUpdatedEpochSecondsField)}}; return info; } diff --git a/library/src/main/cpp/conversation.cpp b/library/src/main/cpp/conversation.cpp index b18a56f..8d237a3 100644 --- a/library/src/main/cpp/conversation.cpp +++ b/library/src/main/cpp/conversation.cpp @@ -125,7 +125,7 @@ session::config::convo::blinded_one_to_one deserialize_blinded_one_to_one(JNIEnv auto unread_field_id = env->GetFieldID(clazz.get(), "unread", "Z"); session::config::convo::blinded_one_to_one r( - jni_utils::JavaStringRef(env, jni_utils::JavaLocalRef(env, (jstring) env->GetObjectField(info, id_field_id)).get()).view(), true); + jni_utils::JavaStringRef(env, jni_utils::JavaLocalRef(env, (jstring) env->GetObjectField(info, id_field_id)).get()).view()); r.last_read = env->GetLongField(info, last_read_field_id); r.unread = env->GetBooleanField(info, unread_field_id); @@ -142,6 +142,8 @@ jobject serialize_any(JNIEnv *env, session::config::convo::any any) { return serialize_legacy_group(env, *lgc); } else if (auto* gc = std::get_if(&any)) { return serialize_closed_group(env, *gc); + } else if (auto *bc = std::get_if(&any)) { + return serialize_blinded_one_to_one(env, *bc); } return nullptr; } diff --git a/library/src/main/cpp/user_profile.cpp b/library/src/main/cpp/user_profile.cpp index a992f48..326c5bb 100644 --- a/library/src/main/cpp/user_profile.cpp +++ b/library/src/main/cpp/user_profile.cpp @@ -99,3 +99,10 @@ Java_network_loki_messenger_libsession_1util_UserProfile_isBlockCommunityMessage auto profile = ptrToProfile(env, thiz); return profile->get_blinded_msgreqs().has_value(); } + +extern "C" +JNIEXPORT void JNICALL +Java_network_loki_messenger_libsession_1util_UserProfile_setLastUpdated(JNIEnv *env, jobject thiz, + jlong last_updated_epoch_seconds) { + ptrToProfile(env, thiz)->set_profile_pic() +} \ No newline at end of file diff --git a/library/src/main/java/network/loki/messenger/libsession_util/util/BlindedContact.kt b/library/src/main/java/network/loki/messenger/libsession_util/util/BlindedContact.kt index 134ebb5..8d43f1d 100644 --- a/library/src/main/java/network/loki/messenger/libsession_util/util/BlindedContact.kt +++ b/library/src/main/java/network/loki/messenger/libsession_util/util/BlindedContact.kt @@ -6,6 +6,7 @@ data class BlindedContact( val communityServerPubKeyHex: String, var name: String, var createdEpochSeconds: Long, + var profileUpdatedEpochSeconds: Long, var profilePic: UserPic ) { @OptIn(ExperimentalStdlibApi::class) diff --git a/libsession-util b/libsession-util index 551a48b..3ee705f 160000 --- a/libsession-util +++ b/libsession-util @@ -1 +1 @@ -Subproject commit 551a48b258f53a36c4cd1ad036d65e3dcd575fbc +Subproject commit 3ee705f3248337c71c159a88f6baafe85c02f1c3 From c639f39bef7142613f53695be4a2b91b4f686031 Mon Sep 17 00:00:00 2001 From: SessionHero01 Date: Fri, 8 Aug 2025 16:53:20 +1000 Subject: [PATCH 2/3] Compile issues --- gradle/libs.versions.toml | 2 +- library/src/main/cpp/conversation.cpp | 4 ++-- library/src/main/cpp/user_profile.cpp | 7 ------- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4aa7899..aa222bd 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -agp = "8.11.1" +agp = "8.12.0" kotlin = "2.2.0" [libraries] diff --git a/library/src/main/cpp/conversation.cpp b/library/src/main/cpp/conversation.cpp index 8d237a3..45f1538 100644 --- a/library/src/main/cpp/conversation.cpp +++ b/library/src/main/cpp/conversation.cpp @@ -439,12 +439,12 @@ extern "C" JNIEXPORT jobject JNICALL Java_network_loki_messenger_libsession_1util_ConversationVolatileConfig_getOrConstructedBlindedOneToOne( JNIEnv *env, jobject thiz, jstring blinded_id) { - return serialize_blinded_one_to_one(env, ptrToConvoInfo(env, thiz)->get_or_construct_blinded_1to1(jni_utils::JavaStringRef(env, blinded_id).view(), true)); + return serialize_blinded_one_to_one(env, ptrToConvoInfo(env, thiz)->get_or_construct_blinded_1to1(jni_utils::JavaStringRef(env, blinded_id).view())); } extern "C" JNIEXPORT jboolean JNICALL Java_network_loki_messenger_libsession_1util_ConversationVolatileConfig_eraseBlindedOneToOne( JNIEnv *env, jobject thiz, jstring blinded_id) { - return ptrToConvoInfo(env, thiz)->erase_blinded_1to1(jni_utils::JavaStringRef(env, blinded_id).view(), true); + return ptrToConvoInfo(env, thiz)->erase_blinded_1to1(jni_utils::JavaStringRef(env, blinded_id).view()); } diff --git a/library/src/main/cpp/user_profile.cpp b/library/src/main/cpp/user_profile.cpp index 326c5bb..a992f48 100644 --- a/library/src/main/cpp/user_profile.cpp +++ b/library/src/main/cpp/user_profile.cpp @@ -99,10 +99,3 @@ Java_network_loki_messenger_libsession_1util_UserProfile_isBlockCommunityMessage auto profile = ptrToProfile(env, thiz); return profile->get_blinded_msgreqs().has_value(); } - -extern "C" -JNIEXPORT void JNICALL -Java_network_loki_messenger_libsession_1util_UserProfile_setLastUpdated(JNIEnv *env, jobject thiz, - jlong last_updated_epoch_seconds) { - ptrToProfile(env, thiz)->set_profile_pic() -} \ No newline at end of file From 53af458253d541238eb7c538e647342457be9622 Mon Sep 17 00:00:00 2001 From: SessionHero01 Date: Fri, 8 Aug 2025 16:56:39 +1000 Subject: [PATCH 3/3] Added priority field --- library/src/main/cpp/contacts.cpp | 7 +++++-- .../loki/messenger/libsession_util/util/BlindedContact.kt | 3 ++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/library/src/main/cpp/contacts.cpp b/library/src/main/cpp/contacts.cpp index 3d8f670..6d45d04 100644 --- a/library/src/main/cpp/contacts.cpp +++ b/library/src/main/cpp/contacts.cpp @@ -134,7 +134,7 @@ session::config::contact_info deserialize_contact(JNIEnv *env, jobject info, ses jobject serialize_blinded_contact(JNIEnv *env, const session::config::blinded_contact_info &info) { jni_utils::JavaLocalRef clazz(env, env->FindClass("network/loki/messenger/libsession_util/util/BlindedContact")); - auto constructor = env->GetMethodID(clazz.get(), "", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJLnetwork/loki/messenger/libsession_util/util/UserPic;)V"); + auto constructor = env->GetMethodID(clazz.get(), "", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JJLnetwork/loki/messenger/libsession_util/util/UserPic;L)V"); return env->NewObject( clazz.get(), @@ -145,7 +145,8 @@ jobject serialize_blinded_contact(JNIEnv *env, const session::config::blinded_co jni_utils::JavaLocalRef(env, env->NewStringUTF(info.name.c_str())).get(), (jlong) (info.created.time_since_epoch().count()), (jlong) (info.profile_updated.time_since_epoch().count()), - jni_utils::JavaLocalRef(env, util::serialize_user_pic(env, info.profile_picture)).get() + jni_utils::JavaLocalRef(env, util::serialize_user_pic(env, info.profile_picture)).get(), + (jlong) info.priority ); } @@ -158,6 +159,7 @@ session::config::blinded_contact_info deserialize_blinded_contact(JNIEnv *env, j auto createdEpochSecondsField = env->GetFieldID(clazz.get(), "createdEpochSeconds", "J"); auto profileUpdatedEpochSecondsField = env->GetFieldID(clazz.get(), "profileUpdatedEpochSeconds", "J"); auto profilePicField = env->GetFieldID(clazz.get(), "profilePic", "Lnetwork/loki/messenger/libsession_util/util/UserPic;"); + auto priorityField = env->GetFieldID(clazz.get(), "priority", "J"); session::config::blinded_contact_info info( jni_utils::JavaStringRef(env, (jstring) env->GetObjectField(jInfo, communityServerField)).view(), @@ -168,6 +170,7 @@ session::config::blinded_contact_info deserialize_blinded_contact(JNIEnv *env, j info.profile_picture = util::deserialize_user_pic(env, jni_utils::JavaLocalRef(env, env->GetObjectField(jInfo, profilePicField)).get()); info.name = jni_utils::JavaStringRef(env, jni_utils::JavaLocalRef(env, (jstring) env->GetObjectField(jInfo, nameField)).get()).view(); info.profile_updated = std::chrono::sys_seconds{std::chrono::seconds{env->GetLongField(jInfo, profileUpdatedEpochSecondsField)}}; + info.priority = env->GetLongField(jInfo, priorityField); return info; } diff --git a/library/src/main/java/network/loki/messenger/libsession_util/util/BlindedContact.kt b/library/src/main/java/network/loki/messenger/libsession_util/util/BlindedContact.kt index 8d43f1d..d725200 100644 --- a/library/src/main/java/network/loki/messenger/libsession_util/util/BlindedContact.kt +++ b/library/src/main/java/network/loki/messenger/libsession_util/util/BlindedContact.kt @@ -7,7 +7,8 @@ data class BlindedContact( var name: String, var createdEpochSeconds: Long, var profileUpdatedEpochSeconds: Long, - var profilePic: UserPic + var profilePic: UserPic, + var priority: Long, ) { @OptIn(ExperimentalStdlibApi::class) val communityServerPubKey: ByteArray