|
|
|
@ -207,52 +207,52 @@ class LokiMessageDatabase(context: Context, helper: SQLCipherOpenHelper) : Datab
|
|
|
|
|
messages.add(cursor.getLong(messageID) to cursor.getLong(serverID))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
var deletedCount = 0L
|
|
|
|
|
database.beginTransaction()
|
|
|
|
|
messages.forEach { (messageId, serverId) ->
|
|
|
|
|
deletedCount += database.delete(messageIDTable, "$messageID = ? AND $serverID = ?", arrayOf(messageId.toString(), serverId.toString()))
|
|
|
|
|
database.delete(messageIDTable, "$messageID = ? AND $serverID = ?", arrayOf(messageId.toString(), serverId.toString()))
|
|
|
|
|
}
|
|
|
|
|
val mappingDeleted = database.delete(messageThreadMappingTable, "$threadID = ?", arrayOf(threadId.toString()))
|
|
|
|
|
database.delete(messageThreadMappingTable, "$threadID = ?", arrayOf(threadId.toString()))
|
|
|
|
|
database.setTransactionSuccessful()
|
|
|
|
|
} finally {
|
|
|
|
|
database.endTransaction()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fun getMessageServerHash(messageID: Long): String? {
|
|
|
|
|
val database = databaseHelper.readableDatabase
|
|
|
|
|
return database.get(messageHashTable, "${Companion.messageID} = ?", arrayOf(messageID.toString())) { cursor ->
|
|
|
|
|
fun getMessageServerHash(messageID: Long, mms: Boolean): String? = getMessageTables(mms).firstNotNullOfOrNull {
|
|
|
|
|
databaseHelper.readableDatabase.get(it, "${Companion.messageID} = ?", arrayOf(messageID.toString())) { cursor ->
|
|
|
|
|
cursor.getString(serverHash)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fun setMessageServerHash(messageID: Long, serverHash: String) {
|
|
|
|
|
val database = databaseHelper.writableDatabase
|
|
|
|
|
val contentValues = ContentValues(2)
|
|
|
|
|
contentValues.put(Companion.messageID, messageID)
|
|
|
|
|
contentValues.put(Companion.serverHash, serverHash)
|
|
|
|
|
database.insertOrUpdate(messageHashTable, contentValues, "${Companion.messageID} = ?", arrayOf(messageID.toString()))
|
|
|
|
|
fun setMessageServerHash(messageID: Long, mms: Boolean, serverHash: String) {
|
|
|
|
|
val contentValues = ContentValues(2).apply {
|
|
|
|
|
put(Companion.messageID, messageID)
|
|
|
|
|
put(Companion.serverHash, serverHash)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
databaseHelper.writableDatabase.apply {
|
|
|
|
|
insertOrUpdate(getMessageTable(mms), contentValues, "${Companion.messageID} = ?", arrayOf(messageID.toString()))
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fun deleteMessageServerHash(messageID: Long) {
|
|
|
|
|
val database = databaseHelper.writableDatabase
|
|
|
|
|
database.delete(messageHashTable, "${Companion.messageID} = ?", arrayOf(messageID.toString()))
|
|
|
|
|
fun deleteMessageServerHash(messageID: Long, mms: Boolean) {
|
|
|
|
|
getMessageTables(mms).firstOrNull {
|
|
|
|
|
databaseHelper.writableDatabase.delete(it, "${Companion.messageID} = ?", arrayOf(messageID.toString())) > 0
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fun deleteMessageServerHashes(messageIDs: List<Long>) {
|
|
|
|
|
val database = databaseHelper.writableDatabase
|
|
|
|
|
database.delete(
|
|
|
|
|
messageHashTable,
|
|
|
|
|
"${Companion.messageID} IN (${messageIDs.map { "?" }.joinToString(",")})",
|
|
|
|
|
fun deleteMessageServerHashes(messageIDs: List<Long>, mms: Boolean) {
|
|
|
|
|
databaseHelper.writableDatabase.delete(
|
|
|
|
|
getMessageTable(mms),
|
|
|
|
|
"${Companion.messageID} IN (${messageIDs.joinToString(",") { "?" }})",
|
|
|
|
|
messageIDs.map { "$it" }.toTypedArray()
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fun migrateThreadId(legacyThreadId: Long, newThreadId: Long) {
|
|
|
|
|
val database = databaseHelper.writableDatabase
|
|
|
|
|
val contentValues = ContentValues(1)
|
|
|
|
|
contentValues.put(threadID, newThreadId)
|
|
|
|
|
database.update(messageThreadMappingTable, contentValues, "$threadID = ?", arrayOf(legacyThreadId.toString()))
|
|
|
|
|
}
|
|
|
|
|
private fun getMessageTables(mms: Boolean) = sequenceOf(
|
|
|
|
|
getMessageTable(mms),
|
|
|
|
|
messageHashTable
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
private fun getMessageTable(mms: Boolean) = if (mms) mmsHashTable else smsHashTable
|
|
|
|
|
}
|