Loading feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/NavigationDrawerExternalContract.kt 0 → 100644 +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 } } feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/NavigationDrawerModule.kt +8 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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(), Loading Loading @@ -48,6 +55,7 @@ val navigationDrawerModule: Module = module { viewModel { DrawerViewModel( getDrawerConfig = get(), getDisplayAccounts = get(), getDisplayFoldersForAccount = get(), ) Loading feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/domain/DomainContract.kt +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>> } Loading feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/domain/entity/DrawerConfig.kt 0 → 100644 +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, ) feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/domain/usecase/GetDrawerConfig.kt 0 → 100644 +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
feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/NavigationDrawerExternalContract.kt 0 → 100644 +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 } }
feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/NavigationDrawerModule.kt +8 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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(), Loading Loading @@ -48,6 +55,7 @@ val navigationDrawerModule: Module = module { viewModel { DrawerViewModel( getDrawerConfig = get(), getDisplayAccounts = get(), getDisplayFoldersForAccount = get(), ) Loading
feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/domain/DomainContract.kt +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>> } Loading
feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/domain/entity/DrawerConfig.kt 0 → 100644 +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, )
feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/domain/usecase/GetDrawerConfig.kt 0 → 100644 +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()) } } }