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

Unverified Commit e36d37a6 authored by Wolf-Martell Montwé's avatar Wolf-Martell Montwé
Browse files

Add GetDrawerConfig use case and DrawerConfig entity

parent b8c74572
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
package app.k9mail.feature.navigation.drawer

import app.k9mail.feature.navigation.drawer.domain.entity.DrawerConfig

interface NavigationDrawerExternalContract {

    fun interface DrawerConfigLoader {
        fun loadDrawerConfig(): DrawerConfig
    }
}
+8 −0
Original line number Diff line number Diff line
@@ -3,6 +3,7 @@ package app.k9mail.feature.navigation.drawer
import app.k9mail.feature.navigation.drawer.domain.DomainContract.UseCase
import app.k9mail.feature.navigation.drawer.domain.usecase.GetDisplayAccounts
import app.k9mail.feature.navigation.drawer.domain.usecase.GetDisplayFoldersForAccount
import app.k9mail.feature.navigation.drawer.domain.usecase.GetDrawerConfig
import app.k9mail.feature.navigation.drawer.legacy.AccountsViewModel
import app.k9mail.feature.navigation.drawer.legacy.FoldersViewModel
import app.k9mail.feature.navigation.drawer.ui.DrawerViewModel
@@ -14,6 +15,12 @@ import org.koin.dsl.module

val navigationDrawerModule: Module = module {

    single<UseCase.GetDrawerConfig> {
        GetDrawerConfig(
            configProver = get(),
        )
    }

    single<UseCase.GetDisplayAccounts> {
        GetDisplayAccounts(
            accountManager = get(),
@@ -48,6 +55,7 @@ val navigationDrawerModule: Module = module {

    viewModel {
        DrawerViewModel(
            getDrawerConfig = get(),
            getDisplayAccounts = get(),
            getDisplayFoldersForAccount = get(),
        )
+5 −0
Original line number Diff line number Diff line
package app.k9mail.feature.navigation.drawer.domain

import app.k9mail.feature.navigation.drawer.domain.entity.DisplayAccount
import app.k9mail.feature.navigation.drawer.domain.entity.DrawerConfig
import app.k9mail.legacy.ui.folder.DisplayFolder
import kotlinx.coroutines.flow.Flow

interface DomainContract {

    interface UseCase {
        fun interface GetDrawerConfig {
            operator fun invoke(): Flow<DrawerConfig>
        }

        fun interface GetDisplayAccounts {
            operator fun invoke(): Flow<List<DisplayAccount>>
        }
+6 −0
Original line number Diff line number Diff line
package app.k9mail.feature.navigation.drawer.domain.entity

data class DrawerConfig(
    val showUnifiedInbox: Boolean,
    val showStarredCount: Boolean,
)
+17 −0
Original line number Diff line number Diff line
package app.k9mail.feature.navigation.drawer.domain.usecase

import app.k9mail.feature.navigation.drawer.NavigationDrawerExternalContract.DrawerConfigLoader
import app.k9mail.feature.navigation.drawer.domain.DomainContract.UseCase
import app.k9mail.feature.navigation.drawer.domain.entity.DrawerConfig
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow

class GetDrawerConfig(
    private val configProver: DrawerConfigLoader,
) : UseCase.GetDrawerConfig {
    override operator fun invoke(): Flow<DrawerConfig> {
        return flow {
            emit(configProver.loadDrawerConfig())
        }
    }
}
Loading