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

Unverified Commit 559e6876 authored by Wolf-Martell Montwé's avatar Wolf-Martell Montwé
Browse files

Change Options to use AccountSetupState

parent 21b500c8
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -90,8 +90,6 @@ val featureAccountSetupModule: Module = module {
    viewModel {
        AccountSetupViewModel(
            createAccount = get(),
            optionsViewModel = get(),
            authStateStorage = get(),
            accountSetupStateRepository = get(),
        )
    }
@@ -128,9 +126,10 @@ val featureAccountSetupModule: Module = module {
            isIncomingValidation = false,
        )
    }
    factory<AccountOptionsContract.ViewModel> {
    viewModel {
        AccountOptionsViewModel(
            validator = get(),
            accountSetupStateRepository = get(),
        )
    }
}
+1 −4
Original line number Diff line number Diff line
@@ -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 {

@@ -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,
+4 −12
Original line number Diff line number Diff line
@@ -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
@@ -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 {
@@ -44,8 +40,6 @@ class AccountSetupViewModel(
        }

        accountSetupStateRepository.save(autoDiscoveryState.toAccountSetupState())
        //TODO use account setup state?
        authStateStorage.updateAuthorizationState(autoDiscoveryState.authorizationState?.state)

        onNext()
    }
@@ -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 {
@@ -129,8 +123,6 @@ class AccountSetupViewModel(
    }

    private fun onFinish() {
        val optionsState = optionsViewModel.state.value

        val accountSetupState = accountSetupStateRepository.getState()

        viewModelScope.launch {
@@ -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)
+3 −3
Original line number Diff line number Diff line
@@ -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(),
@@ -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
    }
+8 −0
Original line number Diff line number Diff line
@@ -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
@@ -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(
@@ -30,6 +32,10 @@ internal fun AccountOptionsScreen(
        }
    }

    LaunchedEffect(key1 = Unit) {
        dispatch(Event.LoadAccountSetupState)
    }

    BackHandler {
        dispatch(Event.OnBackClicked)
    }
@@ -67,6 +73,7 @@ internal fun AccountOptionsScreenK9Preview() {
            onBack = {},
            viewModel = AccountOptionsViewModel(
                validator = AccountOptionsValidator(),
                accountSetupStateRepository = PreviewAccountSetupStateRepository(),
            ),
        )
    }
@@ -81,6 +88,7 @@ internal fun AccountOptionsScreenThunderbirdPreview() {
            onBack = {},
            viewModel = AccountOptionsViewModel(
                validator = AccountOptionsValidator(),
                accountSetupStateRepository = PreviewAccountSetupStateRepository(),
            ),
        )
    }
Loading