Loading feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/AccountSetupScreen.kt +22 −6 Original line number Original line Diff line number Diff line Loading @@ -9,13 +9,19 @@ import app.k9mail.feature.account.setup.ui.AccountSetupContract.Effect import app.k9mail.feature.account.setup.ui.AccountSetupContract.Event import app.k9mail.feature.account.setup.ui.AccountSetupContract.Event import app.k9mail.feature.account.setup.ui.AccountSetupContract.SetupStep import app.k9mail.feature.account.setup.ui.AccountSetupContract.SetupStep import app.k9mail.feature.account.setup.ui.AccountSetupContract.ViewModel import app.k9mail.feature.account.setup.ui.AccountSetupContract.ViewModel import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryContract import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryScreen import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryScreen import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryViewModel import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryViewModel import app.k9mail.feature.account.setup.ui.incoming.AccountIncomingConfigContract import app.k9mail.feature.account.setup.ui.incoming.AccountIncomingConfigScreen import app.k9mail.feature.account.setup.ui.incoming.AccountIncomingConfigScreen import app.k9mail.feature.account.setup.ui.incoming.AccountIncomingConfigViewModel import app.k9mail.feature.account.setup.ui.incoming.AccountIncomingConfigViewModel import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract import app.k9mail.feature.account.setup.ui.options.AccountOptionsScreen import app.k9mail.feature.account.setup.ui.options.AccountOptionsScreen import app.k9mail.feature.account.setup.ui.options.AccountOptionsViewModel import app.k9mail.feature.account.setup.ui.outgoing.AccountOutgoingConfigContract import app.k9mail.feature.account.setup.ui.outgoing.AccountOutgoingConfigScreen import app.k9mail.feature.account.setup.ui.outgoing.AccountOutgoingConfigScreen import app.k9mail.feature.account.setup.ui.outgoing.AccountOutgoingConfigViewModel import app.k9mail.feature.account.setup.ui.outgoing.AccountOutgoingConfigViewModel import app.k9mail.feature.account.setup.ui.validation.AccountValidationContract import app.k9mail.feature.account.setup.ui.validation.AccountValidationScreen import app.k9mail.feature.account.setup.ui.validation.AccountValidationScreen import app.k9mail.feature.account.setup.ui.validation.AccountValidationViewModel import app.k9mail.feature.account.setup.ui.validation.AccountValidationViewModel import org.koin.androidx.compose.koinViewModel import org.koin.androidx.compose.koinViewModel Loading @@ -27,6 +33,16 @@ fun AccountSetupScreen( onFinish: (String) -> Unit, onFinish: (String) -> Unit, onBack: () -> Unit, onBack: () -> Unit, viewModel: ViewModel = koinViewModel<AccountSetupViewModel>(), viewModel: ViewModel = koinViewModel<AccountSetupViewModel>(), autoDiscoveryViewModel: AccountAutoDiscoveryContract.ViewModel = koinViewModel<AccountAutoDiscoveryViewModel>(), incomingViewModel: AccountIncomingConfigContract.ViewModel = koinViewModel<AccountIncomingConfigViewModel>(), incomingValidationViewModel: AccountValidationContract.ViewModel = koinViewModel<AccountValidationViewModel>( named(NAME_INCOMING_VALIDATION), ), outgoingViewModel: AccountOutgoingConfigContract.ViewModel = koinViewModel<AccountOutgoingConfigViewModel>(), outgoingValidationViewModel: AccountValidationContract.ViewModel = koinViewModel<AccountValidationViewModel>( named(NAME_OUTGOING_VALIDATION), ), optionsViewModel: AccountOptionsContract.ViewModel = koinViewModel<AccountOptionsViewModel>(), ) { ) { val (state, dispatch) = viewModel.observe { effect -> val (state, dispatch) = viewModel.observe { effect -> when (effect) { when (effect) { Loading @@ -47,7 +63,7 @@ fun AccountSetupScreen( ) ) }, }, onBack = { dispatch(Event.OnBack) }, onBack = { dispatch(Event.OnBack) }, viewModel = koinViewModel<AccountAutoDiscoveryViewModel>(), viewModel = autoDiscoveryViewModel, ) ) } } Loading @@ -55,7 +71,7 @@ fun AccountSetupScreen( AccountIncomingConfigScreen( AccountIncomingConfigScreen( onNext = { dispatch(Event.OnNext) }, onNext = { dispatch(Event.OnNext) }, onBack = { dispatch(Event.OnBack) }, onBack = { dispatch(Event.OnBack) }, viewModel = koinViewModel<AccountIncomingConfigViewModel>(), viewModel = incomingViewModel, ) ) } } Loading @@ -63,7 +79,7 @@ fun AccountSetupScreen( AccountValidationScreen( AccountValidationScreen( onNext = { dispatch(Event.OnNext) }, onNext = { dispatch(Event.OnNext) }, onBack = { dispatch(Event.OnBack) }, onBack = { dispatch(Event.OnBack) }, viewModel = koinViewModel<AccountValidationViewModel>(named(NAME_INCOMING_VALIDATION)), viewModel = incomingValidationViewModel, ) ) } } Loading @@ -71,7 +87,7 @@ fun AccountSetupScreen( AccountOutgoingConfigScreen( AccountOutgoingConfigScreen( onNext = { dispatch(Event.OnNext) }, onNext = { dispatch(Event.OnNext) }, onBack = { dispatch(Event.OnBack) }, onBack = { dispatch(Event.OnBack) }, viewModel = koinViewModel<AccountOutgoingConfigViewModel>(), viewModel = outgoingViewModel, ) ) } } Loading @@ -79,7 +95,7 @@ fun AccountSetupScreen( AccountValidationScreen( AccountValidationScreen( onNext = { dispatch(Event.OnNext) }, onNext = { dispatch(Event.OnNext) }, onBack = { dispatch(Event.OnBack) }, onBack = { dispatch(Event.OnBack) }, viewModel = koinViewModel<AccountValidationViewModel>(named(NAME_OUTGOING_VALIDATION)), viewModel = outgoingValidationViewModel, ) ) } } Loading @@ -87,7 +103,7 @@ fun AccountSetupScreen( AccountOptionsScreen( AccountOptionsScreen( onNext = { dispatch(Event.OnNext) }, onNext = { dispatch(Event.OnNext) }, onBack = { dispatch(Event.OnBack) }, onBack = { dispatch(Event.OnBack) }, viewModel = viewModel.optionsViewModel, viewModel = optionsViewModel, ) ) } } } } Loading feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/AccountSetupScreenKtTest.kt +17 −0 Original line number Original line Diff line number Diff line Loading @@ -7,6 +7,11 @@ import app.k9mail.core.ui.compose.theme.ThunderbirdTheme import app.k9mail.feature.account.setup.ui.AccountSetupContract.Effect import app.k9mail.feature.account.setup.ui.AccountSetupContract.Effect import app.k9mail.feature.account.setup.ui.AccountSetupContract.SetupStep import app.k9mail.feature.account.setup.ui.AccountSetupContract.SetupStep import app.k9mail.feature.account.setup.ui.AccountSetupContract.State import app.k9mail.feature.account.setup.ui.AccountSetupContract.State import app.k9mail.feature.account.setup.ui.autodiscovery.FakeAccountAutoDiscoveryViewModel import app.k9mail.feature.account.setup.ui.incoming.FakeAccountIncomingConfigViewModel import app.k9mail.feature.account.setup.ui.options.FakeAccountOptionsViewModel import app.k9mail.feature.account.setup.ui.outgoing.FakeAccountOutgoingConfigViewModel import app.k9mail.feature.account.setup.ui.validation.FakeAccountValidationViewModel import assertk.assertThat import assertk.assertThat import assertk.assertions.isEqualTo import assertk.assertions.isEqualTo import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.runTest Loading @@ -24,6 +29,12 @@ class AccountSetupScreenKtTest : ComposeTest() { onFinish = { }, onFinish = { }, onBack = { }, onBack = { }, viewModel = viewModel, viewModel = viewModel, autoDiscoveryViewModel = FakeAccountAutoDiscoveryViewModel(), incomingViewModel = FakeAccountIncomingConfigViewModel(), incomingValidationViewModel = FakeAccountValidationViewModel(), outgoingViewModel = FakeAccountOutgoingConfigViewModel(), outgoingValidationViewModel = FakeAccountValidationViewModel(), optionsViewModel = FakeAccountOptionsViewModel(), ) ) } } } } Loading @@ -47,6 +58,12 @@ class AccountSetupScreenKtTest : ComposeTest() { onFinish = { onFinishCounter++ }, onFinish = { onFinishCounter++ }, onBack = { onBackCounter++ }, onBack = { onBackCounter++ }, viewModel = viewModel, viewModel = viewModel, autoDiscoveryViewModel = FakeAccountAutoDiscoveryViewModel(), incomingViewModel = FakeAccountIncomingConfigViewModel(), incomingValidationViewModel = FakeAccountValidationViewModel(), outgoingViewModel = FakeAccountOutgoingConfigViewModel(), outgoingValidationViewModel = FakeAccountValidationViewModel(), optionsViewModel = FakeAccountOptionsViewModel(), ) ) } } } } Loading Loading
feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/AccountSetupScreen.kt +22 −6 Original line number Original line Diff line number Diff line Loading @@ -9,13 +9,19 @@ import app.k9mail.feature.account.setup.ui.AccountSetupContract.Effect import app.k9mail.feature.account.setup.ui.AccountSetupContract.Event import app.k9mail.feature.account.setup.ui.AccountSetupContract.Event import app.k9mail.feature.account.setup.ui.AccountSetupContract.SetupStep import app.k9mail.feature.account.setup.ui.AccountSetupContract.SetupStep import app.k9mail.feature.account.setup.ui.AccountSetupContract.ViewModel import app.k9mail.feature.account.setup.ui.AccountSetupContract.ViewModel import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryContract import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryScreen import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryScreen import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryViewModel import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryViewModel import app.k9mail.feature.account.setup.ui.incoming.AccountIncomingConfigContract import app.k9mail.feature.account.setup.ui.incoming.AccountIncomingConfigScreen import app.k9mail.feature.account.setup.ui.incoming.AccountIncomingConfigScreen import app.k9mail.feature.account.setup.ui.incoming.AccountIncomingConfigViewModel import app.k9mail.feature.account.setup.ui.incoming.AccountIncomingConfigViewModel import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract import app.k9mail.feature.account.setup.ui.options.AccountOptionsScreen import app.k9mail.feature.account.setup.ui.options.AccountOptionsScreen import app.k9mail.feature.account.setup.ui.options.AccountOptionsViewModel import app.k9mail.feature.account.setup.ui.outgoing.AccountOutgoingConfigContract import app.k9mail.feature.account.setup.ui.outgoing.AccountOutgoingConfigScreen import app.k9mail.feature.account.setup.ui.outgoing.AccountOutgoingConfigScreen import app.k9mail.feature.account.setup.ui.outgoing.AccountOutgoingConfigViewModel import app.k9mail.feature.account.setup.ui.outgoing.AccountOutgoingConfigViewModel import app.k9mail.feature.account.setup.ui.validation.AccountValidationContract import app.k9mail.feature.account.setup.ui.validation.AccountValidationScreen import app.k9mail.feature.account.setup.ui.validation.AccountValidationScreen import app.k9mail.feature.account.setup.ui.validation.AccountValidationViewModel import app.k9mail.feature.account.setup.ui.validation.AccountValidationViewModel import org.koin.androidx.compose.koinViewModel import org.koin.androidx.compose.koinViewModel Loading @@ -27,6 +33,16 @@ fun AccountSetupScreen( onFinish: (String) -> Unit, onFinish: (String) -> Unit, onBack: () -> Unit, onBack: () -> Unit, viewModel: ViewModel = koinViewModel<AccountSetupViewModel>(), viewModel: ViewModel = koinViewModel<AccountSetupViewModel>(), autoDiscoveryViewModel: AccountAutoDiscoveryContract.ViewModel = koinViewModel<AccountAutoDiscoveryViewModel>(), incomingViewModel: AccountIncomingConfigContract.ViewModel = koinViewModel<AccountIncomingConfigViewModel>(), incomingValidationViewModel: AccountValidationContract.ViewModel = koinViewModel<AccountValidationViewModel>( named(NAME_INCOMING_VALIDATION), ), outgoingViewModel: AccountOutgoingConfigContract.ViewModel = koinViewModel<AccountOutgoingConfigViewModel>(), outgoingValidationViewModel: AccountValidationContract.ViewModel = koinViewModel<AccountValidationViewModel>( named(NAME_OUTGOING_VALIDATION), ), optionsViewModel: AccountOptionsContract.ViewModel = koinViewModel<AccountOptionsViewModel>(), ) { ) { val (state, dispatch) = viewModel.observe { effect -> val (state, dispatch) = viewModel.observe { effect -> when (effect) { when (effect) { Loading @@ -47,7 +63,7 @@ fun AccountSetupScreen( ) ) }, }, onBack = { dispatch(Event.OnBack) }, onBack = { dispatch(Event.OnBack) }, viewModel = koinViewModel<AccountAutoDiscoveryViewModel>(), viewModel = autoDiscoveryViewModel, ) ) } } Loading @@ -55,7 +71,7 @@ fun AccountSetupScreen( AccountIncomingConfigScreen( AccountIncomingConfigScreen( onNext = { dispatch(Event.OnNext) }, onNext = { dispatch(Event.OnNext) }, onBack = { dispatch(Event.OnBack) }, onBack = { dispatch(Event.OnBack) }, viewModel = koinViewModel<AccountIncomingConfigViewModel>(), viewModel = incomingViewModel, ) ) } } Loading @@ -63,7 +79,7 @@ fun AccountSetupScreen( AccountValidationScreen( AccountValidationScreen( onNext = { dispatch(Event.OnNext) }, onNext = { dispatch(Event.OnNext) }, onBack = { dispatch(Event.OnBack) }, onBack = { dispatch(Event.OnBack) }, viewModel = koinViewModel<AccountValidationViewModel>(named(NAME_INCOMING_VALIDATION)), viewModel = incomingValidationViewModel, ) ) } } Loading @@ -71,7 +87,7 @@ fun AccountSetupScreen( AccountOutgoingConfigScreen( AccountOutgoingConfigScreen( onNext = { dispatch(Event.OnNext) }, onNext = { dispatch(Event.OnNext) }, onBack = { dispatch(Event.OnBack) }, onBack = { dispatch(Event.OnBack) }, viewModel = koinViewModel<AccountOutgoingConfigViewModel>(), viewModel = outgoingViewModel, ) ) } } Loading @@ -79,7 +95,7 @@ fun AccountSetupScreen( AccountValidationScreen( AccountValidationScreen( onNext = { dispatch(Event.OnNext) }, onNext = { dispatch(Event.OnNext) }, onBack = { dispatch(Event.OnBack) }, onBack = { dispatch(Event.OnBack) }, viewModel = koinViewModel<AccountValidationViewModel>(named(NAME_OUTGOING_VALIDATION)), viewModel = outgoingValidationViewModel, ) ) } } Loading @@ -87,7 +103,7 @@ fun AccountSetupScreen( AccountOptionsScreen( AccountOptionsScreen( onNext = { dispatch(Event.OnNext) }, onNext = { dispatch(Event.OnNext) }, onBack = { dispatch(Event.OnBack) }, onBack = { dispatch(Event.OnBack) }, viewModel = viewModel.optionsViewModel, viewModel = optionsViewModel, ) ) } } } } Loading
feature/account/setup/src/test/kotlin/app/k9mail/feature/account/setup/ui/AccountSetupScreenKtTest.kt +17 −0 Original line number Original line Diff line number Diff line Loading @@ -7,6 +7,11 @@ import app.k9mail.core.ui.compose.theme.ThunderbirdTheme import app.k9mail.feature.account.setup.ui.AccountSetupContract.Effect import app.k9mail.feature.account.setup.ui.AccountSetupContract.Effect import app.k9mail.feature.account.setup.ui.AccountSetupContract.SetupStep import app.k9mail.feature.account.setup.ui.AccountSetupContract.SetupStep import app.k9mail.feature.account.setup.ui.AccountSetupContract.State import app.k9mail.feature.account.setup.ui.AccountSetupContract.State import app.k9mail.feature.account.setup.ui.autodiscovery.FakeAccountAutoDiscoveryViewModel import app.k9mail.feature.account.setup.ui.incoming.FakeAccountIncomingConfigViewModel import app.k9mail.feature.account.setup.ui.options.FakeAccountOptionsViewModel import app.k9mail.feature.account.setup.ui.outgoing.FakeAccountOutgoingConfigViewModel import app.k9mail.feature.account.setup.ui.validation.FakeAccountValidationViewModel import assertk.assertThat import assertk.assertThat import assertk.assertions.isEqualTo import assertk.assertions.isEqualTo import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.runTest Loading @@ -24,6 +29,12 @@ class AccountSetupScreenKtTest : ComposeTest() { onFinish = { }, onFinish = { }, onBack = { }, onBack = { }, viewModel = viewModel, viewModel = viewModel, autoDiscoveryViewModel = FakeAccountAutoDiscoveryViewModel(), incomingViewModel = FakeAccountIncomingConfigViewModel(), incomingValidationViewModel = FakeAccountValidationViewModel(), outgoingViewModel = FakeAccountOutgoingConfigViewModel(), outgoingValidationViewModel = FakeAccountValidationViewModel(), optionsViewModel = FakeAccountOptionsViewModel(), ) ) } } } } Loading @@ -47,6 +58,12 @@ class AccountSetupScreenKtTest : ComposeTest() { onFinish = { onFinishCounter++ }, onFinish = { onFinishCounter++ }, onBack = { onBackCounter++ }, onBack = { onBackCounter++ }, viewModel = viewModel, viewModel = viewModel, autoDiscoveryViewModel = FakeAccountAutoDiscoveryViewModel(), incomingViewModel = FakeAccountIncomingConfigViewModel(), incomingValidationViewModel = FakeAccountValidationViewModel(), outgoingViewModel = FakeAccountOutgoingConfigViewModel(), outgoingValidationViewModel = FakeAccountValidationViewModel(), optionsViewModel = FakeAccountOptionsViewModel(), ) ) } } } } Loading