@@ -50,20 +50,19 @@ JavaLocalRef<jobject> serialize_one_to_one(JNIEnv *env, const session::config::c
5050}
5151
5252session::config::convo::one_to_one deserialize_one_to_one (JNIEnv *env, jobject info) {
53- struct ClassInfo {
54- jclass java_class;
53+ struct ClassInfo : public JavaClassInfo {
5554 jmethodID id_getter;
5655 jmethodID lastRead_getter;
5756 jmethodID unread_getter;
5857
59- ClassInfo (JNIEnv *env, jclass clazz )
60- :java_class((jclass) env-> NewGlobalRef (clazz) ),
61- id_getter(env->GetMethodID (clazz , " getAccountId" , " ()Ljava/lang/String;" )),
62- lastRead_getter(env->GetMethodID (clazz , " getLastRead" , " ()J" )),
63- unread_getter(env->GetMethodID (clazz , " getUnread" , " ()Z" )) {}
58+ ClassInfo (JNIEnv *env, jobject obj )
59+ : JavaClassInfo(env, obj ),
60+ id_getter (env->GetMethodID (java_class , " getAccountId" , " ()Ljava/lang/String;" )),
61+ lastRead_getter(env->GetMethodID (java_class , " getLastRead" , " ()J" )),
62+ unread_getter(env->GetMethodID (java_class , " getUnread" , " ()Z" )) {}
6463 };
6564
66- static ClassInfo class_info (env, JavaLocalRef(env, env-> GetObjectClass ( info)).get() );
65+ static ClassInfo class_info (env, info);
6766
6867 session::config::convo::one_to_one r (
6968 JavaStringRef (
@@ -92,20 +91,19 @@ JavaLocalRef<jobject> serialize_community(JNIEnv *env, const session::config::co
9291}
9392
9493session::config::convo::community deserialize_community (JNIEnv *env, jobject info) {
95- struct ClassInfo {
96- jclass java_class;
94+ struct ClassInfo : public JavaClassInfo {
9795 jmethodID base_community_getter;
9896 jmethodID last_read_getter;
9997 jmethodID unread_getter;
10098
101- ClassInfo (JNIEnv *env, jclass clazz )
102- :java_class((jclass) env-> NewGlobalRef (clazz) ),
103- base_community_getter(env->GetMethodID (clazz , " getBaseCommunityInfo" , " ()Lnetwork/loki/messenger/libsession_util/util/BaseCommunityInfo;" )),
104- last_read_getter(env->GetMethodID (clazz , " getLastRead" , " ()J" )),
105- unread_getter(env->GetMethodID (clazz , " getUnread" , " ()Z" )) {}
99+ ClassInfo (JNIEnv *env, jobject obj )
100+ : JavaClassInfo(env, obj ),
101+ base_community_getter (env->GetMethodID (java_class , " getBaseCommunityInfo" , " ()Lnetwork/loki/messenger/libsession_util/util/BaseCommunityInfo;" )),
102+ last_read_getter(env->GetMethodID (java_class , " getLastRead" , " ()J" )),
103+ unread_getter(env->GetMethodID (java_class , " getUnread" , " ()Z" )) {}
106104 };
107105
108- static ClassInfo class_info (env, JavaLocalRef(env, env-> GetObjectClass ( info)).get() );
106+ static ClassInfo class_info (env, info);
109107
110108 auto base_community = deserialize_base_community(
111109 env,
@@ -139,20 +137,19 @@ JavaLocalRef<jobject> serialize_legacy_group(JNIEnv *env, const session::config:
139137}
140138
141139session::config::convo::legacy_group deserialize_legacy_closed_group (JNIEnv *env, jobject info) {
142- struct ClassInfo {
143- jclass java_class;
140+ struct ClassInfo : public JavaClassInfo {
144141 jmethodID groupId_getter;
145142 jmethodID lastRead_getter;
146143 jmethodID unread_getter;
147144
148- ClassInfo (JNIEnv *env, jclass clazz )
149- :java_class((jclass) env-> NewGlobalRef (clazz) ),
150- groupId_getter(env->GetMethodID (clazz , " getGroupId" , " ()Ljava/lang/String;" )),
151- lastRead_getter(env->GetMethodID (clazz , " getLastRead" , " ()J" )),
152- unread_getter(env->GetMethodID (clazz , " getUnread" , " ()Z" )) {}
145+ ClassInfo (JNIEnv *env, jobject obj )
146+ : JavaClassInfo(env, obj ),
147+ groupId_getter (env->GetMethodID (java_class , " getGroupId" , " ()Ljava/lang/String;" )),
148+ lastRead_getter(env->GetMethodID (java_class , " getLastRead" , " ()J" )),
149+ unread_getter(env->GetMethodID (java_class , " getUnread" , " ()Z" )) {}
153150 };
154151
155- static ClassInfo class_info (env, JavaLocalRef(env, env-> GetObjectClass ( info)).get() );
152+ static ClassInfo class_info (env, info);
156153
157154 session::config::convo::legacy_group lg (
158155 JavaStringRef (env, JavaLocalRef(env, static_cast <jstring>(env->CallObjectMethod (info, class_info.groupId_getter))).get()).view()
@@ -177,20 +174,19 @@ JavaLocalRef<jobject> serialize_closed_group(JNIEnv* env, const session::config:
177174}
178175
179176session::config::convo::group deserialize_closed_group (JNIEnv* env, jobject info) {
180- struct ClassInfo {
181- jclass java_class;
177+ struct ClassInfo : public JavaClassInfo {
182178 jmethodID id_getter;
183179 jmethodID last_read_getter;
184180 jmethodID unread_getter;
185181
186- ClassInfo (JNIEnv *env, jclass clazz )
187- :java_class((jclass) env-> NewGlobalRef (clazz) ),
188- id_getter(env->GetMethodID (clazz , " getAccountId" , " ()Ljava/lang/String;" )),
189- last_read_getter(env->GetMethodID (clazz , " getLastRead" , " ()J" )),
190- unread_getter(env->GetMethodID (clazz , " getUnread" , " ()Z" )) {}
182+ ClassInfo (JNIEnv *env, jobject obj )
183+ :JavaClassInfo( env, obj ),
184+ id_getter (env->GetMethodID (java_class , " getAccountId" , " ()Ljava/lang/String;" )),
185+ last_read_getter(env->GetMethodID (java_class , " getLastRead" , " ()J" )),
186+ unread_getter(env->GetMethodID (java_class , " getUnread" , " ()Z" )) {}
191187 };
192188
193- static ClassInfo class_info (env, JavaLocalRef(env, env-> GetObjectClass ( info)).get() );
189+ static ClassInfo class_info (env, info);
194190
195191 session::config::convo::group g (
196192 JavaStringRef (env, JavaLocalRef(env, (jstring) env->CallObjectMethod(info, class_info.id_getter)).get()).view());
@@ -212,25 +208,25 @@ JavaLocalRef<jobject> serialize_blinded_one_to_one(JNIEnv *env, const session::c
212208 class_info.constructor ,
213209 JavaLocalRef (env, env->NewStringUTF (blinded_one_to_one.blinded_session_id .data ())).get (),
214210 (jlong) blinded_one_to_one.last_read ,
215- (jboolean) blinded_one_to_one.unread
211+ (jboolean) blinded_one_to_one.unread ,
212+ serialize_pro_proof_info (env, blinded_one_to_one.pro_gen_index_hash , blinded_one_to_one.pro_expiry_unix_ts ).get ()
216213 )};
217214}
218215
219216session::config::convo::blinded_one_to_one deserialize_blinded_one_to_one (JNIEnv *env, jobject info) {
220- struct ClassInfo {
221- jclass java_class;
217+ struct ClassInfo : public JavaClassInfo {
222218 jmethodID id_getter;
223219 jmethodID last_read_getter;
224220 jmethodID unread_getter;
225221
226- ClassInfo (JNIEnv *env, jclass clazz )
227- :java_class((jclass) env-> NewGlobalRef (clazz) ),
228- id_getter(env->GetMethodID (clazz , " getBlindedAccountId" , " ()Ljava/lang/String;" )),
229- last_read_getter(env->GetMethodID (clazz , " getLastRead" , " ()J" )),
230- unread_getter(env->GetMethodID (clazz , " getUnread" , " ()Z" )) {}
222+ ClassInfo (JNIEnv *env, jobject obj )
223+ : JavaClassInfo(env, obj ),
224+ id_getter (env->GetMethodID (java_class , " getBlindedAccountId" , " ()Ljava/lang/String;" )),
225+ last_read_getter(env->GetMethodID (java_class , " getLastRead" , " ()J" )),
226+ unread_getter(env->GetMethodID (java_class , " getUnread" , " ()Z" )) {}
231227 };
232228
233- static ClassInfo class_info (env, JavaLocalRef(env, env-> GetObjectClass ( info)).get() );
229+ static ClassInfo class_info (env, info);
234230
235231 session::config::convo::blinded_one_to_one r (
236232 JavaStringRef (env, JavaLocalRef(env, (jstring) env->CallObjectMethod(info, class_info.id_getter)).get()).view());
@@ -322,7 +318,7 @@ Java_network_loki_messenger_libsession_1util_ConversationVolatileConfig_getOneTo
322318 auto convos = ptrToConvoInfo (env, thiz);
323319 auto internal = convos->get_1to1 (JavaStringRef (env, pub_key_hex).view ());
324320 if (internal) {
325- return serialize_one_to_one (env, *internal).leak ();
321+ return serialize_one_to_one (env, *internal).release ();
326322 }
327323 return nullptr ;
328324}
@@ -331,7 +327,7 @@ JNIEXPORT jobject JNICALL
331327Java_network_loki_messenger_libsession_1util_ConversationVolatileConfig_getOrConstructOneToOne (
332328 JNIEnv *env, jobject thiz, jstring pub_key_hex) {
333329 auto convos = ptrToConvoInfo (env, thiz);
334- return serialize_one_to_one (env, convos->get_or_construct_1to1 (JavaStringRef (env, pub_key_hex).view ())).leak ();
330+ return serialize_one_to_one (env, convos->get_or_construct_1to1 (JavaStringRef (env, pub_key_hex).view ())).release ();
335331}
336332extern " C"
337333JNIEXPORT jboolean JNICALL
@@ -349,7 +345,7 @@ Java_network_loki_messenger_libsession_1util_ConversationVolatileConfig_getCommu
349345 auto convos = ptrToConvoInfo (env, thiz);
350346 auto open = convos->get_community (JavaStringRef (env, base_url).view (), JavaStringRef (env, room).view ());
351347 if (open) {
352- return serialize_community (env, *open).leak ();
348+ return serialize_community (env, *open).release ();
353349 }
354350 return nullptr ;
355351}
@@ -362,7 +358,7 @@ Java_network_loki_messenger_libsession_1util_ConversationVolatileConfig_getOrCon
362358 JavaStringRef (env, base_url).view (),
363359 JavaStringRef (env, room).view (),
364360 JavaByteArrayRef (env, pub_key).get ());
365- return serialize_community (env, community).leak ();
361+ return serialize_community (env, community).release ();
366362}
367363extern " C"
368364JNIEXPORT jobject JNICALL
@@ -373,7 +369,7 @@ Java_network_loki_messenger_libsession_1util_ConversationVolatileConfig_getOrCon
373369 JavaStringRef (env, base_url).view (),
374370 JavaStringRef (env, room).view (),
375371 JavaStringRef (env, pub_key_hex).view ());
376- return serialize_community (env, community).leak ();
372+ return serialize_community (env, community).release ();
377373}
378374extern " C"
379375JNIEXPORT jboolean JNICALL
@@ -400,7 +396,7 @@ Java_network_loki_messenger_libsession_1util_ConversationVolatileConfig_getLegac
400396 auto convos = ptrToConvoInfo (env, thiz);
401397 auto lgc = convos->get_legacy_group (JavaStringRef (env, group_id).view ());
402398 if (lgc) {
403- return serialize_legacy_group (env, *lgc).leak ();
399+ return serialize_legacy_group (env, *lgc).release ();
404400 }
405401
406402 return nullptr ;
@@ -411,7 +407,7 @@ Java_network_loki_messenger_libsession_1util_ConversationVolatileConfig_getOrCon
411407 JNIEnv *env, jobject thiz, jstring group_id) {
412408 auto convos = ptrToConvoInfo (env, thiz);
413409 auto lgc = convos->get_or_construct_legacy_group (JavaStringRef (env, group_id).view ());
414- return serialize_legacy_group (env, lgc).leak ();
410+ return serialize_legacy_group (env, lgc).release ();
415411}
416412extern " C"
417413JNIEXPORT jboolean JNICALL
@@ -494,7 +490,7 @@ Java_network_loki_messenger_libsession_1util_ConversationVolatileConfig_getClose
494490 auto config = ptrToConvoInfo (env, thiz);
495491 auto group = config->get_group (JavaStringRef (env, session_id).view ());
496492 if (group) {
497- return serialize_closed_group (env, *group).leak ();
493+ return serialize_closed_group (env, *group).release ();
498494 }
499495 return nullptr ;
500496}
@@ -505,7 +501,7 @@ Java_network_loki_messenger_libsession_1util_ConversationVolatileConfig_getOrCon
505501 JNIEnv *env, jobject thiz, jstring session_id) {
506502 auto config = ptrToConvoInfo (env, thiz);
507503 auto group = config->get_or_construct_group (JavaStringRef (env, session_id).view ());
508- return serialize_closed_group (env, group).leak ();
504+ return serialize_closed_group (env, group).release ();
509505}
510506
511507extern " C"
@@ -567,3 +563,24 @@ Java_network_loki_messenger_libsession_1util_ConversationVolatileConfig_eraseBli
567563 return ptrToConvoInfo (env, thiz)->erase_blinded_1to1 (JavaStringRef (env, blinded_id).view ());
568564}
569565
566+ extern " C"
567+ JNIEXPORT jobject JNICALL
568+ Java_network_loki_messenger_libsession_1util_ConversationVolatileConfig_getBlindedOneToOne (
569+ JNIEnv *env, jobject thiz, jstring pub_key_hex) {
570+ auto blinded = ptrToConvoInfo (env, thiz)->get_blinded_1to1 (JavaStringRef (env, pub_key_hex).view ());
571+ if (blinded) {
572+ return serialize_blinded_one_to_one (env, *blinded).release ();
573+ }
574+ return nullptr ;
575+ }
576+
577+ extern " C"
578+ JNIEXPORT jobject JNICALL
579+ Java_network_loki_messenger_libsession_1util_ConversationVolatileConfig_allBlindedOneToOnes (
580+ JNIEnv *env, jobject thiz) {
581+ auto convo = ptrToConvoInfo (env, thiz);
582+ return jlist_from_iterator (env,
583+ convo->begin_blinded_1to1 (),
584+ convo->end (),
585+ serialize_blinded_one_to_one);
586+ }
0 commit comments