diff --git a/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java b/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java index 09b8e9ce3c..9d9e5f7969 100644 --- a/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java +++ b/src/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java @@ -129,7 +129,8 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper { db.execSQL(LokiMessageDatabase.getCreateTableCommand()); db.execSQL(LokiThreadDatabase.getCreateFriendRequestTableCommand()); db.execSQL(LokiThreadDatabase.getCreateSessionResetTableCommand()); - db.execSQL(LokiUserDatabase.getCreateTableCommand()); + db.execSQL(LokiUserDatabase.getCreateDisplayNameTableCommand()); + db.execSQL(LokiUserDatabase.getCreatePublicChatTokenTableCommand()); executeStatements(db, SmsDatabase.CREATE_INDEXS); executeStatements(db, MmsDatabase.CREATE_INDEXS); diff --git a/src/org/thoughtcrime/securesms/loki/LokiGroupChatPoller.kt b/src/org/thoughtcrime/securesms/loki/LokiGroupChatPoller.kt index 6dfb37fcf5..9346f2bda6 100644 --- a/src/org/thoughtcrime/securesms/loki/LokiGroupChatPoller.kt +++ b/src/org/thoughtcrime/securesms/loki/LokiGroupChatPoller.kt @@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.loki import android.content.Context import android.os.Handler import android.util.Log +import org.thoughtcrime.securesms.crypto.IdentityKeyUtil import org.thoughtcrime.securesms.database.DatabaseFactory import org.thoughtcrime.securesms.jobs.PushDecryptJob import org.thoughtcrime.securesms.util.TextSecurePreferences @@ -43,7 +44,8 @@ class LokiGroupChatPoller(private val context: Context, private val groupID: Lon private fun poll() { val userHexEncodedPublicKey = TextSecurePreferences.getLocalNumber(context) val lokiUserDatabase = DatabaseFactory.getLokiUserDatabase(context) - LokiGroupChatAPI(userHexEncodedPublicKey, lokiUserDatabase).getMessages(groupID).success { messages -> + val identityKeyPair = IdentityKeyUtil.getIdentityKeyPair(context) + LokiGroupChatAPI(userHexEncodedPublicKey, identityKeyPair.privateKey.serialize(), lokiUserDatabase).getMessages(groupID).success { messages -> messages.reversed().map { message -> val id = "${LokiGroupChatAPI.serverURL}.$groupID".toByteArray() val x1 = SignalServiceGroup(SignalServiceGroup.Type.UPDATE, id, null, null, null) diff --git a/src/org/thoughtcrime/securesms/loki/LokiUserDatabase.kt b/src/org/thoughtcrime/securesms/loki/LokiUserDatabase.kt index c17311d707..a2d04b71b1 100644 --- a/src/org/thoughtcrime/securesms/loki/LokiUserDatabase.kt +++ b/src/org/thoughtcrime/securesms/loki/LokiUserDatabase.kt @@ -12,10 +12,15 @@ import org.whispersystems.signalservice.loki.messaging.LokiUserDatabaseProtocol class LokiUserDatabase(context: Context, helper: SQLCipherOpenHelper) : Database(context, helper), LokiUserDatabaseProtocol { companion object { - private val tableName = "loki_user_display_name_database" + private val displayNameTable = "loki_user_display_name_database" private val hexEncodedPublicKey = "hex_encoded_public_key" private val displayName = "display_name" - @JvmStatic val createTableCommand = "CREATE TABLE $tableName ($hexEncodedPublicKey TEXT PRIMARY KEY, $displayName TEXT);" + @JvmStatic val createDisplayNameTableCommand = "CREATE TABLE $displayNameTable ($hexEncodedPublicKey TEXT PRIMARY KEY, $displayName TEXT);" + + private val publicChatTokenTable = "loki_user_public_chat_token_database" + private val server = "server" + private val token = "token" + @JvmStatic val createPublicChatTokenTableCommand = "CREATE TABLE $publicChatTokenTable ($server TEXT PRIMARY KEY, $token TEXT);" } override fun getDisplayName(hexEncodedPublicKey: String): String? { @@ -23,7 +28,7 @@ class LokiUserDatabase(context: Context, helper: SQLCipherOpenHelper) : Database return TextSecurePreferences.getProfileName(context) } else { val database = databaseHelper.readableDatabase - return database.get(tableName, "${Companion.hexEncodedPublicKey} = ?", arrayOf(hexEncodedPublicKey)) { cursor -> + return database.get(displayNameTable, "${Companion.hexEncodedPublicKey} = ?", arrayOf(hexEncodedPublicKey)) { cursor -> cursor.getString(cursor.getColumnIndexOrThrow(displayName)) } } @@ -34,7 +39,22 @@ class LokiUserDatabase(context: Context, helper: SQLCipherOpenHelper) : Database val row = ContentValues(2) row.put(Companion.hexEncodedPublicKey, hexEncodedPublicKey) row.put(Companion.displayName, displayName) - database.insertOrUpdate(tableName, row, "${Companion.hexEncodedPublicKey} = ?", arrayOf( hexEncodedPublicKey )) + database.insertOrUpdate(displayNameTable, row, "${Companion.hexEncodedPublicKey} = ?", arrayOf( hexEncodedPublicKey )) Recipient.from(context, Address.fromSerialized(hexEncodedPublicKey), false).notifyListeners() } + + override fun getToken(server: String): String? { + val database = databaseHelper.readableDatabase + return database.get(publicChatTokenTable, "${Companion.server} = ?", arrayOf( server )) { cursor -> + cursor.getString(cursor.getColumnIndexOrThrow(token)) + } + } + + override fun setToken(token: String, server: String) { + val database = databaseHelper.writableDatabase + val row = ContentValues(2) + row.put(Companion.server, server) + row.put(Companion.token, token) + database.insertOrUpdate(publicChatTokenTable, row, "${Companion.server} = ?", arrayOf( server )) + } } \ No newline at end of file