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

Unverified Commit 939d75c9 authored by Rafael Tonholo's avatar Rafael Tonholo
Browse files

refactor(outbox): use OutboxFolderManager to retrieve the outbox id in DefaultMessageCountsProvider

parent aa5c9fa8
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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
@@ -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()
        }

@@ -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)
+1 −0
Original line number Diff line number Diff line
@@ -52,6 +52,7 @@ val controllerModule = module {
            accountManager = get(),
            messageStoreManager = get(),
            messagingControllerRegistry = get(),
            outboxFolderManager = get(),
        )
    }

+2 −2
Original line number Diff line number Diff line
@@ -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 ->
+2 −0
Original line number Diff line number Diff line
@@ -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
@@ -91,4 +92,5 @@ val testModule = module {
        )
    }
    single<OutboxFolderManager> { FakeOutboxFolderManager() }
    single<LegacyAccountManager> { mock() }
}
+3 −0
Original line number Diff line number Diff line
@@ -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
@@ -48,6 +49,7 @@ class DefaultMessageCountsProviderTest {
        accountManager = accountManager,
        messageStoreManager = messageStoreManager,
        messagingControllerRegistry = messagingControllerRegistry,
        outboxFolderManager = FakeOutboxFolderManager(),
    )

    @Test
@@ -93,6 +95,7 @@ class DefaultMessageCountsProviderTest {
            accountManager = accountManager,
            messageStoreManager = messageStoreManager,
            messagingControllerRegistry = registry,
            outboxFolderManager = FakeOutboxFolderManager(),
        )
        val search = LocalMessageSearch().apply {
            addAccountUuid(account.uuid)