mirror of
https://github.com/element-hq/element-android
synced 2024-11-28 13:38:49 +03:00
extracting registration flow handling to its own function
- flattening nested ifs - formatting
This commit is contained in:
parent
98dc4a57fc
commit
5b01290057
1 changed files with 58 additions and 41 deletions
|
@ -131,24 +131,7 @@ class FtueAuthVariant(
|
|||
private fun handleOnboardingViewEvents(viewEvents: OnboardingViewEvents) {
|
||||
when (viewEvents) {
|
||||
is OnboardingViewEvents.RegistrationFlowResult -> {
|
||||
if (registrationShouldFallback(viewEvents)) {
|
||||
// Display a popup to propose use web fallback
|
||||
onRegistrationStageNotSupported()
|
||||
} else {
|
||||
if (viewEvents.isRegistrationStarted) {
|
||||
// Go on with registration flow
|
||||
handleRegistrationNavigation(viewEvents.flowResult)
|
||||
} else {
|
||||
if (vectorFeatures.isOnboardingCombinedRegisterEnabled()) {
|
||||
openCombinedRegister()
|
||||
} else {
|
||||
// First ask for login and password
|
||||
// I add a tag to indicate that this fragment is a registration stage.
|
||||
// This way it will be automatically popped in when starting the next registration stage
|
||||
openAuthLoginFragmentWithTag(FRAGMENT_REGISTRATION_STAGE_TAG)
|
||||
}
|
||||
}
|
||||
}
|
||||
onRegistrationFlow(viewEvents)
|
||||
}
|
||||
is OnboardingViewEvents.OutdatedHomeserver -> {
|
||||
MaterialAlertDialogBuilder(activity)
|
||||
|
@ -176,25 +159,33 @@ class FtueAuthVariant(
|
|||
is OnboardingViewEvents.OnServerSelectionDone -> onServerSelectionDone(viewEvents)
|
||||
is OnboardingViewEvents.OnSignModeSelected -> onSignModeSelected(viewEvents)
|
||||
is OnboardingViewEvents.OnLoginFlowRetrieved ->
|
||||
activity.addFragmentToBackstack(views.loginFragmentContainer,
|
||||
activity.addFragmentToBackstack(
|
||||
views.loginFragmentContainer,
|
||||
FtueAuthSignUpSignInSelectionFragment::class.java,
|
||||
option = commonOption)
|
||||
option = commonOption
|
||||
)
|
||||
is OnboardingViewEvents.OnWebLoginError -> onWebLoginError(viewEvents)
|
||||
is OnboardingViewEvents.OnForgetPasswordClicked ->
|
||||
activity.addFragmentToBackstack(views.loginFragmentContainer,
|
||||
activity.addFragmentToBackstack(
|
||||
views.loginFragmentContainer,
|
||||
FtueAuthResetPasswordFragment::class.java,
|
||||
option = commonOption)
|
||||
option = commonOption
|
||||
)
|
||||
is OnboardingViewEvents.OnResetPasswordSendThreePidDone -> {
|
||||
supportFragmentManager.popBackStack(FRAGMENT_LOGIN_TAG, POP_BACK_STACK_EXCLUSIVE)
|
||||
activity.addFragmentToBackstack(views.loginFragmentContainer,
|
||||
activity.addFragmentToBackstack(
|
||||
views.loginFragmentContainer,
|
||||
FtueAuthResetPasswordMailConfirmationFragment::class.java,
|
||||
option = commonOption)
|
||||
option = commonOption
|
||||
)
|
||||
}
|
||||
is OnboardingViewEvents.OnResetPasswordMailConfirmationSuccess -> {
|
||||
supportFragmentManager.popBackStack(FRAGMENT_LOGIN_TAG, POP_BACK_STACK_EXCLUSIVE)
|
||||
activity.addFragmentToBackstack(views.loginFragmentContainer,
|
||||
activity.addFragmentToBackstack(
|
||||
views.loginFragmentContainer,
|
||||
FtueAuthResetPasswordSuccessFragment::class.java,
|
||||
option = commonOption)
|
||||
option = commonOption
|
||||
)
|
||||
}
|
||||
is OnboardingViewEvents.OnResetPasswordMailConfirmationSuccessDone -> {
|
||||
// Go back to the login fragment
|
||||
|
@ -221,11 +212,13 @@ class FtueAuthVariant(
|
|||
// This is handled by the Fragments
|
||||
Unit
|
||||
OnboardingViewEvents.OpenUseCaseSelection -> {
|
||||
activity.addFragmentToBackstack(views.loginFragmentContainer,
|
||||
activity.addFragmentToBackstack(
|
||||
views.loginFragmentContainer,
|
||||
FtueAuthUseCaseFragment::class.java,
|
||||
option = commonOption)
|
||||
option = commonOption
|
||||
)
|
||||
}
|
||||
OnboardingViewEvents.OpenCombinedRegister -> openCombinedRegister()
|
||||
OnboardingViewEvents.OpenCombinedRegister -> openStartCombinedRegister()
|
||||
is OnboardingViewEvents.OnAccountCreated -> onAccountCreated()
|
||||
OnboardingViewEvents.OnAccountSignedIn -> onAccountSignedIn()
|
||||
OnboardingViewEvents.OnChooseDisplayName -> onChooseDisplayName()
|
||||
|
@ -244,7 +237,21 @@ class FtueAuthVariant(
|
|||
}
|
||||
}
|
||||
|
||||
private fun openCombinedRegister() {
|
||||
private fun onRegistrationFlow(viewEvents: OnboardingViewEvents.RegistrationFlowResult) {
|
||||
when {
|
||||
registrationShouldFallback(viewEvents) -> displayFallbackWebDialog()
|
||||
viewEvents.isRegistrationStarted -> handleRegistrationNavigation(viewEvents.flowResult)
|
||||
vectorFeatures.isOnboardingCombinedRegisterEnabled() -> openStartCombinedRegister()
|
||||
else -> {
|
||||
// First ask for login and password
|
||||
// I add a tag to indicate that this fragment is a registration stage.
|
||||
// This way it will be automatically popped in when starting the next registration stage
|
||||
openAuthLoginFragmentWithTag(FRAGMENT_REGISTRATION_STAGE_TAG)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun openStartCombinedRegister() {
|
||||
addRegistrationStageFragmentToBackstack(FtueAuthCombinedRegisterFragment::class.java)
|
||||
}
|
||||
|
||||
|
@ -254,14 +261,16 @@ class FtueAuthVariant(
|
|||
private fun OnboardingViewEvents.RegistrationFlowResult.containsUnsupportedRegistrationFlow() =
|
||||
flowResult.missingStages.any { !it.isSupported() }
|
||||
|
||||
private fun onRegistrationStageNotSupported() {
|
||||
private fun displayFallbackWebDialog() {
|
||||
MaterialAlertDialogBuilder(activity)
|
||||
.setTitle(R.string.app_name)
|
||||
.setMessage(activity.getString(R.string.login_registration_not_supported))
|
||||
.setPositiveButton(R.string.yes) { _, _ ->
|
||||
activity.addFragmentToBackstack(views.loginFragmentContainer,
|
||||
activity.addFragmentToBackstack(
|
||||
views.loginFragmentContainer,
|
||||
FtueAuthWebFragment::class.java,
|
||||
option = commonOption)
|
||||
option = commonOption
|
||||
)
|
||||
}
|
||||
.setNegativeButton(R.string.no, null)
|
||||
.show()
|
||||
|
@ -283,9 +292,11 @@ class FtueAuthVariant(
|
|||
when (OnboardingViewEvents.serverType) {
|
||||
ServerType.MatrixOrg -> Unit // In this case, we wait for the login flow
|
||||
ServerType.EMS,
|
||||
ServerType.Other -> activity.addFragmentToBackstack(views.loginFragmentContainer,
|
||||
ServerType.Other -> activity.addFragmentToBackstack(
|
||||
views.loginFragmentContainer,
|
||||
FtueAuthServerUrlFormFragment::class.java,
|
||||
option = commonOption)
|
||||
option = commonOption
|
||||
)
|
||||
ServerType.Unknown -> Unit /* Should not happen */
|
||||
}
|
||||
}
|
||||
|
@ -317,10 +328,12 @@ class FtueAuthVariant(
|
|||
}
|
||||
|
||||
private fun openAuthLoginFragmentWithTag(tag: String) {
|
||||
activity.addFragmentToBackstack(views.loginFragmentContainer,
|
||||
activity.addFragmentToBackstack(
|
||||
views.loginFragmentContainer,
|
||||
FtueAuthLoginFragment::class.java,
|
||||
tag = tag,
|
||||
option = commonOption)
|
||||
option = commonOption
|
||||
)
|
||||
}
|
||||
|
||||
private fun onLoginModeNotSupported(supportedTypes: List<String>) {
|
||||
|
@ -341,9 +354,11 @@ class FtueAuthVariant(
|
|||
}
|
||||
|
||||
private fun openAuthWebFragment() {
|
||||
activity.addFragmentToBackstack(views.loginFragmentContainer,
|
||||
activity.addFragmentToBackstack(
|
||||
views.loginFragmentContainer,
|
||||
FtueAuthWebFragment::class.java,
|
||||
option = commonOption)
|
||||
option = commonOption
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -437,14 +452,16 @@ class FtueAuthVariant(
|
|||
}
|
||||
|
||||
private fun onChooseDisplayName() {
|
||||
activity.addFragmentToBackstack(views.loginFragmentContainer,
|
||||
activity.addFragmentToBackstack(
|
||||
views.loginFragmentContainer,
|
||||
FtueAuthChooseDisplayNameFragment::class.java,
|
||||
option = commonOption
|
||||
)
|
||||
}
|
||||
|
||||
private fun onChooseProfilePicture() {
|
||||
activity.addFragmentToBackstack(views.loginFragmentContainer,
|
||||
activity.addFragmentToBackstack(
|
||||
views.loginFragmentContainer,
|
||||
FtueAuthChooseProfilePictureFragment::class.java,
|
||||
option = commonOption
|
||||
)
|
||||
|
|
Loading…
Reference in a new issue