only setting selected homeserver state after a successful start registration when editing

This commit is contained in:
Adam Brown 2022-04-14 10:03:45 +01:00
parent 86b87e12d7
commit 197df34097

View file

@ -628,24 +628,33 @@ class OnboardingViewModel @AssistedInject constructor(
_viewEvents.post(OnboardingViewEvents.OutdatedHomeserver) _viewEvents.post(OnboardingViewEvents.OutdatedHomeserver)
} }
val state = awaitState()
when (lastAction) {
is OnboardingAction.HomeServerChange.EditHomeServer -> {
when (state.onboardingFlow) {
OnboardingFlow.SignUp -> internalRegisterAction(RegisterAction.StartRegistration) { _ ->
setState { setState {
copy( copy(
serverType = alignServerTypeAfterSubmission(config, serverTypeOverride), serverType = alignServerTypeAfterSubmission(config, serverTypeOverride),
selectedHomeserver = authResult.selectedHomeserver, selectedHomeserver = authResult.selectedHomeserver,
) )
} }
val state = awaitState()
when (lastAction) {
is OnboardingAction.HomeServerChange.EditHomeServer -> {
when (state.onboardingFlow) {
OnboardingFlow.SignUp -> handleRegisterAction(RegisterAction.StartRegistration) { _ ->
_viewEvents.post(OnboardingViewEvents.OnHomeserverEdited) _viewEvents.post(OnboardingViewEvents.OnHomeserverEdited)
} }
else -> throw IllegalArgumentException("developer error") else -> throw IllegalArgumentException("developer error")
} }
} }
is OnboardingAction.HomeServerChange.SelectHomeServer -> { is OnboardingAction.HomeServerChange.SelectHomeServer -> {
if (state.selectedHomeserver.preferredLoginMode.supportsSignModeScreen()) { setState {
copy(
serverType = alignServerTypeAfterSubmission(config, serverTypeOverride),
selectedHomeserver = authResult.selectedHomeserver,
)
}
if (authResult.selectedHomeserver.preferredLoginMode.supportsSignModeScreen()) {
when (state.onboardingFlow) { when (state.onboardingFlow) {
OnboardingFlow.SignIn -> internalRegisterAction(RegisterAction.StartRegistration, ::emitFlowResultViewEvent) OnboardingFlow.SignIn -> internalRegisterAction(RegisterAction.StartRegistration, ::emitFlowResultViewEvent)
OnboardingFlow.SignUp -> internalRegisterAction(RegisterAction.StartRegistration, ::emitFlowResultViewEvent) OnboardingFlow.SignUp -> internalRegisterAction(RegisterAction.StartRegistration, ::emitFlowResultViewEvent)