0
0
mirror of https://github.com/thunderbird/thunderbird-android.git synced 2024-09-19 19:52:14 +02:00

Move DisplayFolderRepository to :legacy:ui:folder module

This commit is contained in:
Wolf-Martell Montwé 2024-09-10 15:20:32 +02:00
parent bdf4c1764d
commit 51b875518c
No known key found for this signature in database
GPG Key ID: 6D45B21512ACBF72
7 changed files with 29 additions and 18 deletions

View File

@ -5,9 +5,9 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.asLiveData
import androidx.lifecycle.viewModelScope
import app.k9mail.legacy.account.Account
import app.k9mail.legacy.mailstore.DisplayFolderRepository
import app.k9mail.legacy.message.controller.MessageCountsProvider
import app.k9mail.legacy.search.SearchAccount
import app.k9mail.legacy.ui.folder.DisplayFolderRepository
import app.k9mail.legacy.ui.folder.DisplayUnifiedInbox
import app.k9mail.legacy.ui.folder.FolderList
import kotlinx.coroutines.CoroutineDispatcher

View File

@ -1,6 +1,5 @@
package com.fsck.k9.mailstore
import app.k9mail.legacy.mailstore.DisplayFolderRepository
import app.k9mail.legacy.mailstore.FolderRepository
import app.k9mail.legacy.mailstore.MessageListRepository
import app.k9mail.legacy.mailstore.MessageStoreManager
@ -16,12 +15,6 @@ val mailStoreModule = module {
accountManager = get(),
)
}
single {
DisplayFolderRepository(
messageStoreManager = get(),
accountManager = get(),
)
}
single { MessageViewInfoExtractorFactory(get(), get(), get()) }
single { StorageManager.getInstance(get()) }
single { SpecialFolderSelectionStrategy() }

View File

@ -1,17 +1,19 @@
package app.k9mail.legacy.mailstore
package app.k9mail.legacy.ui.folder
import app.k9mail.core.mail.folder.api.Folder
import app.k9mail.core.mail.folder.api.FolderType
import app.k9mail.legacy.account.Account
import app.k9mail.legacy.account.Account.FolderMode
import app.k9mail.legacy.account.AccountManager
import app.k9mail.legacy.di.DI
import app.k9mail.legacy.folder.DisplayFolder
import app.k9mail.legacy.mailstore.FolderTypeMapper.folderTypeOf
import app.k9mail.legacy.mailstore.FolderSettingsChangedListener
import app.k9mail.legacy.mailstore.FolderTypeMapper
import app.k9mail.legacy.mailstore.MessageStoreManager
import app.k9mail.legacy.message.controller.MessagingControllerRegistry
import app.k9mail.legacy.message.controller.SimpleMessagingListener
import kotlin.coroutines.CoroutineContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.channels.trySendBlocking
@ -24,8 +26,9 @@ import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.map
class DisplayFolderRepository(
private val messageStoreManager: MessageStoreManager,
private val accountManager: AccountManager,
private val messagingController: MessagingControllerRegistry,
private val messageStoreManager: MessageStoreManager,
private val coroutineContext: CoroutineContext = Dispatchers.IO,
) {
private val sortForDisplay =
@ -35,7 +38,7 @@ class DisplayFolderRepository(
.thenByDescending { it.isInTopGroup }
.thenBy(String.CASE_INSENSITIVE_ORDER) { it.folder.name }
private fun getDisplayFolders(account: Account, displayMode: FolderMode?): List<DisplayFolder> {
private fun getDisplayFolders(account: Account, displayMode: Account.FolderMode?): List<DisplayFolder> {
val messageStore = messageStoreManager.getMessageStore(account.uuid)
return messageStore.getDisplayFolders(
displayMode = displayMode ?: account.folderDisplayMode,
@ -45,7 +48,7 @@ class DisplayFolderRepository(
folder = Folder(
id = folder.id,
name = folder.name,
type = folderTypeOf(account, folder.id),
type = FolderTypeMapper.folderTypeOf(account, folder.id),
isLocalOnly = folder.isLocalOnly,
),
isInTopGroup = folder.isInTopGroup,
@ -55,8 +58,7 @@ class DisplayFolderRepository(
}.sortedWith(sortForDisplay)
}
fun getDisplayFoldersFlow(account: Account, displayMode: FolderMode): Flow<List<DisplayFolder>> {
val messagingController = DI.get<MessagingControllerRegistry>()
fun getDisplayFoldersFlow(account: Account, displayMode: Account.FolderMode): Flow<List<DisplayFolder>> {
val messageStore = messageStoreManager.getMessageStore(account.uuid)
return callbackFlow {
@ -85,6 +87,7 @@ class DisplayFolderRepository(
.flowOn(coroutineContext)
}
@OptIn(ExperimentalCoroutinesApi::class)
fun getDisplayFoldersFlow(accountUuid: String): Flow<List<DisplayFolder>> {
return accountManager.getAccountFlow(accountUuid)
.map { latestAccount ->

View File

@ -0,0 +1,13 @@
package app.k9mail.legacy.ui.folder
import org.koin.dsl.module
val uiFolderModule = module {
single {
DisplayFolderRepository(
accountManager = get(),
messagingController = get(),
messageStoreManager = get(),
)
}
}

View File

@ -2,6 +2,7 @@ package com.fsck.k9
import app.k9mail.feature.account.oauth.featureAccountOAuthModule
import app.k9mail.feature.launcher.di.featureLauncherModule
import app.k9mail.legacy.ui.folder.uiFolderModule
import com.fsck.k9.account.accountModule
import com.fsck.k9.activity.activityModule
import com.fsck.k9.contacts.contactsModule
@ -26,6 +27,7 @@ val uiModules = listOf(
uiBaseModule,
activityModule,
uiModule,
uiFolderModule,
settingsUiModule,
endToEndUiModule,
foldersUiModule,

View File

@ -7,7 +7,7 @@ import androidx.lifecycle.viewModelScope
import app.k9mail.legacy.account.Account
import app.k9mail.legacy.account.Account.FolderMode
import app.k9mail.legacy.folder.DisplayFolder
import app.k9mail.legacy.mailstore.DisplayFolderRepository
import app.k9mail.legacy.ui.folder.DisplayFolderRepository
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.flatMapLatest

View File

@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.asLiveData
import app.k9mail.legacy.account.Account
import app.k9mail.legacy.folder.DisplayFolder
import app.k9mail.legacy.mailstore.DisplayFolderRepository
import app.k9mail.legacy.ui.folder.DisplayFolderRepository
class ManageFoldersViewModel(
private val folderRepository: DisplayFolderRepository,