Skip to content

Commit 5b01290

Browse files
committed
extracting registration flow handling to its own function
- flattening nested ifs - formatting
1 parent 98dc4a5 commit 5b01290

File tree

1 file changed

+58
-41
lines changed

1 file changed

+58
-41
lines changed

vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthVariant.kt

Lines changed: 58 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -131,24 +131,7 @@ class FtueAuthVariant(
131131
private fun handleOnboardingViewEvents(viewEvents: OnboardingViewEvents) {
132132
when (viewEvents) {
133133
is OnboardingViewEvents.RegistrationFlowResult -> {
134-
if (registrationShouldFallback(viewEvents)) {
135-
// Display a popup to propose use web fallback
136-
onRegistrationStageNotSupported()
137-
} else {
138-
if (viewEvents.isRegistrationStarted) {
139-
// Go on with registration flow
140-
handleRegistrationNavigation(viewEvents.flowResult)
141-
} else {
142-
if (vectorFeatures.isOnboardingCombinedRegisterEnabled()) {
143-
openCombinedRegister()
144-
} else {
145-
// First ask for login and password
146-
// I add a tag to indicate that this fragment is a registration stage.
147-
// This way it will be automatically popped in when starting the next registration stage
148-
openAuthLoginFragmentWithTag(FRAGMENT_REGISTRATION_STAGE_TAG)
149-
}
150-
}
151-
}
134+
onRegistrationFlow(viewEvents)
152135
}
153136
is OnboardingViewEvents.OutdatedHomeserver -> {
154137
MaterialAlertDialogBuilder(activity)
@@ -176,25 +159,33 @@ class FtueAuthVariant(
176159
is OnboardingViewEvents.OnServerSelectionDone -> onServerSelectionDone(viewEvents)
177160
is OnboardingViewEvents.OnSignModeSelected -> onSignModeSelected(viewEvents)
178161
is OnboardingViewEvents.OnLoginFlowRetrieved ->
179-
activity.addFragmentToBackstack(views.loginFragmentContainer,
162+
activity.addFragmentToBackstack(
163+
views.loginFragmentContainer,
180164
FtueAuthSignUpSignInSelectionFragment::class.java,
181-
option = commonOption)
165+
option = commonOption
166+
)
182167
is OnboardingViewEvents.OnWebLoginError -> onWebLoginError(viewEvents)
183168
is OnboardingViewEvents.OnForgetPasswordClicked ->
184-
activity.addFragmentToBackstack(views.loginFragmentContainer,
169+
activity.addFragmentToBackstack(
170+
views.loginFragmentContainer,
185171
FtueAuthResetPasswordFragment::class.java,
186-
option = commonOption)
172+
option = commonOption
173+
)
187174
is OnboardingViewEvents.OnResetPasswordSendThreePidDone -> {
188175
supportFragmentManager.popBackStack(FRAGMENT_LOGIN_TAG, POP_BACK_STACK_EXCLUSIVE)
189-
activity.addFragmentToBackstack(views.loginFragmentContainer,
176+
activity.addFragmentToBackstack(
177+
views.loginFragmentContainer,
190178
FtueAuthResetPasswordMailConfirmationFragment::class.java,
191-
option = commonOption)
179+
option = commonOption
180+
)
192181
}
193182
is OnboardingViewEvents.OnResetPasswordMailConfirmationSuccess -> {
194183
supportFragmentManager.popBackStack(FRAGMENT_LOGIN_TAG, POP_BACK_STACK_EXCLUSIVE)
195-
activity.addFragmentToBackstack(views.loginFragmentContainer,
184+
activity.addFragmentToBackstack(
185+
views.loginFragmentContainer,
196186
FtueAuthResetPasswordSuccessFragment::class.java,
197-
option = commonOption)
187+
option = commonOption
188+
)
198189
}
199190
is OnboardingViewEvents.OnResetPasswordMailConfirmationSuccessDone -> {
200191
// Go back to the login fragment
@@ -221,11 +212,13 @@ class FtueAuthVariant(
221212
// This is handled by the Fragments
222213
Unit
223214
OnboardingViewEvents.OpenUseCaseSelection -> {
224-
activity.addFragmentToBackstack(views.loginFragmentContainer,
215+
activity.addFragmentToBackstack(
216+
views.loginFragmentContainer,
225217
FtueAuthUseCaseFragment::class.java,
226-
option = commonOption)
218+
option = commonOption
219+
)
227220
}
228-
OnboardingViewEvents.OpenCombinedRegister -> openCombinedRegister()
221+
OnboardingViewEvents.OpenCombinedRegister -> openStartCombinedRegister()
229222
is OnboardingViewEvents.OnAccountCreated -> onAccountCreated()
230223
OnboardingViewEvents.OnAccountSignedIn -> onAccountSignedIn()
231224
OnboardingViewEvents.OnChooseDisplayName -> onChooseDisplayName()
@@ -244,7 +237,21 @@ class FtueAuthVariant(
244237
}
245238
}
246239

247-
private fun openCombinedRegister() {
240+
private fun onRegistrationFlow(viewEvents: OnboardingViewEvents.RegistrationFlowResult) {
241+
when {
242+
registrationShouldFallback(viewEvents) -> displayFallbackWebDialog()
243+
viewEvents.isRegistrationStarted -> handleRegistrationNavigation(viewEvents.flowResult)
244+
vectorFeatures.isOnboardingCombinedRegisterEnabled() -> openStartCombinedRegister()
245+
else -> {
246+
// First ask for login and password
247+
// I add a tag to indicate that this fragment is a registration stage.
248+
// This way it will be automatically popped in when starting the next registration stage
249+
openAuthLoginFragmentWithTag(FRAGMENT_REGISTRATION_STAGE_TAG)
250+
}
251+
}
252+
}
253+
254+
private fun openStartCombinedRegister() {
248255
addRegistrationStageFragmentToBackstack(FtueAuthCombinedRegisterFragment::class.java)
249256
}
250257

@@ -254,14 +261,16 @@ class FtueAuthVariant(
254261
private fun OnboardingViewEvents.RegistrationFlowResult.containsUnsupportedRegistrationFlow() =
255262
flowResult.missingStages.any { !it.isSupported() }
256263

257-
private fun onRegistrationStageNotSupported() {
264+
private fun displayFallbackWebDialog() {
258265
MaterialAlertDialogBuilder(activity)
259266
.setTitle(R.string.app_name)
260267
.setMessage(activity.getString(R.string.login_registration_not_supported))
261268
.setPositiveButton(R.string.yes) { _, _ ->
262-
activity.addFragmentToBackstack(views.loginFragmentContainer,
269+
activity.addFragmentToBackstack(
270+
views.loginFragmentContainer,
263271
FtueAuthWebFragment::class.java,
264-
option = commonOption)
272+
option = commonOption
273+
)
265274
}
266275
.setNegativeButton(R.string.no, null)
267276
.show()
@@ -283,9 +292,11 @@ class FtueAuthVariant(
283292
when (OnboardingViewEvents.serverType) {
284293
ServerType.MatrixOrg -> Unit // In this case, we wait for the login flow
285294
ServerType.EMS,
286-
ServerType.Other -> activity.addFragmentToBackstack(views.loginFragmentContainer,
295+
ServerType.Other -> activity.addFragmentToBackstack(
296+
views.loginFragmentContainer,
287297
FtueAuthServerUrlFormFragment::class.java,
288-
option = commonOption)
298+
option = commonOption
299+
)
289300
ServerType.Unknown -> Unit /* Should not happen */
290301
}
291302
}
@@ -317,10 +328,12 @@ class FtueAuthVariant(
317328
}
318329

319330
private fun openAuthLoginFragmentWithTag(tag: String) {
320-
activity.addFragmentToBackstack(views.loginFragmentContainer,
331+
activity.addFragmentToBackstack(
332+
views.loginFragmentContainer,
321333
FtueAuthLoginFragment::class.java,
322334
tag = tag,
323-
option = commonOption)
335+
option = commonOption
336+
)
324337
}
325338

326339
private fun onLoginModeNotSupported(supportedTypes: List<String>) {
@@ -341,9 +354,11 @@ class FtueAuthVariant(
341354
}
342355

343356
private fun openAuthWebFragment() {
344-
activity.addFragmentToBackstack(views.loginFragmentContainer,
357+
activity.addFragmentToBackstack(
358+
views.loginFragmentContainer,
345359
FtueAuthWebFragment::class.java,
346-
option = commonOption)
360+
option = commonOption
361+
)
347362
}
348363

349364
/**
@@ -437,14 +452,16 @@ class FtueAuthVariant(
437452
}
438453

439454
private fun onChooseDisplayName() {
440-
activity.addFragmentToBackstack(views.loginFragmentContainer,
455+
activity.addFragmentToBackstack(
456+
views.loginFragmentContainer,
441457
FtueAuthChooseDisplayNameFragment::class.java,
442458
option = commonOption
443459
)
444460
}
445461

446462
private fun onChooseProfilePicture() {
447-
activity.addFragmentToBackstack(views.loginFragmentContainer,
463+
activity.addFragmentToBackstack(
464+
views.loginFragmentContainer,
448465
FtueAuthChooseProfilePictureFragment::class.java,
449466
option = commonOption
450467
)

0 commit comments

Comments
 (0)