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

Commit 4e4babee authored by cketti's avatar cketti
Browse files

Change K9BackendFolder.saveMessage() to use MessageStore

parent 78e616ed
Loading
Loading
Loading
Loading
+8 −13
Original line number Diff line number Diff line
@@ -14,12 +14,12 @@ import com.fsck.k9.mailstore.MoreMessages as StoreMoreMessages
class K9BackendFolder(
    localStore: LocalStore,
    private val messageStore: MessageStore,
    private val saveMessageDataCreator: SaveMessageDataCreator,
    folderServerId: String
) : BackendFolder {
    private val database = localStore.database
    private val databaseId: String
    private val folderId: Long
    private val localFolder = localStore.getFolder(folderServerId)
    override val name: String
    override val visibleLimit: Int

@@ -91,24 +91,19 @@ class K9BackendFolder(
        messageStore.setMessageFlag(folderId, messageServerId, flag, value)
    }

    // TODO: Move implementation from LocalFolder to this class
    override fun saveCompleteMessage(message: Message) {
        requireMessageServerId(message)

        localFolder.appendMessages(listOf(message))

        val localMessage = localFolder.getMessage(message.uid)
        localMessage.setFlag(Flag.X_DOWNLOADED_FULL, true)
        saveMessage(message, partialMessage = false)
    }

    // TODO: Move implementation from LocalFolder to this class
    override fun savePartialMessage(message: Message) {
        requireMessageServerId(message)
        saveMessage(message, partialMessage = true)
    }

        localFolder.appendMessages(listOf(message))
    private fun saveMessage(message: Message, partialMessage: Boolean) {
        requireMessageServerId(message)

        val localMessage = localFolder.getMessage(message.uid)
        localMessage.setFlag(Flag.X_DOWNLOADED_PARTIAL, true)
        val messageData = saveMessageDataCreator.createSaveMessageData(message, partialMessage)
        messageStore.saveRemoteMessage(folderId, message.uid, messageData)
    }

    override fun getOldestMessageDate(): Date? {
+2 −1
Original line number Diff line number Diff line
@@ -10,10 +10,11 @@ class K9BackendStorage(
    private val localStore: LocalStore,
    private val messageStore: MessageStore,
    private val folderSettingsProvider: FolderSettingsProvider,
    private val saveMessageDataCreator: SaveMessageDataCreator,
    private val listeners: List<BackendFoldersRefreshListener>
) : BackendStorage {
    override fun getFolder(folderServerId: String): BackendFolder {
        return K9BackendFolder(localStore, messageStore, folderServerId)
        return K9BackendFolder(localStore, messageStore, saveMessageDataCreator, folderServerId)
    }

    override fun getFolderServerIds(): List<String> {
+3 −2
Original line number Diff line number Diff line
@@ -8,7 +8,8 @@ class K9BackendStorageFactory(
    private val folderRepositoryManager: FolderRepositoryManager,
    private val localStoreProvider: LocalStoreProvider,
    private val messageStoreManager: MessageStoreManager,
    private val specialFolderSelectionStrategy: SpecialFolderSelectionStrategy
    private val specialFolderSelectionStrategy: SpecialFolderSelectionStrategy,
    private val saveMessageDataCreator: SaveMessageDataCreator
) {
    fun createBackendStorage(account: Account): K9BackendStorage {
        val folderRepository = folderRepositoryManager.getFolderRepository(account)
@@ -24,6 +25,6 @@ class K9BackendStorageFactory(
        val specialFolderListener = SpecialFolderBackendFoldersRefreshListener(specialFolderUpdater)
        val autoExpandFolderListener = AutoExpandFolderBackendFoldersRefreshListener(preferences, account, folderRepository)
        val listeners = listOf(specialFolderListener, autoExpandFolderListener)
        return K9BackendStorage(localStore, messageStore, folderSettingsProvider, listeners)
        return K9BackendStorage(localStore, messageStore, folderSettingsProvider, saveMessageDataCreator, listeners)
    }
}
+16 −1
Original line number Diff line number Diff line
package com.fsck.k9.mailstore

import com.fsck.k9.message.extractors.AttachmentCounter
import com.fsck.k9.message.extractors.MessageFulltextCreator
import com.fsck.k9.message.extractors.MessagePreviewCreator
import org.koin.dsl.module

val mailStoreModule = module {
@@ -14,10 +17,22 @@ val mailStoreModule = module {
            folderRepositoryManager = get(),
            localStoreProvider = get(),
            messageStoreManager = get(),
            specialFolderSelectionStrategy = get()
            specialFolderSelectionStrategy = get(),
            saveMessageDataCreator = get()
        )
    }
    factory { SpecialLocalFoldersCreator(preferences = get(), localStoreProvider = get()) }
    single { MessageStoreManager(accountManager = get(), messageStoreFactory = get()) }
    single { MessageRepository(messageStoreManager = get()) }
    factory { MessagePreviewCreator.newInstance() }
    factory { MessageFulltextCreator.newInstance() }
    factory { AttachmentCounter.newInstance() }
    factory {
        SaveMessageDataCreator(
            encryptionExtractor = get(),
            messagePreviewCreator = get(),
            messageFulltextCreator = get(),
            attachmentCounter = get()
        )
    }
}
+5 −0
Original line number Diff line number Diff line
@@ -13,6 +13,11 @@ import com.fsck.k9.mail.Header
 * storage implementation.
 */
interface MessageStore {
    /**
     * Save a remote message in this store.
     */
    fun saveRemoteMessage(folderId: Long, messageServerId: String, messageData: SaveMessageData)

    /**
     * Move a message to another folder.
     *
Loading