Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 00bf4925 authored by cketti's avatar cketti Committed by GitHub
Browse files

Merge pull request #5266 from k9mail/cleanup

parents b2664087 105d55a3
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ internal class MoveMessageOperations(
        return database.execute(true) { database ->
            val threadInfo = threadMessageOperations.createOrUpdateParentThreadEntries(database, messageId, destinationFolderId)
            val destinationMessageId = createMessageEntry(database, messageId, destinationFolderId, threadInfo)
            threadMessageOperations.createOrUpdateThreadEntry(database, destinationMessageId, threadInfo)
            threadMessageOperations.createThreadEntryIfNecessary(database, destinationMessageId, threadInfo)

            convertOriginalMessageEntryToPlaceholderEntry(database, messageId)

@@ -32,7 +32,7 @@ internal class MoveMessageOperations(
        database: SQLiteDatabase,
        messageId: Long,
        destinationFolderId: Long,
        threadInfo: ThreadInfo
        threadInfo: ThreadInfo?
    ): Long {
        val destinationUid = K9.LOCAL_UID_PREFIX + UUID.randomUUID().toString()

@@ -81,7 +81,7 @@ internal class MoveMessageOperations(
            }
        }

        val placeHolderMessageId = threadInfo.messageId
        val placeHolderMessageId = threadInfo?.messageId
        return if (placeHolderMessageId != null) {
            database.update("messages", contentValues, "id = ?", arrayOf(placeHolderMessageId.toString()))
            placeHolderMessageId
+3 −3
Original line number Diff line number Diff line
@@ -116,11 +116,11 @@ internal class SaveMessageOperations(
            messageServerId,
            rootMessagePartId,
            messageData,
            replaceMessageId = threadInfo.messageId
            replaceMessageId = threadInfo?.messageId
        )

        if (threadInfo.threadId == null) {
            threadMessageOperations.createThreadEntry(database, messageId, threadInfo.rootId, threadInfo.parentId)
        if (threadInfo?.threadId == null) {
            threadMessageOperations.createThreadEntry(database, messageId, threadInfo?.rootId, threadInfo?.parentId)
        }

        createOrReplaceFulltextEntry(database, messageId, messageData)
+11 −19
Original line number Diff line number Diff line
@@ -13,7 +13,7 @@ internal class ThreadMessageOperations {
        database: SQLiteDatabase,
        messageId: Long,
        destinationFolderId: Long
    ): ThreadInfo {
    ): ThreadInfo? {
        val threadHeaders = getMessageThreadHeaders(database, messageId)
        return doMessageThreading(database, destinationFolderId, threadHeaders)
    }
@@ -48,15 +48,9 @@ internal class ThreadMessageOperations {
        }
    }

    fun createOrUpdateThreadEntry(database: SQLiteDatabase, messageId: Long, threadInfo: ThreadInfo) {
        if (threadInfo.threadId == null) {
            createThreadEntry(database, messageId, threadInfo.rootId, threadInfo.parentId)
        } else {
            val contentValues = ContentValues().apply {
                put("message_id", messageId)
            }

            database.update("threads", contentValues, "id = ?", arrayOf(threadInfo.threadId.toString()))
    fun createThreadEntryIfNecessary(database: SQLiteDatabase, messageId: Long, threadInfo: ThreadInfo?) {
        if (threadInfo?.threadId == null) {
            createThreadEntry(database, messageId, threadInfo?.rootId, threadInfo?.parentId)
        }
    }

@@ -71,7 +65,7 @@ internal class ThreadMessageOperations {
    }

    // TODO: Use MessageIdParser
    fun doMessageThreading(database: SQLiteDatabase, folderId: Long, threadHeaders: ThreadHeaders): ThreadInfo {
    fun doMessageThreading(database: SQLiteDatabase, folderId: Long, threadHeaders: ThreadHeaders): ThreadInfo? {
        val messageIdHeader = threadHeaders.messageIdHeader
        val msgThreadInfo = getThreadInfo(database, folderId, messageIdHeader, onlyEmpty = true)

@@ -87,7 +81,6 @@ internal class ThreadMessageOperations {
        if (messageIdValues.isEmpty()) {
            // This is not a reply, nothing to do for us.
            return msgThreadInfo
                ?: ThreadInfo(threadId = null, messageId = null, messageIdHeader, rootId = null, parentId = null)
        }

        var rootId: Long? = null
@@ -101,10 +94,10 @@ internal class ThreadMessageOperations {
                }
            } else {
                if (rootId == null) {
                    rootId = threadInfo.rootId!!
                    rootId = threadInfo.rootId
                } else if (threadInfo.rootId != rootId) {
                    // Merge this thread into our thread
                    updateThreadToNewRoot(database, threadInfo.rootId!!, rootId, parentId)
                    updateThreadToNewRoot(database, threadInfo.rootId, rootId, parentId)
                }
                parentId = threadInfo.threadId
            }
@@ -119,7 +112,7 @@ internal class ThreadMessageOperations {
            }
        }

        return ThreadInfo(msgThreadInfo?.threadId, msgThreadInfo?.messageId, messageIdHeader, rootId, parentId)
        return ThreadInfo(msgThreadInfo?.threadId, msgThreadInfo?.messageId, rootId!!, parentId)
    }

    private fun updateThreadToNewRoot(database: SQLiteDatabase, oldRootId: Long, rootId: Long, parentId: Long?) {
@@ -178,9 +171,9 @@ internal class ThreadMessageOperations {
            if (cursor.moveToFirst()) {
                val threadId = cursor.getLong(0)
                val messageId = cursor.getLong(1)
                val rootId = if (cursor.isNull(2)) null else cursor.getLong(2)
                val rootId = cursor.getLong(2)
                val parentId = if (cursor.isNull(3)) null else cursor.getLong(3)
                ThreadInfo(threadId, messageId, messageIdHeader, rootId, parentId)
                ThreadInfo(threadId, messageId, rootId, parentId)
            } else {
                null
            }
@@ -212,8 +205,7 @@ internal class ThreadMessageOperations {
internal data class ThreadInfo(
    val threadId: Long?,
    val messageId: Long?,
    val messageIdHeader: String?,
    val rootId: Long?,
    val rootId: Long,
    val parentId: Long?
)

+4 −17
Original line number Diff line number Diff line
@@ -16,15 +16,7 @@ class ThreadMessageOperationsTest : RobolectricTest() {
            ThreadHeaders(messageIdHeader = "<msg001@domain.example>", inReplyToHeader = null, referencesHeader = null)
        )

        assertThat(threadInfo).isEqualTo(
            ThreadInfo(
                threadId = null,
                messageId = null,
                messageIdHeader = "<msg001@domain.example>",
                rootId = null,
                parentId = null
            )
        )
        assertThat(threadInfo).isNull()

        assertThat(sqliteDatabase.readThreads()).isEmpty()
    }
@@ -59,8 +51,7 @@ class ThreadMessageOperationsTest : RobolectricTest() {
            ThreadInfo(
                threadId = null,
                messageId = null,
                messageIdHeader = "<msg002@domain.example>",
                rootId = rootThread.id,
                rootId = rootThread.id!!,
                parentId = rootThread.id
            )
        )
@@ -95,7 +86,6 @@ class ThreadMessageOperationsTest : RobolectricTest() {
            ThreadInfo(
                threadId = null,
                messageId = null,
                messageIdHeader = "<msg002@domain.example>",
                rootId = threadId,
                parentId = threadId
            )
@@ -137,7 +127,6 @@ class ThreadMessageOperationsTest : RobolectricTest() {
            ThreadInfo(
                threadId = threadId1,
                messageId = messageId1,
                messageIdHeader = "<msg001@domain.example>",
                rootId = threadId1,
                parentId = null
            )
@@ -190,8 +179,7 @@ class ThreadMessageOperationsTest : RobolectricTest() {
            ThreadInfo(
                threadId = threadId2,
                messageId = messageId2,
                messageIdHeader = "<msg002@domain.example>",
                rootId = newRootThread.id,
                rootId = newRootThread.id!!,
                parentId = threadId1
            )
        )
@@ -266,8 +254,7 @@ class ThreadMessageOperationsTest : RobolectricTest() {
            ThreadInfo(
                threadId = threadIdD,
                messageId = messageIdD,
                messageIdHeader = "<msgD@domain.example>",
                rootId = threadA.id,
                rootId = threadA.id!!,
                parentId = threadIdC
            )
        )