Loading legacy/core/src/main/java/com/fsck/k9/controller/DefaultMessageCountsProvider.kt +5 −2 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import kotlinx.coroutines.flow.flowOn import net.thunderbird.core.android.account.LegacyAccountDto import net.thunderbird.core.android.account.LegacyAccountDtoManager import net.thunderbird.core.logging.legacy.Log import net.thunderbird.feature.mail.folder.api.OutboxFolderManager import net.thunderbird.feature.search.legacy.LocalMessageSearch import net.thunderbird.feature.search.legacy.SearchAccount import net.thunderbird.feature.search.legacy.SearchConditionTreeNode Loading @@ -29,11 +30,12 @@ internal class DefaultMessageCountsProvider( private val accountManager: LegacyAccountDtoManager, private val messageStoreManager: MessageStoreManager, private val messagingControllerRegistry: MessagingControllerRegistry, private val outboxFolderManager: OutboxFolderManager, private val coroutineContext: CoroutineContext = Dispatchers.IO, ) : MessageCountsProvider { override fun getMessageCounts(account: LegacyAccountDto): MessageCounts { val search = LocalMessageSearch().apply { excludeSpecialFolders(account) excludeSpecialFolders(account, outboxFolderId = outboxFolderManager.getOutboxFolderIdSync(account.id)) limitToDisplayableFolders() } Loading Loading @@ -62,7 +64,8 @@ internal class DefaultMessageCountsProvider( override fun getUnreadMessageCount(account: LegacyAccountDto, folderId: Long): Int { return try { val messageStore = messageStoreManager.getMessageStore(account) return if (folderId == account.outboxFolderId) { val outboxFolderId = outboxFolderManager.getOutboxFolderIdSync(account.id) return if (folderId == outboxFolderId) { messageStore.getMessageCount(folderId) } else { messageStore.getUnreadMessageCount(folderId) Loading legacy/core/src/main/java/com/fsck/k9/controller/KoinModule.kt +1 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ val controllerModule = module { accountManager = get(), messageStoreManager = get(), messagingControllerRegistry = get(), outboxFolderManager = get(), ) } Loading legacy/core/src/main/java/com/fsck/k9/search/AccountSearchConditions.kt +2 −2 Original line number Diff line number Diff line Loading @@ -29,11 +29,11 @@ fun LocalMessageSearch.limitToDisplayableFolders() { * * The Inbox will always be included even if one of the special folders is configured to point to the Inbox. */ fun LocalMessageSearch.excludeSpecialFolders(account: LegacyAccountDto) { fun LocalMessageSearch.excludeSpecialFolders(account: LegacyAccountDto, outboxFolderId: Long) { this.excludeSpecialFolder(account.trashFolderId) this.excludeSpecialFolder(account.draftsFolderId) this.excludeSpecialFolder(account.spamFolderId) this.excludeSpecialFolder(account.outboxFolderId) this.excludeSpecialFolder(outboxFolderId) this.excludeSpecialFolder(account.sentFolderId) account.inboxFolderId?.let { inboxFolderId -> Loading legacy/core/src/test/java/com/fsck/k9/TestApp.kt +2 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ import com.fsck.k9.notification.NotificationResourceProvider import com.fsck.k9.notification.NotificationStrategy import com.fsck.k9.storage.storageModule import net.thunderbird.core.android.account.AccountDefaultsProvider import net.thunderbird.core.android.account.LegacyAccountManager import net.thunderbird.core.android.preferences.TestStoragePersister import net.thunderbird.core.featureflag.FeatureFlag import net.thunderbird.core.featureflag.FeatureFlagProvider Loading Loading @@ -91,4 +92,5 @@ val testModule = module { ) } single<OutboxFolderManager> { FakeOutboxFolderManager() } single<LegacyAccountManager> { mock() } } legacy/core/src/test/java/com/fsck/k9/controller/DefaultMessageCountsProviderTest.kt +3 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ import net.thunderbird.core.android.account.LegacyAccountDto import net.thunderbird.core.android.account.LegacyAccountDtoManager import net.thunderbird.feature.search.legacy.LocalMessageSearch import net.thunderbird.feature.search.legacy.SearchConditionTreeNode import net.thunderbird.legacy.core.mailstore.folder.FakeOutboxFolderManager import org.junit.Test import org.mockito.kotlin.anyOrNull import org.mockito.kotlin.doAnswer Loading Loading @@ -48,6 +49,7 @@ class DefaultMessageCountsProviderTest { accountManager = accountManager, messageStoreManager = messageStoreManager, messagingControllerRegistry = messagingControllerRegistry, outboxFolderManager = FakeOutboxFolderManager(), ) @Test Loading Loading @@ -93,6 +95,7 @@ class DefaultMessageCountsProviderTest { accountManager = accountManager, messageStoreManager = messageStoreManager, messagingControllerRegistry = registry, outboxFolderManager = FakeOutboxFolderManager(), ) val search = LocalMessageSearch().apply { addAccountUuid(account.uuid) Loading Loading
legacy/core/src/main/java/com/fsck/k9/controller/DefaultMessageCountsProvider.kt +5 −2 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import kotlinx.coroutines.flow.flowOn import net.thunderbird.core.android.account.LegacyAccountDto import net.thunderbird.core.android.account.LegacyAccountDtoManager import net.thunderbird.core.logging.legacy.Log import net.thunderbird.feature.mail.folder.api.OutboxFolderManager import net.thunderbird.feature.search.legacy.LocalMessageSearch import net.thunderbird.feature.search.legacy.SearchAccount import net.thunderbird.feature.search.legacy.SearchConditionTreeNode Loading @@ -29,11 +30,12 @@ internal class DefaultMessageCountsProvider( private val accountManager: LegacyAccountDtoManager, private val messageStoreManager: MessageStoreManager, private val messagingControllerRegistry: MessagingControllerRegistry, private val outboxFolderManager: OutboxFolderManager, private val coroutineContext: CoroutineContext = Dispatchers.IO, ) : MessageCountsProvider { override fun getMessageCounts(account: LegacyAccountDto): MessageCounts { val search = LocalMessageSearch().apply { excludeSpecialFolders(account) excludeSpecialFolders(account, outboxFolderId = outboxFolderManager.getOutboxFolderIdSync(account.id)) limitToDisplayableFolders() } Loading Loading @@ -62,7 +64,8 @@ internal class DefaultMessageCountsProvider( override fun getUnreadMessageCount(account: LegacyAccountDto, folderId: Long): Int { return try { val messageStore = messageStoreManager.getMessageStore(account) return if (folderId == account.outboxFolderId) { val outboxFolderId = outboxFolderManager.getOutboxFolderIdSync(account.id) return if (folderId == outboxFolderId) { messageStore.getMessageCount(folderId) } else { messageStore.getUnreadMessageCount(folderId) Loading
legacy/core/src/main/java/com/fsck/k9/controller/KoinModule.kt +1 −0 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ val controllerModule = module { accountManager = get(), messageStoreManager = get(), messagingControllerRegistry = get(), outboxFolderManager = get(), ) } Loading
legacy/core/src/main/java/com/fsck/k9/search/AccountSearchConditions.kt +2 −2 Original line number Diff line number Diff line Loading @@ -29,11 +29,11 @@ fun LocalMessageSearch.limitToDisplayableFolders() { * * The Inbox will always be included even if one of the special folders is configured to point to the Inbox. */ fun LocalMessageSearch.excludeSpecialFolders(account: LegacyAccountDto) { fun LocalMessageSearch.excludeSpecialFolders(account: LegacyAccountDto, outboxFolderId: Long) { this.excludeSpecialFolder(account.trashFolderId) this.excludeSpecialFolder(account.draftsFolderId) this.excludeSpecialFolder(account.spamFolderId) this.excludeSpecialFolder(account.outboxFolderId) this.excludeSpecialFolder(outboxFolderId) this.excludeSpecialFolder(account.sentFolderId) account.inboxFolderId?.let { inboxFolderId -> Loading
legacy/core/src/test/java/com/fsck/k9/TestApp.kt +2 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,7 @@ import com.fsck.k9.notification.NotificationResourceProvider import com.fsck.k9.notification.NotificationStrategy import com.fsck.k9.storage.storageModule import net.thunderbird.core.android.account.AccountDefaultsProvider import net.thunderbird.core.android.account.LegacyAccountManager import net.thunderbird.core.android.preferences.TestStoragePersister import net.thunderbird.core.featureflag.FeatureFlag import net.thunderbird.core.featureflag.FeatureFlagProvider Loading Loading @@ -91,4 +92,5 @@ val testModule = module { ) } single<OutboxFolderManager> { FakeOutboxFolderManager() } single<LegacyAccountManager> { mock() } }
legacy/core/src/test/java/com/fsck/k9/controller/DefaultMessageCountsProviderTest.kt +3 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ import net.thunderbird.core.android.account.LegacyAccountDto import net.thunderbird.core.android.account.LegacyAccountDtoManager import net.thunderbird.feature.search.legacy.LocalMessageSearch import net.thunderbird.feature.search.legacy.SearchConditionTreeNode import net.thunderbird.legacy.core.mailstore.folder.FakeOutboxFolderManager import org.junit.Test import org.mockito.kotlin.anyOrNull import org.mockito.kotlin.doAnswer Loading Loading @@ -48,6 +49,7 @@ class DefaultMessageCountsProviderTest { accountManager = accountManager, messageStoreManager = messageStoreManager, messagingControllerRegistry = messagingControllerRegistry, outboxFolderManager = FakeOutboxFolderManager(), ) @Test Loading Loading @@ -93,6 +95,7 @@ class DefaultMessageCountsProviderTest { accountManager = accountManager, messageStoreManager = messageStoreManager, messagingControllerRegistry = registry, outboxFolderManager = FakeOutboxFolderManager(), ) val search = LocalMessageSearch().apply { addAccountUuid(account.uuid) Loading