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

Commit 4847c0fa authored by cketti's avatar cketti
Browse files

Add FolderType support to (K9)BackendStorage

parent 91ae94d4
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ import com.fsck.k9.Preferences
import com.fsck.k9.backend.api.BackendFolder
import com.fsck.k9.backend.api.BackendStorage
import com.fsck.k9.backend.api.FolderInfo
import com.fsck.k9.mail.Folder.FolderType

class K9BackendStorage(
        private val preferences: Preferences,
@@ -35,7 +36,7 @@ class K9BackendStorage(
    override fun createFolders(folders: List<FolderInfo>) {
        if (folders.isEmpty()) return

        val localFolders = folders.map { localStore.getFolder(it.serverId, it.name) }
        val localFolders = folders.map { localStore.getFolder(it.serverId, it.name, it.type) }
        localStore.createFolders(localFolders, account.displayCount)
    }

@@ -46,10 +47,11 @@ class K9BackendStorage(
                .forEach { it.delete() }
    }

    override fun changeFolder(folderServerId: String, name: String) {
    override fun changeFolder(folderServerId: String, name: String, type: FolderType) {
        database.execute(false) { db ->
            val values = ContentValues().apply {
                put("name", name)
                put("type", type.toDatabaseFolderType())
            }

            db.update("folders", values, "server_id = ?", arrayOf(folderServerId))
+3 −2
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ import com.fsck.k9.mail.FetchProfile;
import com.fsck.k9.mail.FetchProfile.Item;
import com.fsck.k9.mail.Flag;
import com.fsck.k9.mail.Folder;
import com.fsck.k9.mail.Folder.FolderType;
import com.fsck.k9.mail.MessageRetrievalListener;
import com.fsck.k9.mail.MessagingException;
import com.fsck.k9.mail.Multipart;
@@ -405,8 +406,8 @@ public class LocalStore {
        return new LocalFolder(this, serverId);
    }

    public LocalFolder getFolder(String serverId, String name) {
        return new LocalFolder(this, serverId, name);
    public LocalFolder getFolder(String serverId, String name, FolderType type) {
        return new LocalFolder(this, serverId, name, type);
    }

    // TODO this takes about 260-300ms, seems slow.
+3 −1
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ import com.fsck.k9.backend.api.BackendFolder
import com.fsck.k9.backend.api.FolderInfo
import com.fsck.k9.mail.Address
import com.fsck.k9.mail.Flag
import com.fsck.k9.mail.Folder.FolderType
import com.fsck.k9.mail.Message
import com.fsck.k9.mail.internet.MimeMessage
import com.fsck.k9.mail.internet.MimeMessageHelper
@@ -84,7 +85,7 @@ class K9BackendFolderTest : K9RobolectricTest() {
    fun createBackendFolder(): BackendFolder {
        val localStore: LocalStore = account.localStore
        val backendStorage = K9BackendStorage(preferences, account, localStore)
        backendStorage.createFolders(listOf(FolderInfo(FOLDER_SERVER_ID, FOLDER_NAME)))
        backendStorage.createFolders(listOf(FolderInfo(FOLDER_SERVER_ID, FOLDER_NAME, FOLDER_TYPE)))

        val folderServerIds = backendStorage.getFolderServerIds()
        assertTrue(FOLDER_SERVER_ID in folderServerIds)
@@ -127,6 +128,7 @@ class K9BackendFolderTest : K9RobolectricTest() {
    companion object {
        const val FOLDER_SERVER_ID = "testFolder"
        const val FOLDER_NAME = "Test Folder"
        val FOLDER_TYPE = FolderType.REGULAR
        const val MESSAGE_SERVER_ID = "msg001"
    }
}
+3 −1
Original line number Diff line number Diff line
package com.fsck.k9.backend.api

import com.fsck.k9.mail.Folder.FolderType

interface BackendStorage {
    fun getFolder(folderServerId: String): BackendFolder

@@ -7,7 +9,7 @@ interface BackendStorage {

    fun createFolders(folders: List<FolderInfo>)
    fun deleteFolders(folderServerIds: List<String>)
    fun changeFolder(folderServerId: String, name: String)
    fun changeFolder(folderServerId: String, name: String, type: FolderType)

    fun getExtraString(name: String): String?
    fun setExtraString(name: String, value: String)
+3 −1
Original line number Diff line number Diff line
package com.fsck.k9.backend.api

data class FolderInfo(val serverId: String, val name: String)
import com.fsck.k9.mail.Folder

data class FolderInfo(val serverId: String, val name: String, val type: Folder.FolderType)
Loading