Skip to content

Commit 170a7ec

Browse files
Update libsession-util and adjust APIs (#33)
1 parent 94e6f06 commit 170a7ec

9 files changed

Lines changed: 28 additions & 115 deletions

File tree

build.gradle.kts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
// Top-level build file where you can add configuration options common to all sub-projects/modules.
22
plugins {
3-
alias(libs.plugins.android.library) apply false
4-
alias(libs.plugins.kotlin.android) apply false
5-
alias(libs.plugins.kotlinx.serialization) apply false
3+
val kotlinVersion = "2.2.21"
4+
5+
id("com.android.library") version "8.13.1" apply false
6+
id("org.jetbrains.kotlin.android") version kotlinVersion apply false
7+
id("org.jetbrains.kotlin.plugin.serialization") version kotlinVersion apply false
68
}

gradle/libs.versions.toml

Lines changed: 0 additions & 20 deletions
This file was deleted.

library/build.gradle.kts

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
import com.google.protobuf.gradle.id
21
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
32

43
plugins {
5-
alias(libs.plugins.android.library)
6-
alias(libs.plugins.kotlin.android)
7-
alias(libs.plugins.kotlinx.serialization)
4+
id("com.android.library")
5+
id("org.jetbrains.kotlin.android")
6+
id("org.jetbrains.kotlin.plugin.serialization")
87
id("maven-publish")
9-
10-
alias(libs.plugins.protobuf.compiler)
8+
id("com.google.protobuf") version "0.9.5"
119
}
1210

1311
group = "org.sessionfoundation"
1412
version = System.getenv("VERSION") ?: "dev-snapshot"
1513

14+
val protobufVersion = "4.33.1"
15+
1616
android {
1717
namespace = "org.sessionfoundation.libsession_util"
1818
compileSdk = 35
@@ -81,7 +81,7 @@ kotlin {
8181

8282
protobuf {
8383
protoc {
84-
artifact = libs.protoc.get().toString()
84+
artifact = "com.google.protobuf:protoc:$protobufVersion"
8585
}
8686

8787
plugins {
@@ -133,15 +133,16 @@ publishing {
133133
}
134134

135135
dependencies {
136-
androidTestImplementation(libs.junit)
137-
androidTestImplementation(libs.androidx.test.runner)
138-
androidTestImplementation(libs.androidx.test.rules)
139-
androidTestImplementation(libs.androidx.test.ext)
140136

141-
implementation(libs.androidx.annotations)
142-
implementation(libs.kotlinx.serialization.core)
137+
androidTestImplementation("junit:junit:4.13.2")
138+
androidTestImplementation("androidx.test:runner:1.7.0")
139+
androidTestImplementation("androidx.test:rules:1.7.0")
140+
androidTestImplementation("androidx.test.ext:junit:1.3.0")
141+
142+
implementation("androidx.annotation:annotation:1.9.1")
143+
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:1.9.0")
143144

144-
api(libs.protobuf.java)
145+
api("com.google.protobuf:protobuf-java:$protobufVersion")
145146

146147
protobuf(files("../libsession-util/proto/SessionProtos.proto"))
147148
}

library/src/main/cpp/protocol.cpp

Lines changed: 2 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -142,15 +142,15 @@ Java_network_loki_messenger_libsession_1util_protocol_SessionProtocol_encodeForG
142142
extern "C"
143143
JNIEXPORT jobject JNICALL
144144
Java_network_loki_messenger_libsession_1util_protocol_SessionProtocol_decodeForCommunity(
145-
JNIEnv *env, jobject thiz, jbyteArray payload, jlong now_epoch_ms,
145+
JNIEnv *env, jobject thiz, jbyteArray payload, jlong timestamp_ms,
146146
jbyteArray pro_backend_pub_key) {
147147
return run_catching_cxx_exception_or_throws<jobject>(env, [=] {
148148
jni_utils::JavaByteArrayRef payload_ref(env, payload);
149149

150150
auto decoded = session::decode_for_community(
151151
payload_ref.get(),
152152
std::chrono::sys_time<std::chrono::milliseconds>{
153-
std::chrono::milliseconds{now_epoch_ms}},
153+
std::chrono::milliseconds{timestamp_ms}},
154154
*java_to_cpp_array<32>(env, pro_backend_pub_key)
155155
);
156156

@@ -194,7 +194,6 @@ Java_network_loki_messenger_libsession_1util_protocol_SessionProtocol_decodeFor1
194194
jobject thiz,
195195
jbyteArray key,
196196
jbyteArray payload,
197-
jlong now_epoch_ms,
198197
jbyteArray pro_backend_pub_key) {
199198
return run_catching_cxx_exception_or_throws<jobject>(env, [=] {
200199
JavaByteArrayRef key_ref(env, key);
@@ -208,8 +207,6 @@ Java_network_loki_messenger_libsession_1util_protocol_SessionProtocol_decodeFor1
208207
return serializeDecodedEnvelope(env, session::decode_envelope(
209208
decode_key,
210209
JavaByteArrayRef(env, payload).get(),
211-
std::chrono::sys_time<std::chrono::milliseconds>{
212-
std::chrono::milliseconds{now_epoch_ms}},
213210
*java_to_cpp_array<32>(env, pro_backend_pub_key)
214211
)).release();
215212
});
@@ -222,7 +219,6 @@ Java_network_loki_messenger_libsession_1util_protocol_SessionProtocol_decodeForG
222219
jobject thiz,
223220
jbyteArray payload,
224221
jbyteArray my_ed25519_priv_key,
225-
jlong now_epoch_ms,
226222
jbyteArray group_ed25519_public_key,
227223
jobjectArray group_ed25519_private_keys,
228224
jbyteArray pro_backend_pub_key) {
@@ -245,38 +241,7 @@ Java_network_loki_messenger_libsession_1util_protocol_SessionProtocol_decodeForG
245241
return serializeDecodedEnvelope(env, session::decode_envelope(
246242
decode_key,
247243
JavaByteArrayRef(env, payload).get(),
248-
std::chrono::sys_time<std::chrono::milliseconds>{
249-
std::chrono::milliseconds{now_epoch_ms}},
250244
*java_to_cpp_array<32>(env, pro_backend_pub_key)
251245
)).release();
252246
});
253247
}
254-
255-
extern "C"
256-
JNIEXPORT jobject JNICALL
257-
Java_network_loki_messenger_libsession_1util_protocol_SessionProtocol_proFeaturesForMessage(
258-
JNIEnv *env, jobject thiz, jstring message_body) {
259-
return run_catching_cxx_exception_or_throws<jobject>(env, [=] {
260-
JavaCharsRef message_ref(env, message_body);
261-
262-
auto features = session::pro_features_for_utf16(
263-
reinterpret_cast<const char16_t *>(message_ref.chars()),
264-
message_ref.size()
265-
);
266-
267-
static BasicJavaClassInfo class_info(
268-
env,
269-
"network/loki/messenger/libsession_util/protocol/ProFeaturesForMsg",
270-
"(ILjava/lang/String;JI)V"
271-
);
272-
273-
return env->NewObject(
274-
class_info.java_class,
275-
class_info.constructor,
276-
static_cast<jint>(features.status),
277-
features.error.empty() ? nullptr : env->NewStringUTF(std::string(features.error).c_str()),
278-
static_cast<jlong>(features.bitset.data),
279-
static_cast<jint>(features.codepoint_count)
280-
);
281-
});
282-
}

library/src/main/java/network/loki/messenger/libsession_util/protocol/ProFeaturesForMsg.kt

Lines changed: 0 additions & 24 deletions
This file was deleted.

library/src/main/java/network/loki/messenger/libsession_util/protocol/SessionProtocol.kt

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ object SessionProtocol : LibSessionUtilCApi() {
1414
external fun decodeFor1o1(
1515
myEd25519PrivKey: ByteArray,
1616
payload: ByteArray,
17-
nowEpochMs: Long,
1817
proBackendPubKey: ByteArray, // 32 bytes backend key
1918
): DecodedEnvelope
2019

@@ -34,7 +33,7 @@ object SessionProtocol : LibSessionUtilCApi() {
3433

3534
external fun decodeForCommunity(
3635
payload: ByteArray,
37-
nowEpochMs: Long,
36+
timestampMs: Long,
3837
proBackendPubKey: ByteArray, // 32 bytes backend key
3938
): DecodedCommunityMessage
4039

@@ -50,21 +49,8 @@ object SessionProtocol : LibSessionUtilCApi() {
5049
external fun decodeForGroup(
5150
payload: ByteArray,
5251
myEd25519PrivKey: ByteArray,
53-
nowEpochMs: Long,
5452
groupEd25519PublicKey: ByteArray, // 33 bytes 03 prefixed key
5553
groupEd25519PrivateKeys: Array<ByteArray>, // all available group private keys
5654
proBackendPubKey: ByteArray, // 32 bytes backend key
5755
): DecodedEnvelope
58-
59-
private external fun proFeaturesForMessage(
60-
messageBody: String,
61-
proposedFeatures: Long
62-
): ProFeaturesForMsg
63-
64-
/**
65-
* Determines which Pro features shall be applied to a message based on its content and the proposed features.
66-
*/
67-
fun proFeaturesForMessage(
68-
messageBody: String,
69-
): ProFeaturesForMsg = proFeaturesForMessage(messageBody)
7056
}

library/src/main/java/network/loki/messenger/libsession_util/util/Bytes.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ class Bytes(val data: ByteArray) {
1818
return data.contentHashCode()
1919
}
2020

21+
override fun toString(): String {
22+
return "Bytes(${data.size} bytes)"
23+
}
24+
2125
companion object {
2226
fun ByteArray.toBytes(): Bytes {
2327
return Bytes(this)

settings.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ dependencyResolutionManagement {
1919
}
2020
}
2121

22-
rootProject.name = "libsession-util-android"
2322
include(":library")
2423
project(":library").name = "libsession-util-android"
2524

0 commit comments

Comments
 (0)