From b8418f97dc674adc68a6ef805a61b43bb38e1cac Mon Sep 17 00:00:00 2001 From: Adam Brown Date: Thu, 12 May 2022 10:41:10 +0100 Subject: [PATCH] extracting server selection branches to their own functions --- .../onboarding/OnboardingViewModel.kt | 78 ++++++++++--------- 1 file changed, 43 insertions(+), 35 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt index a7de3c157a..7970977b95 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt @@ -649,42 +649,11 @@ class OnboardingViewModel @AssistedInject constructor( } when (trigger) { - is OnboardingAction.HomeServerChange.EditHomeServer -> { - when (awaitState().onboardingFlow) { - OnboardingFlow.SignUp -> internalRegisterAction(RegisterAction.StartRegistration) { - updateServerSelection(config, serverTypeOverride, authResult) - _viewEvents.post(OnboardingViewEvents.OnHomeserverEdited) - } - OnboardingFlow.SignIn -> { - updateServerSelection(config, serverTypeOverride, authResult) - _viewEvents.post(OnboardingViewEvents.OnHomeserverEdited) - } - else -> throw IllegalArgumentException("developer error") - } - } is OnboardingAction.HomeServerChange.SelectHomeServer -> { - updateServerSelection(config, serverTypeOverride, authResult) - if (authResult.selectedHomeserver.preferredLoginMode.supportsSignModeScreen()) { - when (awaitState().onboardingFlow) { - OnboardingFlow.SignIn -> { - updateSignMode(SignMode.SignIn) - when (vectorFeatures.isOnboardingCombinedLoginEnabled()) { - true -> _viewEvents.post(OnboardingViewEvents.OpenCombinedLogin) - false -> _viewEvents.post(OnboardingViewEvents.OnSignModeSelected(SignMode.SignIn)) - } - } - OnboardingFlow.SignUp -> { - updateSignMode(SignMode.SignUp) - internalRegisterAction(RegisterAction.StartRegistration, ::emitFlowResultViewEvent) - } - OnboardingFlow.SignInSignUp, - null -> { - _viewEvents.post(OnboardingViewEvents.OnLoginFlowRetrieved) - } - } - } else { - _viewEvents.post(OnboardingViewEvents.OnLoginFlowRetrieved) - } + onHomeServerSelected(config, serverTypeOverride, authResult) + } + is OnboardingAction.HomeServerChange.EditHomeServer -> { + onHomeServerEdited(config, serverTypeOverride, authResult) } else -> { updateServerSelection(config, serverTypeOverride, authResult) @@ -693,6 +662,45 @@ class OnboardingViewModel @AssistedInject constructor( } } + private suspend fun onHomeServerSelected(config: HomeServerConnectionConfig, serverTypeOverride: ServerType?, authResult: StartAuthenticationResult) { + updateServerSelection(config, serverTypeOverride, authResult) + if (authResult.selectedHomeserver.preferredLoginMode.supportsSignModeScreen()) { + when (awaitState().onboardingFlow) { + OnboardingFlow.SignIn -> { + updateSignMode(SignMode.SignIn) + when (vectorFeatures.isOnboardingCombinedLoginEnabled()) { + true -> _viewEvents.post(OnboardingViewEvents.OpenCombinedLogin) + false -> _viewEvents.post(OnboardingViewEvents.OnSignModeSelected(SignMode.SignIn)) + } + } + OnboardingFlow.SignUp -> { + updateSignMode(SignMode.SignUp) + internalRegisterAction(RegisterAction.StartRegistration, ::emitFlowResultViewEvent) + } + OnboardingFlow.SignInSignUp, + null -> { + _viewEvents.post(OnboardingViewEvents.OnLoginFlowRetrieved) + } + } + } else { + _viewEvents.post(OnboardingViewEvents.OnLoginFlowRetrieved) + } + } + + private suspend fun onHomeServerEdited(config: HomeServerConnectionConfig, serverTypeOverride: ServerType?, authResult: StartAuthenticationResult) { + when (awaitState().onboardingFlow) { + OnboardingFlow.SignUp -> internalRegisterAction(RegisterAction.StartRegistration) { + updateServerSelection(config, serverTypeOverride, authResult) + _viewEvents.post(OnboardingViewEvents.OnHomeserverEdited) + } + OnboardingFlow.SignIn -> { + updateServerSelection(config, serverTypeOverride, authResult) + _viewEvents.post(OnboardingViewEvents.OnHomeserverEdited) + } + else -> throw IllegalArgumentException("developer error") + } + } + private fun updateServerSelection(config: HomeServerConnectionConfig, serverTypeOverride: ServerType?, authResult: StartAuthenticationResult) { setState { copy(