Skip to content

Commit a59b8bf

Browse files
authored
Merge pull request #6065 from vector-im/feature/adm/matrix-org-ordering
FTUE - Only override sign up steps for `matrix.org`
2 parents 9a38d59 + 5f2cb67 commit a59b8bf

File tree

5 files changed

+19
-13
lines changed

5 files changed

+19
-13
lines changed

changelog.d/5783.wip

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
FTUE - Overrides sign up flow ordering for matrix.org only

vector/src/main/java/im/vector/app/features/onboarding/OnboardingViewModel.kt

+12-1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ import im.vector.app.features.login.ReAuthHelper
4343
import im.vector.app.features.login.ServerType
4444
import im.vector.app.features.login.SignMode
4545
import im.vector.app.features.onboarding.StartAuthenticationFlowUseCase.StartAuthenticationResult
46+
import im.vector.app.features.onboarding.ftueauth.MatrixOrgRegistrationStagesComparator
4647
import kotlinx.coroutines.Job
4748
import kotlinx.coroutines.flow.firstOrNull
4849
import kotlinx.coroutines.launch
@@ -293,9 +294,19 @@ class OnboardingViewModel @AssistedInject constructor(
293294
}
294295

295296
private fun emitFlowResultViewEvent(flowResult: FlowResult) {
296-
_viewEvents.post(OnboardingViewEvents.RegistrationFlowResult(flowResult, isRegistrationStarted))
297+
withState { state ->
298+
val orderedResult = when {
299+
state.hasSelectedMatrixOrg() && vectorFeatures.isOnboardingCombinedRegisterEnabled() -> flowResult.copy(
300+
missingStages = flowResult.missingStages.sortedWith(MatrixOrgRegistrationStagesComparator())
301+
)
302+
else -> flowResult
303+
}
304+
_viewEvents.post(OnboardingViewEvents.RegistrationFlowResult(orderedResult, isRegistrationStarted))
305+
}
297306
}
298307

308+
private fun OnboardingViewState.hasSelectedMatrixOrg() = selectedHomeserver.userFacingUrl == matrixOrgUrl
309+
299310
private fun handleRegisterWith(action: OnboardingAction.Register) {
300311
reAuthHelper.data = action.password
301312
handleRegisterAction(

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

+1-7
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ import im.vector.app.features.onboarding.OnboardingViewState
5454
import im.vector.app.features.onboarding.ftueauth.terms.FtueAuthLegacyStyleTermsFragment
5555
import im.vector.app.features.onboarding.ftueauth.terms.FtueAuthTermsFragment
5656
import im.vector.app.features.onboarding.ftueauth.terms.FtueAuthTermsLegacyStyleFragmentArgument
57-
import org.matrix.android.sdk.api.auth.registration.FlowResult
5857
import org.matrix.android.sdk.api.auth.registration.Stage
5958
import org.matrix.android.sdk.api.auth.toLocalizedLoginTerms
6059
import org.matrix.android.sdk.api.extensions.tryOrNull
@@ -235,17 +234,12 @@ class FtueAuthVariant(
235234
private fun onRegistrationFlow(viewEvents: OnboardingViewEvents.RegistrationFlowResult) {
236235
when {
237236
registrationShouldFallback(viewEvents) -> displayFallbackWebDialog()
238-
viewEvents.isRegistrationStarted -> handleRegistrationNavigation(viewEvents.flowResult.orderedStages())
237+
viewEvents.isRegistrationStarted -> handleRegistrationNavigation(viewEvents.flowResult.missingStages)
239238
vectorFeatures.isOnboardingCombinedRegisterEnabled() -> openStartCombinedRegister()
240239
else -> openAuthLoginFragmentWithTag(FRAGMENT_REGISTRATION_STAGE_TAG)
241240
}
242241
}
243242

244-
private fun FlowResult.orderedStages() = when {
245-
vectorFeatures.isOnboardingCombinedRegisterEnabled() -> missingStages.sortedWith(FtueMissingRegistrationStagesComparator())
246-
else -> missingStages
247-
}
248-
249243
private fun openStartCombinedRegister() {
250244
addRegistrationStageFragmentToBackstack(FtueAuthCombinedRegisterFragment::class.java)
251245
}
+3-3
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ package im.vector.app.features.onboarding.ftueauth
1818

1919
import org.matrix.android.sdk.api.auth.registration.Stage
2020

21-
class FtueMissingRegistrationStagesComparator : Comparator<Stage> {
21+
class MatrixOrgRegistrationStagesComparator : Comparator<Stage> {
2222

23-
override fun compare(a: Stage?, b: Stage?): Int {
24-
return (a?.toPriority() ?: 0) - (b?.toPriority() ?: 0)
23+
override fun compare(a: Stage, b: Stage): Int {
24+
return a.toPriority().compareTo(b.toPriority())
2525
}
2626

2727
private fun Stage.toPriority() = when (this) {
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import im.vector.app.test.fixtures.anOtherStage
2525
import org.amshove.kluent.shouldBeEqualTo
2626
import org.junit.Test
2727

28-
class FtueMissingRegistrationStagesComparatorTest {
28+
class MatrixOrgRegistrationStagesComparatorTest {
2929

3030
@Test
3131
fun `when ordering stages, then prioritizes email`() {
@@ -38,7 +38,7 @@ class FtueMissingRegistrationStagesComparatorTest {
3838
aTermsStage()
3939
)
4040

41-
val result = input.sortedWith(FtueMissingRegistrationStagesComparator())
41+
val result = input.sortedWith(MatrixOrgRegistrationStagesComparator())
4242

4343
result shouldBeEqualTo listOf(
4444
anEmailStage(),

0 commit comments

Comments
 (0)