diff --git a/libsession-util/src/androidTest/java/network/loki/messenger/libsession_util/InstrumentedTests.kt b/libsession-util/src/androidTest/java/network/loki/messenger/libsession_util/InstrumentedTests.kt index 5f49cd6c94..e9d78475ad 100644 --- a/libsession-util/src/androidTest/java/network/loki/messenger/libsession_util/InstrumentedTests.kt +++ b/libsession-util/src/androidTest/java/network/loki/messenger/libsession_util/InstrumentedTests.kt @@ -89,7 +89,21 @@ class InstrumentedTests { assertEquals(1, newSeqNo) assertArrayEquals(expectedPush1, newToPush) + // We haven't dumped, so still need to dump: + assertTrue(userProfile.needsDump()) + // We did call push but we haven't confirmed it as stored yet, so this will still return true: + assertTrue(userProfile.needsPush()) + val dump = userProfile.dump() + // (in a real client we'd now store this to disk) + assertFalse(userProfile.needsDump()) + val expectedDump = ("d" + + "1:!i2e" + + "1:$").encodeToByteArray() + expectedPush1.size.toString().encodeToByteArray() + + ":".encodeToByteArray() + expectedPush1 + + "e".encodeToByteArray() + + assertArrayEquals(expectedDump, dump) userProfile.free() } diff --git a/libsession-util/src/main/cpp/session_util.cpp b/libsession-util/src/main/cpp/session_util.cpp index cea2162955..2fbc41d005 100644 --- a/libsession-util/src/main/cpp/session_util.cpp +++ b/libsession-util/src/main/cpp/session_util.cpp @@ -137,4 +137,12 @@ Java_network_loki_messenger_libsession_1util_UserProfile_setPic(JNIEnv *env, job auto* pic_string = new std::string(pic_chars); profile->set_profile_pic(*pic_string, key_str); +} +extern "C" +JNIEXPORT jbyteArray JNICALL +Java_network_loki_messenger_libsession_1util_ConfigBase_dump(JNIEnv *env, jobject thiz) { + auto config = ptrToConfigBase(env, thiz); + std::string dumped = config->dump(); + jbyteArray bytes = bytes_from_string(env, dumped); + return bytes; } \ No newline at end of file diff --git a/libsession-util/src/main/java/network/loki/messenger/libsession_util/Config.kt b/libsession-util/src/main/java/network/loki/messenger/libsession_util/Config.kt index eb53ddbbb5..7464cd26f6 100644 --- a/libsession-util/src/main/java/network/loki/messenger/libsession_util/Config.kt +++ b/libsession-util/src/main/java/network/loki/messenger/libsession_util/Config.kt @@ -13,6 +13,7 @@ sealed class ConfigBase(protected val /* yucky */ pointer: Long) { external fun needsPush(): Boolean external fun needsDump(): Boolean external fun push(): ConfigWithSeqNo + external fun dump(): ByteArray } class UserProfile(pointer: Long): ConfigBase(pointer) {