Loading feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/NavigationDrawerExternalContract.kt +8 −1 Original line number Diff line number Diff line package app.k9mail.feature.navigation.drawer import kotlinx.coroutines.flow.Flow interface NavigationDrawerExternalContract { data class DrawerConfig( val showUnifiedFolders: Boolean, val showStarredCount: Boolean, val showAccountSelector: Boolean, ) fun interface DrawerConfigLoader { fun loadDrawerConfig(): DrawerConfig fun loadDrawerConfigFlow(): Flow<DrawerConfig> } fun interface DrawerConfigWriter { fun writeDrawerConfig(drawerConfig: DrawerConfig) } } feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/NavigationDrawerModule.kt +7 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ 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.domain.usecase.SaveDrawerConfig import app.k9mail.feature.navigation.drawer.domain.usecase.SyncAccount import app.k9mail.feature.navigation.drawer.domain.usecase.SyncAllAccounts import app.k9mail.feature.navigation.drawer.ui.DrawerViewModel Loading @@ -18,6 +19,11 @@ val navigationDrawerModule: Module = module { configProver = get(), ) } single<UseCase.SaveDrawerConfig> { SaveDrawerConfig( drawerConfigWriter = get(), ) } single<UseCase.GetDisplayAccounts> { GetDisplayAccounts( Loading Loading @@ -50,6 +56,7 @@ val navigationDrawerModule: Module = module { viewModel { DrawerViewModel( getDrawerConfig = get(), saveDrawerConfig = get(), getDisplayAccounts = get(), getDisplayFoldersForAccount = get(), syncAccount = get(), Loading feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/domain/DomainContract.kt +4 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,10 @@ internal interface DomainContract { operator fun invoke(): Flow<DrawerConfig> } fun interface SaveDrawerConfig { operator fun invoke(drawerConfig: DrawerConfig): Flow<Unit> } fun interface GetDisplayAccounts { operator fun invoke(): Flow<List<DisplayAccount>> } Loading feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/domain/usecase/GetDrawerConfig.kt +1 −5 Original line number Diff line number Diff line Loading @@ -4,15 +4,11 @@ import app.k9mail.feature.navigation.drawer.NavigationDrawerExternalContract.Dra import app.k9mail.feature.navigation.drawer.NavigationDrawerExternalContract.DrawerConfigLoader import app.k9mail.feature.navigation.drawer.domain.DomainContract.UseCase import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow internal class GetDrawerConfig( private val configProver: DrawerConfigLoader, ) : UseCase.GetDrawerConfig { override operator fun invoke(): Flow<DrawerConfig> { // TODO This needs to be updated when the config changes return flow { emit(configProver.loadDrawerConfig()) } return configProver.loadDrawerConfigFlow() } } feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/domain/usecase/SaveDrawerConfig.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 import app.k9mail.feature.navigation.drawer.NavigationDrawerExternalContract.DrawerConfigWriter import app.k9mail.feature.navigation.drawer.domain.DomainContract.UseCase import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow internal class SaveDrawerConfig( private val drawerConfigWriter: DrawerConfigWriter, ) : UseCase.SaveDrawerConfig { override fun invoke(drawerConfig: NavigationDrawerExternalContract.DrawerConfig): Flow<Unit> { return flow { emit(drawerConfigWriter.writeDrawerConfig(drawerConfig)) } } } Loading
feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/NavigationDrawerExternalContract.kt +8 −1 Original line number Diff line number Diff line package app.k9mail.feature.navigation.drawer import kotlinx.coroutines.flow.Flow interface NavigationDrawerExternalContract { data class DrawerConfig( val showUnifiedFolders: Boolean, val showStarredCount: Boolean, val showAccountSelector: Boolean, ) fun interface DrawerConfigLoader { fun loadDrawerConfig(): DrawerConfig fun loadDrawerConfigFlow(): Flow<DrawerConfig> } fun interface DrawerConfigWriter { fun writeDrawerConfig(drawerConfig: DrawerConfig) } }
feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/NavigationDrawerModule.kt +7 −0 Original line number Diff line number Diff line Loading @@ -4,6 +4,7 @@ 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.domain.usecase.SaveDrawerConfig import app.k9mail.feature.navigation.drawer.domain.usecase.SyncAccount import app.k9mail.feature.navigation.drawer.domain.usecase.SyncAllAccounts import app.k9mail.feature.navigation.drawer.ui.DrawerViewModel Loading @@ -18,6 +19,11 @@ val navigationDrawerModule: Module = module { configProver = get(), ) } single<UseCase.SaveDrawerConfig> { SaveDrawerConfig( drawerConfigWriter = get(), ) } single<UseCase.GetDisplayAccounts> { GetDisplayAccounts( Loading Loading @@ -50,6 +56,7 @@ val navigationDrawerModule: Module = module { viewModel { DrawerViewModel( getDrawerConfig = get(), saveDrawerConfig = get(), getDisplayAccounts = get(), getDisplayFoldersForAccount = get(), syncAccount = get(), Loading
feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/domain/DomainContract.kt +4 −0 Original line number Diff line number Diff line Loading @@ -12,6 +12,10 @@ internal interface DomainContract { operator fun invoke(): Flow<DrawerConfig> } fun interface SaveDrawerConfig { operator fun invoke(drawerConfig: DrawerConfig): Flow<Unit> } fun interface GetDisplayAccounts { operator fun invoke(): Flow<List<DisplayAccount>> } Loading
feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/domain/usecase/GetDrawerConfig.kt +1 −5 Original line number Diff line number Diff line Loading @@ -4,15 +4,11 @@ import app.k9mail.feature.navigation.drawer.NavigationDrawerExternalContract.Dra import app.k9mail.feature.navigation.drawer.NavigationDrawerExternalContract.DrawerConfigLoader import app.k9mail.feature.navigation.drawer.domain.DomainContract.UseCase import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow internal class GetDrawerConfig( private val configProver: DrawerConfigLoader, ) : UseCase.GetDrawerConfig { override operator fun invoke(): Flow<DrawerConfig> { // TODO This needs to be updated when the config changes return flow { emit(configProver.loadDrawerConfig()) } return configProver.loadDrawerConfigFlow() } }
feature/navigation/drawer/src/main/kotlin/app/k9mail/feature/navigation/drawer/domain/usecase/SaveDrawerConfig.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 import app.k9mail.feature.navigation.drawer.NavigationDrawerExternalContract.DrawerConfigWriter import app.k9mail.feature.navigation.drawer.domain.DomainContract.UseCase import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flow internal class SaveDrawerConfig( private val drawerConfigWriter: DrawerConfigWriter, ) : UseCase.SaveDrawerConfig { override fun invoke(drawerConfig: NavigationDrawerExternalContract.DrawerConfig): Flow<Unit> { return flow { emit(drawerConfigWriter.writeDrawerConfig(drawerConfig)) } } }