diff --git a/apps/android/app/src/main/cpp/simplex-api.c b/apps/android/app/src/main/cpp/simplex-api.c index 5be1d1fadd..29676bd57e 100644 --- a/apps/android/app/src/main/cpp/simplex-api.c +++ b/apps/android/app/src/main/cpp/simplex-api.c @@ -24,20 +24,42 @@ Java_chat_simplex_app_SimplexAppKt_initHS(__unused JNIEnv *env, __unused jclass // from simplex-chat typedef void* chat_ctrl; -extern chat_ctrl chat_init(const char *path); +extern char *chat_migrate_db(const char *path, const char *key); +extern chat_ctrl chat_init_key(const char *path, const char *key); +extern chat_ctrl chat_init(const char *path); // deprecated extern char *chat_send_cmd(chat_ctrl ctrl, const char *cmd); -extern char *chat_recv_msg(chat_ctrl ctrl); +extern char *chat_recv_msg(chat_ctrl ctrl); // deprecated extern char *chat_recv_msg_wait(chat_ctrl ctrl, const int wait); extern char *chat_parse_markdown(const char *str); -JNIEXPORT jlong JNICALL -Java_chat_simplex_app_SimplexAppKt_chatInit(JNIEnv *env, __unused jclass clazz, jstring datadir) { - const char *_data = (*env)->GetStringUTFChars(env, datadir, JNI_FALSE); - jlong res = (jlong)chat_init(_data); - (*env)->ReleaseStringUTFChars(env, datadir, _data); +JNIEXPORT jstring JNICALL +Java_chat_simplex_app_SimplexAppKt_chatMigrateDB(JNIEnv *env, __unused jclass clazz, jstring dbPath, jstring dbKey) { + const char *_dbPath = (*env)->GetStringUTFChars(env, dbPath, JNI_FALSE); + const char *_dbKey = (*env)->GetStringUTFChars(env, dbKey, JNI_FALSE); + jstring res = (jlong)chat_migrate_db(_dbPath, _dbKey); + (*env)->ReleaseStringUTFChars(env, dbPath, _dbPath); + (*env)->ReleaseStringUTFChars(env, dbKey, _dbKey); return res; } +JNIEXPORT jlong JNICALL +Java_chat_simplex_app_SimplexAppKt_chatInitKey(JNIEnv *env, __unused jclass clazz, jstring dbPath, jstring dbKey) { + const char *_dbPath = (*env)->GetStringUTFChars(env, dbPath, JNI_FALSE); + const char *_dbKey = (*env)->GetStringUTFChars(env, dbKey, JNI_FALSE); + jlong ctrl = (jlong)chat_init_key(_dbPath, _dbKey); + (*env)->ReleaseStringUTFChars(env, dbPath, _dbPath); + (*env)->ReleaseStringUTFChars(env, dbKey, _dbKey); + return ctrl; +} + +JNIEXPORT jlong JNICALL +Java_chat_simplex_app_SimplexAppKt_chatInit(JNIEnv *env, __unused jclass clazz, jstring dbPath) { + const char *_dbPath = (*env)->GetStringUTFChars(env, dbPath, JNI_FALSE); + jlong ctrl = (jlong)chat_init(_dbPath); + (*env)->ReleaseStringUTFChars(env, dbPath, _dbPath); + return ctrl; +} + JNIEXPORT jstring JNICALL Java_chat_simplex_app_SimplexAppKt_chatSendCmd(JNIEnv *env, __unused jclass clazz, jlong controller, jstring msg) { const char *_msg = (*env)->GetStringUTFChars(env, msg, JNI_FALSE); diff --git a/apps/android/app/src/main/java/chat/simplex/app/SimplexApp.kt b/apps/android/app/src/main/java/chat/simplex/app/SimplexApp.kt index c2c777c80b..3f0a5bc312 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/SimplexApp.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/SimplexApp.kt @@ -26,7 +26,9 @@ external fun pipeStdOutToSocket(socketName: String) : Int // SimpleX API typealias ChatCtrl = Long -external fun chatInit(path: String): ChatCtrl +external fun chatMigrateDB(dbPath: String, dbKey: String): String +external fun chatInitKey(dbPath: String, dbKey: String): ChatCtrl +external fun chatInit(dbPath: String): ChatCtrl external fun chatSendCmd(ctrl: ChatCtrl, msg: String): String external fun chatRecvMsg(ctrl: ChatCtrl): String external fun chatRecvMsgWait(ctrl: ChatCtrl, timeout: Int): String