mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2025-02-02 12:16:55 +01:00
adding dedicated server selection state to onboarding state
- replaces previous separately url strings with state usage - makes use of the state for updating the sign up and server selection fields
This commit is contained in:
parent
c3cf22158b
commit
7f90dda96f
@ -291,21 +291,20 @@ class OnboardingViewModel @AssistedInject constructor(
|
||||
currentJob = null
|
||||
|
||||
when (action) {
|
||||
OnboardingAction.ResetHomeServerType -> {
|
||||
OnboardingAction.ResetHomeServerType -> {
|
||||
setState {
|
||||
copy(
|
||||
serverType = ServerType.Unknown
|
||||
)
|
||||
}
|
||||
}
|
||||
OnboardingAction.ResetHomeServerUrl -> {
|
||||
OnboardingAction.ResetHomeServerUrl -> {
|
||||
viewModelScope.launch {
|
||||
authenticationService.reset()
|
||||
setState {
|
||||
copy(
|
||||
isLoading = false,
|
||||
homeServerUrlFromUser = null,
|
||||
homeServerUrl = null,
|
||||
serverSelectionState = ServerSelectionState(),
|
||||
loginMode = LoginMode.Unknown,
|
||||
serverType = ServerType.Unknown,
|
||||
loginModeSupportedTypes = emptyList()
|
||||
@ -571,7 +570,7 @@ class OnboardingViewModel @AssistedInject constructor(
|
||||
}
|
||||
|
||||
private fun handleWebLoginSuccess(action: OnboardingAction.WebLoginSuccess) = withState { state ->
|
||||
val homeServerConnectionConfigFinal = homeServerConnectionConfigFactory.create(state.homeServerUrl)
|
||||
val homeServerConnectionConfigFinal = homeServerConnectionConfigFactory.create(state.serverSelectionState.hostedUrl)
|
||||
|
||||
if (homeServerConnectionConfigFinal == null) {
|
||||
// Should not happen
|
||||
@ -647,11 +646,19 @@ class OnboardingViewModel @AssistedInject constructor(
|
||||
else -> LoginMode.Unsupported
|
||||
}
|
||||
|
||||
val serverSelection = ServerSelectionState(
|
||||
description = when (data.homeServerUrl) {
|
||||
matrixOrgUrl -> stringProvider.getString(R.string.ftue_auth_create_account_matrix_dot_org_server_description)
|
||||
else -> null
|
||||
},
|
||||
userUrlInput = homeServerConnectionConfig.homeServerUri.toString(),
|
||||
hostedUrl = data.homeServerUrl
|
||||
)
|
||||
|
||||
setState {
|
||||
copy(
|
||||
isLoading = false,
|
||||
homeServerUrlFromUser = homeServerConnectionConfig.homeServerUri.toString(),
|
||||
homeServerUrl = data.homeServerUrl,
|
||||
serverSelectionState = serverSelection,
|
||||
loginMode = loginMode,
|
||||
loginModeSupportedTypes = data.supportedLoginTypes.toList()
|
||||
)
|
||||
|
@ -40,12 +40,6 @@ data class OnboardingViewState(
|
||||
val signMode: SignMode = SignMode.Unknown,
|
||||
@PersistState
|
||||
val resetPasswordEmail: String? = null,
|
||||
@PersistState
|
||||
val homeServerUrlFromUser: String? = null,
|
||||
|
||||
// Can be modified after a Wellknown request
|
||||
@PersistState
|
||||
val homeServerUrl: String? = null,
|
||||
|
||||
// For SSO session recovery
|
||||
@PersistState
|
||||
@ -60,6 +54,9 @@ data class OnboardingViewState(
|
||||
val knownCustomHomeServersUrls: List<String> = emptyList(),
|
||||
val isForceLoginFallbackEnabled: Boolean = false,
|
||||
|
||||
@PersistState
|
||||
val serverSelectionState: ServerSelectionState = ServerSelectionState(),
|
||||
|
||||
@PersistState
|
||||
val personalizationState: PersonalizationState = PersonalizationState()
|
||||
) : MavericksState
|
||||
@ -70,6 +67,13 @@ enum class OnboardingFlow {
|
||||
SignInSignUp
|
||||
}
|
||||
|
||||
@Parcelize
|
||||
data class ServerSelectionState(
|
||||
val description: String? = null,
|
||||
val userUrlInput: String? = null,
|
||||
val hostedUrl: String? = null,
|
||||
) : Parcelable
|
||||
|
||||
@Parcelize
|
||||
data class PersonalizationState(
|
||||
val supportsChangingDisplayName: Boolean = false,
|
||||
|
@ -77,7 +77,7 @@ class FtueAuthCaptchaFragment @Inject constructor(
|
||||
val mime = "text/html"
|
||||
val encoding = "utf-8"
|
||||
|
||||
val homeServerUrl = state.homeServerUrl ?: error("missing url of homeserver")
|
||||
val homeServerUrl = state.serverSelectionState.hostedUrl ?: error("missing url of homeserver")
|
||||
views.loginCaptchaWevView.loadDataWithBaseURL(homeServerUrl, html, mime, encoding, null)
|
||||
views.loginCaptchaWevView.requestLayout()
|
||||
|
||||
|
@ -40,6 +40,7 @@ import im.vector.app.core.extensions.hideKeyboard
|
||||
import im.vector.app.core.extensions.hidePassword
|
||||
import im.vector.app.core.extensions.realignPercentagesToParent
|
||||
import im.vector.app.core.extensions.toMvRxBundle
|
||||
import im.vector.app.core.extensions.toReducedUrl
|
||||
import im.vector.app.databinding.FragmentFtueSignUpCombinedBinding
|
||||
import im.vector.app.features.login.LoginMode
|
||||
import im.vector.app.features.login.SSORedirectRouterActivity
|
||||
@ -174,6 +175,9 @@ class FtueAuthCombinedRegisterFragment @Inject constructor() : AbstractSSOFtueAu
|
||||
setupUi(state)
|
||||
setupAutoFill()
|
||||
|
||||
views.selectedServerName.text = state.serverSelectionState.userUrlInput.toReducedUrl()
|
||||
views.selectedServerDescription.text = state.serverSelectionState.description
|
||||
|
||||
if (state.isLoading) {
|
||||
// Ensure password is hidden
|
||||
views.createAccountPasswordInput.editText().hidePassword()
|
||||
|
@ -20,9 +20,13 @@ import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import im.vector.app.core.extensions.editText
|
||||
import im.vector.app.core.extensions.realignPercentagesToParent
|
||||
import im.vector.app.core.extensions.toReducedUrl
|
||||
import im.vector.app.databinding.FragmentFtueServerSelectionCombinedBinding
|
||||
import im.vector.app.features.onboarding.OnboardingAction
|
||||
import im.vector.app.features.onboarding.OnboardingViewEvents
|
||||
import im.vector.app.features.onboarding.OnboardingViewState
|
||||
import javax.inject.Inject
|
||||
|
||||
class FtueAuthCombinedServerSelectionFragment @Inject constructor() : AbstractSSOFtueAuthFragment<FragmentFtueServerSelectionCombinedBinding>() {
|
||||
@ -33,12 +37,18 @@ class FtueAuthCombinedServerSelectionFragment @Inject constructor() : AbstractSS
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
views.chooseServerRoot.realignPercentagesToParent()
|
||||
|
||||
views.chooseServerToolbar.setNavigationOnClickListener {
|
||||
viewModel.handle(OnboardingAction.PostViewEvent(OnboardingViewEvents.OnBack))
|
||||
}
|
||||
}
|
||||
|
||||
override fun resetViewModel() {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
override fun updateWithState(state: OnboardingViewState) {
|
||||
views.chooseServerInput.editText().setText(state.serverSelectionState.userUrlInput.toReducedUrl())
|
||||
}
|
||||
}
|
||||
|
@ -184,7 +184,7 @@ class FtueAuthLoginFragment @Inject constructor() : AbstractSSOFtueAuthFragment<
|
||||
ServerType.MatrixOrg -> {
|
||||
views.loginServerIcon.isVisible = true
|
||||
views.loginServerIcon.setImageResource(R.drawable.ic_logo_matrix_org)
|
||||
views.loginTitle.text = getString(resId, state.homeServerUrlFromUser.toReducedUrl())
|
||||
views.loginTitle.text = getString(resId, state.serverSelectionState.userUrlInput.toReducedUrl())
|
||||
views.loginNotice.text = getString(R.string.login_server_matrix_org_text)
|
||||
}
|
||||
ServerType.EMS -> {
|
||||
@ -195,7 +195,7 @@ class FtueAuthLoginFragment @Inject constructor() : AbstractSSOFtueAuthFragment<
|
||||
}
|
||||
ServerType.Other -> {
|
||||
views.loginServerIcon.isVisible = false
|
||||
views.loginTitle.text = getString(resId, state.homeServerUrlFromUser.toReducedUrl())
|
||||
views.loginTitle.text = getString(resId, state.serverSelectionState.userUrlInput.toReducedUrl())
|
||||
views.loginNotice.text = getString(R.string.login_server_other_text)
|
||||
}
|
||||
ServerType.Unknown -> Unit /* Should not happen */
|
||||
|
@ -59,7 +59,7 @@ class FtueAuthResetPasswordFragment @Inject constructor() : AbstractFtueAuthFrag
|
||||
}
|
||||
|
||||
private fun setupUi(state: OnboardingViewState) {
|
||||
views.resetPasswordTitle.text = getString(R.string.login_reset_password_on, state.homeServerUrlFromUser.toReducedUrl())
|
||||
views.resetPasswordTitle.text = getString(R.string.login_reset_password_on, state.serverSelectionState.userUrlInput.toReducedUrl())
|
||||
}
|
||||
|
||||
private fun setupSubmitButton() {
|
||||
|
@ -60,19 +60,19 @@ class FtueAuthSignUpSignInSelectionFragment @Inject constructor() : AbstractSSOF
|
||||
ServerType.MatrixOrg -> {
|
||||
views.loginSignupSigninServerIcon.setImageResource(R.drawable.ic_logo_matrix_org)
|
||||
views.loginSignupSigninServerIcon.isVisible = true
|
||||
views.loginSignupSigninTitle.text = getString(R.string.login_connect_to, state.homeServerUrlFromUser.toReducedUrl())
|
||||
views.loginSignupSigninTitle.text = getString(R.string.login_connect_to, state.serverSelectionState.userUrlInput.toReducedUrl())
|
||||
views.loginSignupSigninText.text = getString(R.string.login_server_matrix_org_text)
|
||||
}
|
||||
ServerType.EMS -> {
|
||||
views.loginSignupSigninServerIcon.setImageResource(R.drawable.ic_logo_element_matrix_services)
|
||||
views.loginSignupSigninServerIcon.isVisible = true
|
||||
views.loginSignupSigninTitle.text = getString(R.string.login_connect_to_modular)
|
||||
views.loginSignupSigninText.text = state.homeServerUrlFromUser.toReducedUrl()
|
||||
views.loginSignupSigninText.text = state.serverSelectionState.userUrlInput.toReducedUrl()
|
||||
}
|
||||
ServerType.Other -> {
|
||||
views.loginSignupSigninServerIcon.isVisible = false
|
||||
views.loginSignupSigninTitle.text = getString(R.string.login_server_other_title)
|
||||
views.loginSignupSigninText.text = getString(R.string.login_connect_to, state.homeServerUrlFromUser.toReducedUrl())
|
||||
views.loginSignupSigninText.text = getString(R.string.login_connect_to, state.serverSelectionState.userUrlInput.toReducedUrl())
|
||||
}
|
||||
ServerType.Unknown -> Unit /* Should not happen */
|
||||
}
|
||||
|
@ -116,7 +116,7 @@ class FtueAuthTermsFragment @Inject constructor(
|
||||
}
|
||||
|
||||
override fun updateWithState(state: OnboardingViewState) {
|
||||
policyController.homeServer = state.homeServerUrlFromUser.toReducedUrl()
|
||||
policyController.homeServer = state.serverSelectionState.userUrlInput.toReducedUrl()
|
||||
renderState()
|
||||
}
|
||||
|
||||
|
@ -109,7 +109,6 @@
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="12dp"
|
||||
android:text="@string/ftue_auth_create_account_matrix_dot_org_server_name"
|
||||
android:textColor="?vctr_content_primary"
|
||||
app:layout_constraintBottom_toTopOf="@id/selectedServerDescription"
|
||||
app:layout_constraintEnd_toStartOf="@id/editServerButton"
|
||||
@ -122,7 +121,6 @@
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="12dp"
|
||||
android:text="@string/ftue_auth_create_account_matrix_dot_org_server_description"
|
||||
android:textColor="?vctr_content_tertiary"
|
||||
app:layout_constraintBottom_toTopOf="@id/serverSelectionSpacing"
|
||||
app:layout_constraintEnd_toStartOf="@id/editServerButton"
|
||||
|
@ -17,11 +17,10 @@
|
||||
<string name="ftue_auth_create_account_choose_server_header">Choose your server to store your data</string>
|
||||
<string name="ftue_auth_create_account_sso_section_header">Or</string>
|
||||
<string name="ftue_auth_create_account_matrix_dot_org_server_description">Join millions for free on the largest public server</string>
|
||||
<string name="ftue_auth_create_account_matrix_dot_org_server_name">matrix.org</string>
|
||||
<string name="ftue_auth_create_account_edit_server_selection">Edit</string>
|
||||
|
||||
<string name="ftue_auth_choose_server_title">Choose your server</string>
|
||||
<string name="ftue_auth_choose_server_subtitle">What is the address of your server? Server is like a home for all your data</string>
|
||||
<string name="ftue_auth_choose_server_subtitle">What is the address of your server? Server is like a home for all your data.</string>
|
||||
<string name="ftue_auth_choose_server_entry_hint">Server URL</string>
|
||||
<string name="ftue_auth_choose_server_entry_footer">You can only connect to a server that has already been set up</string>
|
||||
<string name="ftue_auth_choose_server_ems_title">Want to host your own server?</string>
|
||||
|
Loading…
x
Reference in New Issue
Block a user