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

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

Change AutoDiscovery to save state

parent b005e26a
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -97,6 +97,7 @@ val featureAccountSetupModule: Module = module {
        AccountAutoDiscoveryViewModel(
            validator = get(),
            getAutoDiscovery = get(),
            accountSetupStateRepository = get(),
            oAuthViewModel = get(),
        )
    }
+0 −2
Original line number Diff line number Diff line
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

interface AccountSetupContract {

@@ -25,7 +24,6 @@ interface AccountSetupContract {
        object OnNext : Event

        data class OnAutoDiscoveryFinished(
            val state: AccountAutoDiscoveryContract.State,
            val isAutomaticConfig: Boolean,
        ) : Event

+1 −2
Original line number Diff line number Diff line
@@ -54,10 +54,9 @@ fun AccountSetupScreen(
    when (state.value.setupStep) {
        SetupStep.AUTO_CONFIG -> {
            AccountAutoDiscoveryScreen(
                onNext = { autoDiscoveryState, isAutomaticConfig ->
                onNext = { isAutomaticConfig ->
                    dispatch(
                        Event.OnAutoDiscoveryFinished(
                            autoDiscoveryState,
                            isAutomaticConfig,
                        ),
                    )
+1 −9
Original line number Diff line number Diff line
@@ -9,8 +9,6 @@ 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.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 kotlinx.coroutines.launch

@Suppress("LongParameterList")
@@ -22,7 +20,7 @@ class AccountSetupViewModel(

    override fun event(event: Event) {
        when (event) {
            is Event.OnAutoDiscoveryFinished -> onAutoDiscoveryFinished(event.state, event.isAutomaticConfig)
            is Event.OnAutoDiscoveryFinished -> onAutoDiscoveryFinished(event.isAutomaticConfig)

            Event.OnBack -> onBack()
            Event.OnNext -> onNext()
@@ -30,7 +28,6 @@ class AccountSetupViewModel(
    }

    private fun onAutoDiscoveryFinished(
        autoDiscoveryState: AccountAutoDiscoveryContract.State,
        isAutomaticConfig: Boolean,
    ) {
        updateState {
@@ -39,8 +36,6 @@ class AccountSetupViewModel(
            )
        }

        accountSetupStateRepository.save(autoDiscoveryState.toAccountSetupState())

        onNext()
    }

@@ -48,7 +43,6 @@ class AccountSetupViewModel(
        when (state.value.setupStep) {
            SetupStep.AUTO_CONFIG -> {
                if (state.value.isAutomaticConfig) {
                    // TODO save state for incoming/outgoing server settings
                    changeToSetupStep(SetupStep.INCOMING_VALIDATION)
                } else {
                    changeToSetupStep(SetupStep.INCOMING_CONFIG)
@@ -56,7 +50,6 @@ class AccountSetupViewModel(
            }

            SetupStep.INCOMING_CONFIG -> {
                // TODO save state for incoming server settings
                changeToSetupStep(SetupStep.INCOMING_VALIDATION)
            }

@@ -69,7 +62,6 @@ class AccountSetupViewModel(
            }

            SetupStep.OUTGOING_CONFIG -> {
                // TODO save state for outgoing server settings
                changeToSetupStep(SetupStep.OUTGOING_VALIDATION)
            }

+7 −5
Original line number Diff line number Diff line
@@ -16,12 +16,12 @@ import app.k9mail.feature.account.oauth.ui.preview.PreviewAccountOAuthViewModel
import app.k9mail.feature.account.setup.R
import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryContract.Effect
import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryContract.Event
import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryContract.State
import app.k9mail.feature.account.setup.ui.autodiscovery.AccountAutoDiscoveryContract.ViewModel
import app.k9mail.feature.account.setup.ui.preview.PreviewAccountSetupStateRepository

@Composable
internal fun AccountAutoDiscoveryScreen(
    onNext: (state: State, isAutomaticConfig: Boolean) -> Unit,
    onNext: (isAutomaticConfig: Boolean) -> Unit,
    onBack: () -> Unit,
    viewModel: ViewModel,
    modifier: Modifier = Modifier,
@@ -29,7 +29,7 @@ internal fun AccountAutoDiscoveryScreen(
    val (state, dispatch) = viewModel.observe { effect ->
        when (effect) {
            Effect.NavigateBack -> onBack()
            is Effect.NavigateNext -> onNext(viewModel.state.value, effect.isAutomaticConfig)
            is Effect.NavigateNext -> onNext(effect.isAutomaticConfig)
        }
    }

@@ -67,11 +67,12 @@ internal fun AccountAutoDiscoveryScreen(
internal fun AccountAutoDiscoveryScreenK9Preview() {
    K9Theme {
        AccountAutoDiscoveryScreen(
            onNext = { _, _ -> },
            onNext = {},
            onBack = {},
            viewModel = AccountAutoDiscoveryViewModel(
                validator = AccountAutoDiscoveryValidator(),
                getAutoDiscovery = { AutoDiscoveryResult.NoUsableSettingsFound },
                accountSetupStateRepository = PreviewAccountSetupStateRepository(),
                oAuthViewModel = PreviewAccountOAuthViewModel(),
            ),
        )
@@ -83,11 +84,12 @@ internal fun AccountAutoDiscoveryScreenK9Preview() {
internal fun AccountAutoDiscoveryScreenThunderbirdPreview() {
    ThunderbirdTheme {
        AccountAutoDiscoveryScreen(
            onNext = { _, _ -> },
            onNext = { },
            onBack = {},
            viewModel = AccountAutoDiscoveryViewModel(
                validator = AccountAutoDiscoveryValidator(),
                getAutoDiscovery = { AutoDiscoveryResult.NoUsableSettingsFound },
                accountSetupStateRepository = PreviewAccountSetupStateRepository(),
                oAuthViewModel = PreviewAccountOAuthViewModel(),
            ),
        )
Loading