Loading feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/AccountSetupModule.kt +2 −3 Original line number Diff line number Diff line Loading @@ -90,8 +90,6 @@ val featureAccountSetupModule: Module = module { viewModel { AccountSetupViewModel( createAccount = get(), optionsViewModel = get(), authStateStorage = get(), accountSetupStateRepository = get(), ) } Loading Loading @@ -128,9 +126,10 @@ val featureAccountSetupModule: Module = module { isIncomingValidation = false, ) } factory<AccountOptionsContract.ViewModel> { viewModel { AccountOptionsViewModel( validator = get(), accountSetupStateRepository = get(), ) } } Loading feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/AccountSetupContract.kt +1 −4 Original line number Diff line number Diff line Loading @@ -2,7 +2,6 @@ package app.k9mail.feature.account.setup.ui import app.k9mail.core.ui.compose.common.mvi.UnidirectionalViewModel import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryContract import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract interface AccountSetupContract { Loading @@ -15,9 +14,7 @@ interface AccountSetupContract { OPTIONS, } interface ViewModel : UnidirectionalViewModel<State, Event, Effect> { val optionsViewModel: AccountOptionsContract.ViewModel } interface ViewModel : UnidirectionalViewModel<State, Event, Effect> data class State( val setupStep: SetupStep = SetupStep.AUTO_CONFIG, Loading feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/AccountSetupViewModel.kt +4 −12 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ package app.k9mail.feature.account.setup.ui import androidx.lifecycle.viewModelScope import app.k9mail.core.ui.compose.common.mvi.BaseViewModel import app.k9mail.feature.account.oauth.domain.entity.AuthorizationState import app.k9mail.feature.account.setup.domain.DomainContract import app.k9mail.feature.account.setup.domain.DomainContract.UseCase import app.k9mail.feature.account.setup.ui.AccountSetupContract.Effect Loading @@ -10,16 +11,11 @@ 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.autodiscovery.AccountAutoDiscoveryContract import app.k9mail.feature.account.setup.ui.autodiscovery.toAccountSetupState import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract import app.k9mail.feature.account.setup.ui.options.toAccountOptions import com.fsck.k9.mail.oauth.AuthStateStorage import kotlinx.coroutines.launch @Suppress("LongParameterList") class AccountSetupViewModel( private val createAccount: UseCase.CreateAccount, override val optionsViewModel: AccountOptionsContract.ViewModel, private val authStateStorage: AuthStateStorage, private val accountSetupStateRepository: DomainContract.AccountSetupStateRepository, initialState: State = State(), ) : BaseViewModel<State, Event, Effect>(initialState), AccountSetupContract.ViewModel { Loading @@ -44,8 +40,6 @@ class AccountSetupViewModel( } accountSetupStateRepository.save(autoDiscoveryState.toAccountSetupState()) //TODO use account setup state? authStateStorage.updateAuthorizationState(autoDiscoveryState.authorizationState?.state) onNext() } Loading Loading @@ -118,7 +112,7 @@ class AccountSetupViewModel( private fun changeToSetupStep(setupStep: SetupStep) { if (setupStep == SetupStep.AUTO_CONFIG) { authStateStorage.updateAuthorizationState(authorizationState = null) accountSetupStateRepository.saveAuthorizationState(AuthorizationState(null)) } updateState { Loading @@ -129,8 +123,6 @@ class AccountSetupViewModel( } private fun onFinish() { val optionsState = optionsViewModel.state.value val accountSetupState = accountSetupStateRepository.getState() viewModelScope.launch { Loading @@ -138,8 +130,8 @@ class AccountSetupViewModel( emailAddress = accountSetupState.emailAddress ?: "", incomingServerSettings = accountSetupState.incomingServerSettings!!, outgoingServerSettings = accountSetupState.outgoingServerSettings!!, authorizationState = authStateStorage.getAuthorizationState(), options = optionsState.toAccountOptions(), authorizationState = accountSetupState.authorizationState?.state, options = accountSetupState.options!!, ) navigateNext(result) Loading feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsContract.kt +3 −3 Original line number Diff line number Diff line Loading @@ -8,9 +8,7 @@ import app.k9mail.feature.account.setup.domain.input.StringInputField interface AccountOptionsContract { interface ViewModel : UnidirectionalViewModel<State, Event, Effect> { fun initState(state: State) } interface ViewModel : UnidirectionalViewModel<State, Event, Effect> data class State( val accountName: StringInputField = StringInputField(), Loading @@ -29,6 +27,8 @@ interface AccountOptionsContract { data class OnMessageDisplayCountChanged(val messageDisplayCount: EmailDisplayCount) : Event data class OnShowNotificationChanged(val showNotification: Boolean) : Event object LoadAccountSetupState : Event object OnNextClicked : Event object OnBackClicked : Event } Loading feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsScreen.kt +8 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ package app.k9mail.feature.account.setup.ui.options import androidx.activity.compose.BackHandler import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import app.k9mail.core.ui.compose.common.DevicePreviews Loading @@ -15,6 +16,7 @@ import app.k9mail.feature.account.setup.ui.common.AccountSetupTopAppBar import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.Effect import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.Event import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.ViewModel import app.k9mail.feature.account.setup.ui.preview.PreviewAccountSetupStateRepository @Composable internal fun AccountOptionsScreen( Loading @@ -30,6 +32,10 @@ internal fun AccountOptionsScreen( } } LaunchedEffect(key1 = Unit) { dispatch(Event.LoadAccountSetupState) } BackHandler { dispatch(Event.OnBackClicked) } Loading Loading @@ -67,6 +73,7 @@ internal fun AccountOptionsScreenK9Preview() { onBack = {}, viewModel = AccountOptionsViewModel( validator = AccountOptionsValidator(), accountSetupStateRepository = PreviewAccountSetupStateRepository(), ), ) } Loading @@ -81,6 +88,7 @@ internal fun AccountOptionsScreenThunderbirdPreview() { onBack = {}, viewModel = AccountOptionsViewModel( validator = AccountOptionsValidator(), accountSetupStateRepository = PreviewAccountSetupStateRepository(), ), ) } Loading Loading
feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/AccountSetupModule.kt +2 −3 Original line number Diff line number Diff line Loading @@ -90,8 +90,6 @@ val featureAccountSetupModule: Module = module { viewModel { AccountSetupViewModel( createAccount = get(), optionsViewModel = get(), authStateStorage = get(), accountSetupStateRepository = get(), ) } Loading Loading @@ -128,9 +126,10 @@ val featureAccountSetupModule: Module = module { isIncomingValidation = false, ) } factory<AccountOptionsContract.ViewModel> { viewModel { AccountOptionsViewModel( validator = get(), accountSetupStateRepository = get(), ) } } Loading
feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/AccountSetupContract.kt +1 −4 Original line number Diff line number Diff line Loading @@ -2,7 +2,6 @@ package app.k9mail.feature.account.setup.ui import app.k9mail.core.ui.compose.common.mvi.UnidirectionalViewModel import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryContract import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract interface AccountSetupContract { Loading @@ -15,9 +14,7 @@ interface AccountSetupContract { OPTIONS, } interface ViewModel : UnidirectionalViewModel<State, Event, Effect> { val optionsViewModel: AccountOptionsContract.ViewModel } interface ViewModel : UnidirectionalViewModel<State, Event, Effect> data class State( val setupStep: SetupStep = SetupStep.AUTO_CONFIG, Loading
feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/AccountSetupViewModel.kt +4 −12 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ package app.k9mail.feature.account.setup.ui import androidx.lifecycle.viewModelScope import app.k9mail.core.ui.compose.common.mvi.BaseViewModel import app.k9mail.feature.account.oauth.domain.entity.AuthorizationState import app.k9mail.feature.account.setup.domain.DomainContract import app.k9mail.feature.account.setup.domain.DomainContract.UseCase import app.k9mail.feature.account.setup.ui.AccountSetupContract.Effect Loading @@ -10,16 +11,11 @@ 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.autodiscovery.AccountAutoDiscoveryContract import app.k9mail.feature.account.setup.ui.autodiscovery.toAccountSetupState import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract import app.k9mail.feature.account.setup.ui.options.toAccountOptions import com.fsck.k9.mail.oauth.AuthStateStorage import kotlinx.coroutines.launch @Suppress("LongParameterList") class AccountSetupViewModel( private val createAccount: UseCase.CreateAccount, override val optionsViewModel: AccountOptionsContract.ViewModel, private val authStateStorage: AuthStateStorage, private val accountSetupStateRepository: DomainContract.AccountSetupStateRepository, initialState: State = State(), ) : BaseViewModel<State, Event, Effect>(initialState), AccountSetupContract.ViewModel { Loading @@ -44,8 +40,6 @@ class AccountSetupViewModel( } accountSetupStateRepository.save(autoDiscoveryState.toAccountSetupState()) //TODO use account setup state? authStateStorage.updateAuthorizationState(autoDiscoveryState.authorizationState?.state) onNext() } Loading Loading @@ -118,7 +112,7 @@ class AccountSetupViewModel( private fun changeToSetupStep(setupStep: SetupStep) { if (setupStep == SetupStep.AUTO_CONFIG) { authStateStorage.updateAuthorizationState(authorizationState = null) accountSetupStateRepository.saveAuthorizationState(AuthorizationState(null)) } updateState { Loading @@ -129,8 +123,6 @@ class AccountSetupViewModel( } private fun onFinish() { val optionsState = optionsViewModel.state.value val accountSetupState = accountSetupStateRepository.getState() viewModelScope.launch { Loading @@ -138,8 +130,8 @@ class AccountSetupViewModel( emailAddress = accountSetupState.emailAddress ?: "", incomingServerSettings = accountSetupState.incomingServerSettings!!, outgoingServerSettings = accountSetupState.outgoingServerSettings!!, authorizationState = authStateStorage.getAuthorizationState(), options = optionsState.toAccountOptions(), authorizationState = accountSetupState.authorizationState?.state, options = accountSetupState.options!!, ) navigateNext(result) Loading
feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsContract.kt +3 −3 Original line number Diff line number Diff line Loading @@ -8,9 +8,7 @@ import app.k9mail.feature.account.setup.domain.input.StringInputField interface AccountOptionsContract { interface ViewModel : UnidirectionalViewModel<State, Event, Effect> { fun initState(state: State) } interface ViewModel : UnidirectionalViewModel<State, Event, Effect> data class State( val accountName: StringInputField = StringInputField(), Loading @@ -29,6 +27,8 @@ interface AccountOptionsContract { data class OnMessageDisplayCountChanged(val messageDisplayCount: EmailDisplayCount) : Event data class OnShowNotificationChanged(val showNotification: Boolean) : Event object LoadAccountSetupState : Event object OnNextClicked : Event object OnBackClicked : Event } Loading
feature/account/setup/src/main/kotlin/app/k9mail/feature/account/setup/ui/options/AccountOptionsScreen.kt +8 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ package app.k9mail.feature.account.setup.ui.options import androidx.activity.compose.BackHandler import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import app.k9mail.core.ui.compose.common.DevicePreviews Loading @@ -15,6 +16,7 @@ import app.k9mail.feature.account.setup.ui.common.AccountSetupTopAppBar import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.Effect import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.Event import app.k9mail.feature.account.setup.ui.options.AccountOptionsContract.ViewModel import app.k9mail.feature.account.setup.ui.preview.PreviewAccountSetupStateRepository @Composable internal fun AccountOptionsScreen( Loading @@ -30,6 +32,10 @@ internal fun AccountOptionsScreen( } } LaunchedEffect(key1 = Unit) { dispatch(Event.LoadAccountSetupState) } BackHandler { dispatch(Event.OnBackClicked) } Loading Loading @@ -67,6 +73,7 @@ internal fun AccountOptionsScreenK9Preview() { onBack = {}, viewModel = AccountOptionsViewModel( validator = AccountOptionsValidator(), accountSetupStateRepository = PreviewAccountSetupStateRepository(), ), ) } Loading @@ -81,6 +88,7 @@ internal fun AccountOptionsScreenThunderbirdPreview() { onBack = {}, viewModel = AccountOptionsViewModel( validator = AccountOptionsValidator(), accountSetupStateRepository = PreviewAccountSetupStateRepository(), ), ) } Loading