Loading app/core/src/main/java/com/fsck/k9/mailstore/K9BackendFolder.kt +8 −13 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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? { Loading app/core/src/main/java/com/fsck/k9/mailstore/K9BackendStorage.kt +2 −1 Original line number Diff line number Diff line Loading @@ -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> { Loading app/core/src/main/java/com/fsck/k9/mailstore/K9BackendStorageFactory.kt +3 −2 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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) } } app/core/src/main/java/com/fsck/k9/mailstore/KoinModule.kt +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 { Loading @@ -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() ) } } app/core/src/main/java/com/fsck/k9/mailstore/MessageStore.kt +5 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
app/core/src/main/java/com/fsck/k9/mailstore/K9BackendFolder.kt +8 −13 Original line number Diff line number Diff line Loading @@ -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 Loading Loading @@ -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? { Loading
app/core/src/main/java/com/fsck/k9/mailstore/K9BackendStorage.kt +2 −1 Original line number Diff line number Diff line Loading @@ -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> { Loading
app/core/src/main/java/com/fsck/k9/mailstore/K9BackendStorageFactory.kt +3 −2 Original line number Diff line number Diff line Loading @@ -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) Loading @@ -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) } }
app/core/src/main/java/com/fsck/k9/mailstore/KoinModule.kt +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 { Loading @@ -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() ) } }
app/core/src/main/java/com/fsck/k9/mailstore/MessageStore.kt +5 −0 Original line number Diff line number Diff line Loading @@ -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