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

Commit beeebe25 authored by cketti's avatar cketti
Browse files

Remove FoldersLiveData

parent 2f52fd5f
Loading
Loading
Loading
Loading
+0 −58
Original line number Diff line number Diff line
package com.fsck.k9.ui.folders

import androidx.lifecycle.LiveData
import com.fsck.k9.Account
import com.fsck.k9.Account.FolderMode
import com.fsck.k9.AccountsChangeListener
import com.fsck.k9.Preferences
import com.fsck.k9.controller.MessagingController
import com.fsck.k9.controller.SimpleMessagingListener
import com.fsck.k9.mailstore.DisplayFolder
import com.fsck.k9.mailstore.FolderRepository
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext

class FoldersLiveData(
    private val folderRepository: FolderRepository,
    private val messagingController: MessagingController,
    private val preferences: Preferences,
    val account: Account,
    val displayMode: FolderMode?
) : LiveData<List<DisplayFolder>>() {

    private val messagingListener = object : SimpleMessagingListener() {
        override fun folderStatusChanged(account: Account, folderId: Long) {
            if (account.uuid == this@FoldersLiveData.account.uuid) {
                loadFoldersAsync()
            }
        }
    }

    private val accountsListener = AccountsChangeListener {
        loadFoldersAsync()
    }

    private fun loadFoldersAsync() {
        GlobalScope.launch(Dispatchers.Main) {
            val displayFolders = withContext(Dispatchers.IO) {
                folderRepository.getDisplayFolders(account, displayMode)
            }
            value = displayFolders
        }
    }

    override fun onActive() {
        super.onActive()
        messagingController.addListener(messagingListener)
        preferences.addOnAccountsChangeListener(accountsListener)
        loadFoldersAsync()
    }

    override fun onInactive() {
        super.onInactive()
        messagingController.removeListener(messagingListener)
        preferences.removeOnAccountsChangeListener(accountsListener)
    }
}
+0 −17
Original line number Diff line number Diff line
package com.fsck.k9.ui.folders

import com.fsck.k9.Account
import com.fsck.k9.Account.FolderMode
import com.fsck.k9.Preferences
import com.fsck.k9.controller.MessagingController
import com.fsck.k9.mailstore.FolderRepository

class FoldersLiveDataFactory(
    private val folderRepository: FolderRepository,
    private val messagingController: MessagingController,
    private val preferences: Preferences
) {
    fun create(account: Account, displayMode: FolderMode? = null): FoldersLiveData {
        return FoldersLiveData(folderRepository, messagingController, preferences, account, displayMode)
    }
}
+0 −1
Original line number Diff line number Diff line
@@ -7,6 +7,5 @@ import org.koin.dsl.module
val foldersUiModule = module {
    single { FolderNameFormatterFactory() }
    factory { (context: Context) -> FolderNameFormatter(context.resources) }
    single { FoldersLiveDataFactory(get(), get(), get()) }
    viewModel { FoldersViewModel(folderRepository = get()) }
}